An Omarchy bar-widget that reviews pending updates before you run them. It checks three sources at once and shows you what is about to be updated, then runs the full Omarchy update flow only after you confirm.
- Bar icon with a live badge showing how many updates are pending.
- Opens a panel in the top-right corner listing pending updates grouped by
source:
- Omarchy (
omarchy-update-available) - System (
checkupdates, falls back topacman -Qu) - AUR (
yay -Qua, only when foreign packages are installed)
- Omarchy (
- Update now button that launches
omarchy-launch-floating-terminal-with-presentation omarchy-update, so you still get the confirmation step before anything is applied. - Full keyboard navigation (mouse or keyboard cursor), refresh button, and IPC control.
- Automatic background refresh (configurable interval, 15 minutes by default).
- Omarchy with a running shell (tested on
4.0.0.alpha) python3(used by the collector script to build the JSON payload)checkupdates(frompacman-contrib) orpacmanyay(for AUR updates)
The plugin is developed in this directory and installed by copying it into Omarchy's user plugin folder.
-
Copy the plugin files:
mkdir -p ~/.config/omarchy/plugins/gennaro.updater cp manifest.json Updater.qml collect-updates.sh \ ~/.config/omarchy/plugins/gennaro.updater/
-
(Optional) Validate the plugin:
omarchy plugin validate ~/.config/omarchy/plugins/gennaro.updater -
Enable it and place it on the right side of the bar (top-right corner):
omarchy plugin enable gennaro.updater --section right -
Reload the shell so the widget appears:
omarchy-restart-shell
Note:
omarchy-refresh-shellrewritesshell.jsonback to Omarchy defaults and can drop your custom bar layout, plugins, and widgets. Preferomarchy-restart-shell(or the plugin rescan via IPC) after installing.
- Left-click the bar icon: open/close the update panel.
- Right-click (or middle-click): force a refresh.
- Update now: runs the real update flow; Omarchy's confirmation dialog still runs first.
- Keyboard: arrows to navigate,
Enterto activate,Escto close,rto refresh,uto update.
The widget registers an IpcHandler under the target gennaro.updater:
omarchy shell gennaro.updater toggle # open/close the panel
omarchy shell gennaro.updater refresh # force a rescan
omarchy shell gennaro.updater update # start the update flow
omarchy shell gennaro.updater query # print the current state as JSONThe refresh interval can be set per-widget in the Omarchy settings under the widget's entry:
refreshIntervalSec— seconds between automatic rescans (default900, clamped to a minimum of60).
You can also edit the inline entry in ~/.config/omarchy/shell.json:
{
"id": "gennaro.updater",
"refreshIntervalSec": 1800
}After changing the QML or the collector script, copy the files again and restart the shell:
cp manifest.json Updater.qml collect-updates.sh \
~/.config/omarchy/plugins/gennaro.updater/
omarchy-restart-shellomarchy plugin disable gennaro.updater
rm -rf ~/.config/omarchy/plugins/gennaro.updater
omarchy-restart-shellIf you want the widget gone from the bar too, remove its entry from the
right array in ~/.config/omarchy/shell.json.
collect-updates.sh runs the three checks, converts each output into a
structured JSON document (parsing name oldver -> newver lines into
{ name, old, new } objects), and prints it to stdout. Updater.qml runs the
script through a Process + StdioCollector, parses the JSON, and drives the
badge, the panel sections, and the cursor model from it. "Omarchy is up to
date" lines are filtered out so the widget only reports real pending updates.
- The panel shows up to date even right after an install: the system is currently up to date; the widget still lists nothing until an update is actually pending.
- AUR section is empty although AUR packages exist: the collector only queries
yaywhenpacman -Qemreports foreign packages, and skips it otherwise. - The bar icon does not appear after enabling: run
omarchy plugin listto confirm the plugin isenabled, then restart the shell.

