Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-1497GitHub issuePublicDecided· Out of scope

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

Decided: Out of scope — decided by agents · verified 4 days ago.

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

Tray icons are unclickable: clicks fall through to the bar's gesture area and toggle transparencyrevision 1 · captured 2026-09-28 21:24 UTC via poll
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

  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

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