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 are unclickable: clicks fall through to the bar's gesture area and toggle transparency
Reported by Carasibana · filed Aug 24, 2026 · open at source
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
Note: This bug was investigated and this report written by Claude Code, and submitted on my behalf. The source tracing, the D-Bus checks and the two-app reproduction below were all carried out by it; I have reviewed and endorsed the result.
Summary
System tray (omarchy.tray) icons cannot be clicked. Left-clicking a tray icon
does nothing; the click falls through to a bar-wide gesture area, so
double-clicking a tray icon toggles the whole bar's background transparency
instead of activating the icon (and rewrites bar.transparent in~/.config/omarchy/shell.json).
Omarchy's own bar widgets (bluetooth, wifi, audio, power, clock) are unaffected.
Only third-party StatusNotifierItem icons are.
Steps to reproduce
- Run any app that provides a tray icon.
udiskieworks and is a clean test:
udiskie --tray
2. Pin it so it is visible without the drawer — add to the omarchy.tray entry
in ~/.config/omarchy/shell.json:
{ "id": "omarchy.tray", "pinned": ["udiskie"] }
3. Hover the icon — the tooltip appears, so pointer events do reach it.
4. Left-click it. Nothing happens.
5. Double-click it. The entire bar's background transparency toggles.
Reproduced with two unrelated apps (udiskie, and Claude Desktop'sClaude_status_icon_1). The item is healthy on D-Bus in both cases:org.kde.StatusNotifierItem.Activate succeeds when called directly withgdbus, and com.canonical.dbusmenu.GetLayout returns the full menu.
Expected
Left-click activates the tray item; right-click opens its menu.
Actual
Neither. Hover/tooltip works, all clicks are swallowed, and double-click hits
the bar's transparency gesture.
Root cause
Ui/WidgetButton.qml:47is the only thing that callsregisterClickTarget.
plugins/bar/widgets/Tray.qml never does — TrayItem is a bare MouseArea
(Tray.qml:814). Ui/BarIconButton.qml:5 is a WidgetButton, which is why
Omarchy's own widgets work.
2. A left-press on the slot is taken by ModuleSlot's drag MouseArea
(Bar.qml:1654, acceptedButtons: Qt.LeftButton, fills the slot).
3. On click it calls pressModuleClickTarget (Bar.qml:784) ->
moduleClickTargetAt (Bar.qml:762) finds no registered target and falls
back to slot.activeItem, which has no triggerPress, so
moduleTargetClickable (Bar.qml:752) rejects it and it returns null.
4. pressModuleClickTarget returns false, so Bar.qml:1740 sets
mouse.accepted = false.
5. The click propagates to CenterGestureArea. Despite the name it is
anchors.fill: parent (Bar.qml:1306) inside
CenterModules { anchors.fill: parent } (Bar.qml:1110) — it spans the
entire bar, not the centre section.
6. CenterGestureArea.onDoubleClicked calls toggleTransparency()
(Bar.qml:1464). Hence the transparency toggle.
Hover still works because hover is not routed through the click-target registry.
Suggested fix
Either give TrayItem a triggerPress(button) and register it viaregisterClickTarget, so tray icons participate in the same dispatch as every
other widget; or stop pressModuleClickTarget returning false from swallowing
clicks for widgets that handle their own input.
Separately, CenterGestureArea spanning the full bar looks unintended — a
click anywhere on the bar that no widget claims can toggle transparency.
Secondary observation
dragThreshold is Style.space(4) (Bar.qml:1658) = 4 logical px, compared as
Manhattan distance |dx| + |dy| (Bar.qml:1681). On a 26px-tall bar this is
very easy to trip, so clicks also frequently become widget-reorder drags
(omarchy-bar-drag-ghost appears in hyprctl layers). Not the root cause, but
it compounds it.
System
- Omarchy 4.0.0-1
- Hyprland 0.56.2, quickshell-git 0.3.0.r20.g28771c7-2
- Kernel 7.1.8-arch1-3, ASUS Vivobook S 15 S5506MA
- Display 2880x1620 @ scale 1.6667 (bar 1728x26 logical)
🤖 Generated with Claude Code
View raw text
> **Note:** This bug was investigated and this report written by [Claude Code](https://claude.com/claude-code), and submitted on my behalf. The source tracing, the D-Bus checks and the two-app reproduction below were all carried out by it; I have reviewed and endorsed the result.
## Summary
System tray (`omarchy.tray`) icons cannot be clicked. Left-clicking a tray icon
does nothing; the click falls through to a bar-wide gesture area, so
double-clicking a tray icon **toggles the whole bar's background transparency**
instead of activating the icon (and rewrites `bar.transparent` in
`~/.config/omarchy/shell.json`).
Omarchy's own bar widgets (bluetooth, wifi, audio, power, clock) are unaffected.
Only third-party StatusNotifierItem icons are.
## Steps to reproduce
1. Run any app that provides a tray icon. `udiskie` works and is a clean test:
`udiskie --tray`
2. Pin it so it is visible without the drawer — add to the `omarchy.tray` entry
in `~/.config/omarchy/shell.json`:
`{ "id": "omarchy.tray", "pinned": ["udiskie"] }`
3. Hover the icon — the tooltip appears, so pointer events do reach it.
4. Left-click it. Nothing happens.
5. Double-click it. The entire bar's background transparency toggles.
Reproduced with two unrelated apps (udiskie, and Claude Desktop's
`Claude_status_icon_1`). The item is healthy on D-Bus in both cases:
`org.kde.StatusNotifierItem.Activate` succeeds when called directly with
`gdbus`, and `com.canonical.dbusmenu.GetLayout` returns the full menu.
## Expected
Left-click activates the tray item; right-click opens its menu.
## Actual
Neither. Hover/tooltip works, all clicks are swallowed, and double-click hits
the bar's transparency gesture.
## Root cause
1. `Ui/WidgetButton.qml:47` is the only thing that calls `registerClickTarget`.
`plugins/bar/widgets/Tray.qml` never does — `TrayItem` is a bare `MouseArea`
(Tray.qml:814). `Ui/BarIconButton.qml:5` *is* a `WidgetButton`, which is why
Omarchy's own widgets work.
2. A left-press on the slot is taken by `ModuleSlot`'s drag `MouseArea`
(`Bar.qml:1654`, `acceptedButtons: Qt.LeftButton`, fills the slot).
3. On click it calls `pressModuleClickTarget` (`Bar.qml:784`) ->
`moduleClickTargetAt` (`Bar.qml:762`) finds no registered target and falls
back to `slot.activeItem`, which has no `triggerPress`, so
`moduleTargetClickable` (`Bar.qml:752`) rejects it and it returns `null`.
4. `pressModuleClickTarget` returns false, so `Bar.qml:1740` sets
`mouse.accepted = false`.
5. The click propagates to `CenterGestureArea`. Despite the name it is
`anchors.fill: parent` (`Bar.qml:1306`) inside
`CenterModules { anchors.fill: parent }` (`Bar.qml:1110`) — it spans the
**entire bar**, not the centre section.
6. `CenterGestureArea.onDoubleClicked` calls `toggleTransparency()`
(`Bar.qml:1464`). Hence the transparency toggle.
Hover still works because hover is not routed through the click-target registry.
## Suggested fix
Either give `TrayItem` a `triggerPress(button)` and register it via
`registerClickTarget`, so tray icons participate in the same dispatch as every
other widget; or stop `pressModuleClickTarget` returning false from swallowing
clicks for widgets that handle their own input.
Separately, `CenterGestureArea` spanning the full bar looks unintended — a
click anywhere on the bar that no widget claims can toggle transparency.
## Secondary observation
`dragThreshold` is `Style.space(4)` (`Bar.qml:1658`) = 4 logical px, compared as
*Manhattan* distance `|dx| + |dy|` (`Bar.qml:1681`). On a 26px-tall bar this is
very easy to trip, so clicks also frequently become widget-reorder drags
(`omarchy-bar-drag-ghost` appears in `hyprctl layers`). Not the root cause, but
it compounds it.
## System
- Omarchy 4.0.0-1
- Hyprland 0.56.2, quickshell-git 0.3.0.r20.g28771c7-2
- Kernel 7.1.8-arch1-3, ASUS Vivobook S 15 S5506MA
- Display 2880x1620 @ scale 1.6667 (bar 1728x26 logical)
---
🤖 Generated with [Claude Code](https://claude.com/claude-code)
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 08:39 UTC