Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA proof layer — requirements, tests and verified fixes — for two of Omarchy's subsystems: the application menu (launcher scripts, QML model, JSONC config, search and selection) and the lock screen (lock scripts, QML, PAM authentication). Scope is deliberately limited to those components of omacom/omarchy; the rest of the distribution is not covered.
Tray icons of already-running apps disappear after system update restarts the shell (SNI re-registration race)
Reported by jfdnet · filed Sep 19, 2026Closed upstream on 2026-10-12 by the bot omarchybot, as a duplicate (target not recorded).
At a glance
- 1 · What is claimed?
- Only the report text below — no validator has restated it as checkable claims yet.
- 2 · What does it affect?
- AreaOutside the audited area· Decided by agents · verified
- 3 · Is it reproducible?
- No validation has been run yet.
- 4 · What remains unclear?
- Not validated yet: no claims, no reproducer.
- 5 · What happens next?
- Decided by agents and verified by a second, independent agent — see the decision.
Original report
What happened
After a system update (which restarts the omarchy shell), tray icons of apps that were already running disappear from the omarchy.tray bar widget. The app processes stay alive; only the icons vanish. Restarting the affected app restores the icon.
Steps to reproduce
- Keep a tray app running (reproduced with trayscale 0.19.0)
- Run a system update that restarts the shell
- The app's tray icon is gone while the process is still alive
- Restart the app → icon returns
Analysis
quickshell owns both org.kde.StatusNotifierWatcher and org.kde.StatusNotifierHost (verified via busctl --user list). When the shell restarts, the watcher bus name is torn down and re-created by the new quickshell instance.
SNI clients that watch for the watcher and re-register (libappindicator-based apps like the Nextcloud client) survive the restart with their icons intact. Clients that register once and don't re-watch the watcher (trayscale implements its own SNI in Go) lose their icon. So this is not trayscale-specific — any tray app that doesn't implement watcher re-registration is affected, which is presumably a large share of real-world tray apps.
Expected behavior
Tray icons survive shell restarts.
Workaround
Restart the affected apps after updates.
Environment
- Omarchy 4.0.4-1
- quickshell 0.3.1-1
- trayscale 0.19.0-2
- kernel 7.2.5-3-omarchy
- Intel Core Ultra (Panther Lake iGPU), Wayland / Hyprland
Possible upstream directions: app-side re-registration on watcher reappear (trayscale), or a mitigation on the quickshell/omarchy side.
View raw text
### What happened After a system update (which restarts the omarchy shell), tray icons of apps that were **already running** disappear from the `omarchy.tray` bar widget. The app processes stay alive; only the icons vanish. Restarting the affected app restores the icon. ### Steps to reproduce 1. Keep a tray app running (reproduced with trayscale 0.19.0) 2. Run a system update that restarts the shell 3. The app's tray icon is gone while the process is still alive 4. Restart the app → icon returns ### Analysis quickshell owns both `org.kde.StatusNotifierWatcher` and `org.kde.StatusNotifierHost` (verified via `busctl --user list`). When the shell restarts, the watcher bus name is torn down and re-created by the new quickshell instance. SNI clients that watch for the watcher and re-register (libappindicator-based apps like the Nextcloud client) survive the restart with their icons intact. Clients that register once and don't re-watch the watcher (trayscale implements its own SNI in Go) lose their icon. So this is not trayscale-specific — **any tray app that doesn't implement watcher re-registration is affected**, which is presumably a large share of real-world tray apps. ### Expected behavior Tray icons survive shell restarts. ### Workaround Restart the affected apps after updates. ### Environment - Omarchy 4.0.4-1 - quickshell 0.3.1-1 - trayscale 0.19.0-2 - kernel 7.2.5-3-omarchy - Intel Core Ultra (Panther Lake iGPU), Wayland / Hyprland Possible upstream directions: app-side re-registration on watcher reappear (trayscale), or a mitigation on the quickshell/omarchy side.
Validation
Not checked yet. A validator will restate this report as checkable claims, map it to the project's requirements and write a reproducer that the proof engine runs.
Linked
Not linked to any known issue, other report or change yet.
Decision
Decisions are recorded by our staff — or, where this project allows it, by agents: checked by a second, independent agent, or by a single agent where the project's policy says so. Any decision reached so far is shown below.
- Out of scopeDecided by agents · verified · 2026-10-09 15:55 UTC