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.
KeyboardPanel card not visible on scale=1.5 output (stock clock/agents + third-party panels)
Reported by saigkill · filed Sep 1, 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
Summary
Popup content opened via a KeyboardPanel (the stock bar control panels built on shell/Ui/KeyboardPanel.qml) is not visible on an output configured with scale = 1.5. The full-screen veil layer (omarchy-keyboard-panel) is present, but the BorderSurface card subsurface never composites onto the screen. This affects the stock clock and agents panels and any third-party plugin panel using KeyboardPanel equally (reproduced with a custom medication plugin). Non-KeyboardPanel surfaces – the Spring menu and the dev-gallery FloatingWindow – render fine, so the shell overlay path itself works.
Environment
- Omarchy 4.0.1 (shell
KeyboardPanel.qmlbyte-identical to current upstream v4.0.2) - Quickshell 0.3.1, Hyprland 0.56.2 (Lua config)
- Samsung U32R59x 4K (3840x2160) at DP-3, configured via
hl.monitor({ output="desc:Samsung Electric Company U32R59x H1AK500000", mode="3840x2160@60", position="1920x0", scale=1.5 }) - Other outputs DP-2 / HDMI-A-1 at scale 1
Steps
- Open any KeyboardPanel-based panel by clicking its bar widget (clock, agents, or any plugin using
KeyboardPanel) on the 1.5-scaled output. - Note the
omarchy-keyboard-panelfull-screen layer surface appears (hyprctl layers), popup toggles via IPC (omarchy-shell shell toggle ...) confirm the plugin state changes.
Expected
The panel card renders above the veil, visible on the output, like the Clock/Agents panels do on a scale-1 monitor.
Observed
hyprctl layersshows onlyomarchy-keyboard-panel(+...-dismisson the other outputs); no card subsurface is listed anywhere. Nothing of the card content is visible via screenshot/OCR on the scaled output.- Instrumenting
card.mapToGlobal(...)from the panel returns logical coordinates that are roughly the physical position * 1.5 off surface: e.g. a card whose left edge should be on-screen (logical ≈ (2986,47) on DP-3 → physical ≈ x3519 < 3840, width ~690 at 1.5) still renders nothing. This suggests the card is being placed/measured in logical pixels that the compositor interprets as physical under scale > 1. - Controlling variable: opening the same panels via surfaces that are not KeyboardPanel (Spring menu
shell/plugins/menu/Menu.qml, dev-galleryFloatingWindow) renders correctly on the same output.
Scope note
I could not cleanly open a KeyboardPanel popup forced onto a scale-1 output for a control case because this machine's popouts consistently land on DP-3 (cross-monitor popout ownership behavior), so the "works on scale 1" comparison is by inspection of surfaces/geometry rather than a captured render.
View raw text
## Summary
Popup content opened via a `KeyboardPanel` (the stock bar control panels built on `shell/Ui/KeyboardPanel.qml`) is not visible on an output configured with `scale = 1.5`. The full-screen veil layer (`omarchy-keyboard-panel`) is present, but the `BorderSurface` card subsurface never composites onto the screen. This affects the **stock clock and agents panels** and any third-party plugin panel using `KeyboardPanel` equally (reproduced with a custom medication plugin). Non-KeyboardPanel surfaces – the Spring menu and the dev-gallery `FloatingWindow` – render fine, so the shell overlay path itself works.
## Environment
- Omarchy 4.0.1 (shell `KeyboardPanel.qml` byte-identical to current upstream v4.0.2)
- Quickshell 0.3.1, Hyprland 0.56.2 (Lua config)
- Samsung U32R59x 4K (3840x2160) at DP-3, configured via `hl.monitor({ output="desc:Samsung Electric Company U32R59x H1AK500000", mode="3840x2160@60", position="1920x0", scale=1.5 })`
- Other outputs DP-2 / HDMI-A-1 at scale 1
## Steps
1. Open any KeyboardPanel-based panel by clicking its bar widget (clock, agents, or any plugin using `KeyboardPanel`) on the 1.5-scaled output.
2. Note the `omarchy-keyboard-panel` full-screen layer surface appears (`hyprctl layers`), popup toggles via IPC (`omarchy-shell shell toggle ...`) confirm the plugin state changes.
## Expected
The panel card renders above the veil, visible on the output, like the Clock/Agents panels do on a scale-1 monitor.
## Observed
- `hyprctl layers` shows only `omarchy-keyboard-panel` (+ `...-dismiss` on the other outputs); no card subsurface is listed anywhere. Nothing of the card content is visible via screenshot/OCR on the scaled output.
- Instrumenting `card.mapToGlobal(...)` from the panel returns logical coordinates that are roughly the physical position * 1.5 off surface: e.g. a card whose left edge should be on-screen (logical ≈ (2986,47) on DP-3 → physical ≈ x3519 < 3840, width ~690 at 1.5) still renders nothing. This suggests the card is being placed/measured in logical pixels that the compositor interprets as physical under scale > 1.
- Controlling variable: opening the same panels via surfaces that are **not** KeyboardPanel (Spring menu `shell/plugins/menu/Menu.qml`, dev-gallery `FloatingWindow`) renders correctly on the same output.
## Scope note
I could not cleanly open a KeyboardPanel popup forced onto a scale-1 output for a control case because this machine's popouts consistently land on DP-3 (cross-monitor popout ownership behavior), so the "works on scale 1" comparison is by inspection of surfaces/geometry rather than a captured render.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 10:26 UTC