Omahub
← All plugins
J

Vitals

by John Cummings

CPU, GPU, memory, disk, network, and temperatures in a native Omarchy bar widget.

Security review

Review recommended · 1 finding

Deterministic scan — not a security guarantee

Low
Risk level
Low
Analyzed commit
5a8c89a
Scanned
4 weeks ago

Flagged patterns appear only in documentation files (README / docs) — descriptive examples, not executable code.

  • Docs sudo README.md:27

    Command runs with sudo, elevating the process beyond the plugin environment.

    sudo or pkexec is required. The

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
5a8c89a
Reviewed
4 weeks ago

This is a benign system-monitoring bar widget. The Python collector reads standard /proc and /sys interfaces and writes only to $XDG_RUNTIME_DIR; the QML code is straightforward and contains no destructive or network-exfiltrating behavior. The deterministic scan's 'sudo' finding refers to a README sentence stating that sudo is NOT required, so it is a documentation false positive.

  • The deterministic scan flagged a README line mentioning sudo, but that line explicitly says 'No sudo or pkexec is required' — it is documentation only and not part of executable code.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/thehamsti/omarchy-vitals --enable
Widgets #bar #quickshell #system

Vitals

CI Release License: MIT

A lightweight Omarchy / Hyprland status-bar plugin for CPU, GPU, memory, disk, network, and temperatures. Native Quickshell widget — not a Waybar script.

Vitals panel

  • CPU, memory, GPU (NVIDIA via nvidia-smi, AMD via sysfs), disk, network, and hwmon temps
  • Click the bar for meters, top processes, and largest directories
  • Follows the active Omarchy theme (accent / muted / urgent)
  • Settings live in the panel accordion — poll rate, CPU/MEM text labels, units

Requirements

  • Omarchy Quattro with Quickshell
  • python3 (standard library only — no pip packages, no extra install)

Optional:

  • nvidia-smi for NVIDIA GPUs (AMD is read from sysfs)
  • btop if you want the click action or Enter key to open a TUI monitor

The collector reads /proc, /sys/class/hwmon, and /sys/class/drm, and writes only under $XDG_RUNTIME_DIR. No sudo or pkexec is required. The plugin does not install services or start a second Quickshell process.

Install

omarchy plugin add https://github.com/thehamsti/omarchy-vitals.git --enable

That clones the plugin into ~/.config/omarchy/plugins/hamsti.vitals/, validates the manifest, and places the widget on the right side of the bar. Move it afterward with:

omarchy bar move hamsti.vitals --section center --after omarchy.clock

Update later with omarchy plugin update hamsti.vitals.

Remove

omarchy plugin remove hamsti.vitals

What you get

Bar

󰍛 12% 51° 󰘚 34% 󰢮 4% 45° 󰈀 ↓1.2 MB/s ↑256 KB/s

GPU hides itself when no supported GPU is found. Disk is off by default so the strip stays short; turn it on if you want capacity in the bar.

Panel

Usage bars for CPU, memory, each GPU, and each real filesystem, plus a temperature chip list. While the panel is open it also lists the top processes for CPU, memory, and GPU VRAM, and the largest top-level directories on each disk. Values flip to the theme urgent color at the warning thresholds.

Those extras never run on the bar refresh path. Process lists are sampled only while the panel is open; directory sizes are measured in a niced background job and cached for 15 minutes.

CPU percent is shared across every bar instance and EMA-smoothed. Two monitors used to sample /proc/stat a few milliseconds apart and invent fake spikes; sub-second windows are ignored now.

Clicks

Input Action
Left Open the panel (or btop, if you change Left click)
Right Open btop
Middle Refresh now
Hover Nothing — click for the panel

Settings

Open the panel and expand Settings at the bottom. Clicks write the same keys as omarchy bar set and take effect immediately. Poll is the bar refresh interval. Text swaps the glyphs for CPU / MEM / GPU.

You can still set them from the CLI or by editing the bar entry in ~/.config/omarchy/shell.json.

{
  "id": "hamsti.vitals",
  "display": "All",
  "showCpu": "On",
  "showMemory": "On",
  "showGpu": "On",
  "showDisk": "Off",
  "showNetwork": "On",
  "showTemp": "On",
  "compact": "Off",
  "barStyle": "Icons",
  "tempUnit": "C",
  "refreshIntervalSec": 2,
  "warnPercent": 90,
  "warnTempC": 85,
  "diskMount": "/",
  "clickAction": "Panel"
}

display can be All, CPU, Memory, GPU, Disk, Network, or Temp. The plugin allows multiple instances, so you can split the strip:

omarchy plugin enable hamsti.vitals --section right
omarchy bar set hamsti.vitals display CPU

Then enable another copy and set that one to Memory.

How it reads the machine

collect.py is a no-dependency Python 3 snapshot. The bar calls it every couple of seconds; the panel calls collect.py --extras only while it is open.

  • /proc/stat for CPU percent (previous sample kept in $XDG_RUNTIME_DIR, minimum 0.8s window, light EMA)
  • /proc/meminfo for memory and swap
  • nvidia-smi for NVIDIA GPUs, /sys/class/drm for AMD
  • /proc/self/mounts + statvfs for real disks
  • /proc/net/dev for network upload/download rates
  • /sys/class/hwmon for temperatures
  • --extras: /proc/*/stat + /proc/*/statm for top processes, nvidia-smi --query-compute-apps for GPU VRAM, cached du -s -x for top-level directories

The first CPU sample after login has no previous counter, so usage shows — for one refresh interval.

Develop

./scripts/check.sh
python3 collect.py --pretty
python3 collect.py --extras --pretty

Saving files under ~/.config/omarchy/plugins/hamsti.vitals/ reloads the widget automatically. Force a rescan with omarchy-shell shell rescanPlugins.

See CONTRIBUTING.md for PR and release steps.

./scripts/release.sh              # tags v2026.08.17

License

MIT