Skip to content

About

Advanced task manager with historical resource monitoring, process enforcement, privacy alerts, and plain-language process identification for the Omarchy top bar

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

Buy Me a Coffee at ko-fi.com

preview png screenshot-2026-09-14_19-03-49 screenshot-2026-09-14_19-06-50 screenshot-2026-09-14_19-05-38 Like the plugin? ♥️ it on the Omarchy Marketplace to help others find it.

OmaControl

An Omarchy shell plugin (Quickshell, Hyprland) that turns your top-bar icon into an advanced task manager — live system monitoring, per-app history, process control, and privacy alerts.

Features

  • Live bar stats — CPU, temps, RAM, network, and more as a compact, customizable icon
  • App Window with tabs for Activity (live graphs, 1H/6H/1D), Apps (running processes + trust status), Alerts, Events, and Settings
  • Per-app details — CPU/mem/GPU/I/O history, provenance, and live socket counts (no root needed)
  • Privacy alerts — notified when camera, mic, or location get used
  • Process control — kill, suspend/resume, renice, or permanently disable an app
  • Historical database — SQLite-backed samples every 2s, downsampled over time
  • Sustained alert hysteresis — resource alarms must hold across samples and stay latched for a grace window, so the bell doesn't flicker near a threshold
  • Privacy-tier alerts — process-level spikes are toggleable via the "App Activity" sensitivity, so the window can stop naming specific processes
  • Per-process network attribution — optional toggle; turning it off hides the per-process net column entirely (instead of showing zeroes)
  • Adaptive sampling + stale indicator — the bar back-off when idle and warns when fresh data stops arriving
  • Configurable alert sensitivity — alert thresholds resolve from a single model (mild / medium / severe profiles, with per-metric overrides) shared by the bar, app window, and CLI; switch from the Settings tab or omcontrol alert-prefs set-profile <mild|medium|severe>
  • Self-healing config + storage — a corrupt alert_prefs.json / barstats.json is quarantined to <file>.corrupt (with a warning) instead of silently passing bad state, and alert-prefs writes are atomic; collector health is tracked so omcontrol status reports healthy/stale/failed sampling

Installation

omarchy plugin add https://github.com/Davedes83/OmaControl.git --enable

Add the widget to ~/.config/omarchy/shell.json:

{
  "bar": {
    "layout": {
      "right": [{ "id": "davedes.omcontrol" }]
    }
  }
}
omarchy restart shell

Optional: background history sampler

The bar widget and CLI record while the shell is running. To also fill history when the shell is closed, enable the hardened user service (fixed PATH, LC_ALL=C, strict umask, process-group timeouts on every helper):

systemctl --user enable --now ~/.config/omarchy/plugins/davedes.omcontrol/systemd/omcontrol-collect.service

Verify: systemctl --user status omcontrol-collect and omcontrol status.

Usage

  • Left-click — open/close the App Window
  • Middle-click — refresh sample
  • Right-click — context menu (jump to tab, enforce rules, kill top process)

Also ships a CLI — omcontrol status [--json], omcontrol top [--history 30m] [--sort peak|cpu|mem|combined] [--json|--csv], omcontrol history [--metric cpu] [--seconds 300] [--json|--csv], omcontrol app kill <name>, omcontrol prune [--metrics|--procs|--events], omcontrol vacuum, and omcontrol alert-prefs ... — run omcontrol --help for the full list.

Remove

omarchy plugin remove davedes.omcontrol
systemctl --user disable --now omcontrol-collect

Requirements

  • Omarchy Linux, Hyprland, Quickshell
  • sqlite3, python3, nvidia-smi (optional, for GPU metrics)

Development / Testing

The test suite exercises the schema migration/repair paths, the collector end-to-end, prefs.py validation + lock/atomic-rename concurrency, corruption quarantine for both preference stores, alert-threshold profile/override resolution, and the enforcement dry-run contract (mocked systemctl) — all against throwaway state, so the user's real history.db is never touched. Run it under any shell you like:

tests/run-tests.sh              # default: sh
tests/run-tests.sh dash         # strict POSIX (Debian/Ubuntu default sh)
tests/run-tests.sh bash --posix # bash in POSIX compatibility mode

CI (.github/workflows/ci.yml) runs the suite under dash, bash, and bash --posix, plus static gates: shellcheck, shfmt --diff, Python compileall, JSON validation, and a structural QML/JS bracket-balance check. qmllint runs as an informational step only — it needs the Quickshell module tree the CI image doesn't ship.

License

MIT

About

Advanced task manager with historical resource monitoring, process enforcement, privacy alerts, and plain-language process identification for the Omarchy top bar

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages