A small, lightweight system-stats app for the Ubuntu taskbar (system tray). Shows CPU %, RAM used/total, and per-GPU utilisation, VRAM, power draw and temperature — colour-coded as values climb.
CPU 12% 56°C
RAM 19.3/ 64.0 GiB
───────────────────
GPU 0 · Radeon AI PRO R9700
97% 30.5/ 34.2 GiB 66 W 73°C
GPU 1 · AMD Raphael iGPU
0% 0.0/ 0.5 GiB 47 W 57°C
───────────────────
Quit
The tray icon is a tiny level meter — one bar per metric (CPU, RAM, one per GPU) with a dimmed track and a coloured fill from the bottom — that mirrors the same colours, so you can see trouble at a glance without opening the menu.
| Range | Colour |
|---|---|
| < 50% utilisation (or < 75 °C) | green |
| 50–74% utilisation (or 75–89 °C) | yellow |
| ≥ 75% utilisation (or ≥ 90 °C) | red |
All thresholds and colours are configurable — see below.
The tray menu has a Pin to screen toggle that opens the same stats as a small always-on-top, borderless, translucent panel you can leave on your desktop:
- Drag it anywhere; the position is remembered across restarts.
- Scroll wheel over the panel adjusts its opacity (the tray menu's opacity radio buttons stay in sync).
- Right-click the panel to unpin it.
- If resmon-lite quits while pinned, it re-pins at the same spot on next start.
Starting opacity, text size and text colour are configurable — see below.
- Ubuntu 22.04+ with GNOME (Wayland or X11) — uses the Ayatana AppIndicator,
already present on stock Ubuntu (
gir1.2-ayatanaappindicator3-0.1). - Python 3.11+ with PyGObject (
python3-gi, standard on Ubuntu). - AMD GPUs (amdgpu driver). GPU utilisation needs the kernel parameter
amdgpu.gpu_busy_percent=1; if it isn't set, the util column showsn/aand everything else still works. - NVIDIA GPUs need the proprietary driver plus the optional
nvidiaextra (pip install "resmon-lite[nvidia] @ git+https://github.com/The-Deflection-Engine/resmon-lite.git@v0.2.0"), which pulls innvidia-ml-pyfor NVML. Without it, or without the extra installed, NVIDIA GPUs are just skipped — everything else still works.
Only required Python dependency is PyGObject; metrics come straight from
/proc, sysfs and (for NVIDIA) NVML, with no subprocesses spawned per poll.
./resmon-lite # run from this checkout (no install needed)
./resmon-lite --print # print one reading to stdout and exitOr install it as a regular command, e.g. straight from GitHub:
pip install --user git+https://github.com/The-Deflection-Engine/resmon-lite.git@v0.2.0
resmon-litepip install --user puts the command in ~/.local/bin, which needs to be
on your PATH (pip warns if it isn't) — add export PATH="$HOME/.local/bin:$PATH"
to your shell rc file if resmon-lite isn't found after installing.
(pipx install git+https://github.com/The-Deflection-Engine/resmon-lite.git@v0.2.0
works the same way, in its own venv.) For
hacking on a local checkout: pip install --user -e ..
ln -s "$PWD/resmon-lite" ~/.local/bin/resmon-lite # launcher on PATH
cp resmon-lite.desktop ~/.local/share/applications/
mkdir -p ~/.config/autostart
ln -s "$PWD/resmon-lite.desktop" ~/.config/autostart/Optional file at ~/.config/resmon-lite/config.toml (see
config.example.toml). Every key is optional:
| Key | Default | Meaning |
|---|---|---|
poll_interval |
2.0 |
seconds between updates |
util_warn / util_crit |
50 / 75 |
% thresholds (CPU, GPU, VRAM) for yellow / red |
temp_warn / temp_crit |
75 / 90 |
°C thresholds for yellow / red |
color_ok / color_warn / color_crit |
green/amber/red | hex colours |
overlay_opacity |
0.7 |
starting background alpha of the pinned overlay (scroll wheel overrides) |
overlay_font_pt |
12.0 |
text size in the pinned overlay, points |
overlay_text_color |
#ffffff |
base text colour of the pinned overlay (hex); status colours still apply to values |
- GPU backend: AMD via amdgpu sysfs (
/sys/class/drm/cardN/device/…, hwmon for temp/power) and NVIDIA via NVML (optionalnvidia-ml-pydependency). Every GPU present is listed automatically, so mixed AMD + NVIDIA systems and new cards "just work". AMD names come fromlspci(looked up once at startup, with a small built-in map for very new cards); NVIDIA names come straight from NVML. - CPU temperature: read from the
k10temp/coretemphwmon chip. - RAM:
MemTotal − MemAvailablefrom/proc/meminfo. - Icon: drawn with Cairo to a PNG in
~/.cache/resmon-lite/, rewritten only when values actually change. - Single instance: resmon-lite owns the D-Bus name
org.resmonlite.Appfor the session; starting a second copy prints a notice and exits. The name is released automatically on crash, so there are no stale lock files.