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.
Live monitor scale change (Display panel / hl.monitor eval) desyncs multi-monitor position, causing overlap or vertical offset
Reported by straylight · filed Sep 9, 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
What happened
On a 2-monitor Hyprland/Omarchy setup with one monitor's position set literally (0x0) and the other set to "auto" (so it stays flush against the first regardless of scale), changing the first monitor's scale live reliably desyncs the layout in one of two ways:
- Overlap: changing only the scaled monitor's
scale(e.g. via the Display bar panel's brightness/scale slider, or an equivalenthl.monitor({...})live eval) does not recompute the other monitor's"auto"position. The two monitors then overlap in logical space, and Hyprland throws its persistent "Your monitor layout is set up incorrectly" warning banner — which visually covers the bar's tray icons (bluetooth, network, volume, etc.) since the bar sits at the top. - Vertical offset drift: reprocessing the monitor config at all (even a
hl.monitor()eval that only touches the other monitor, to fix the overlap above) causes the literally-positioned monitor (position = "0x0") to snap to a stray vertical offset (observed:0x266) instead of staying at0x0, even though the config file itself is untouched and still correct.hyprctl reloadalone does not fix this — only re-issuinghl.monitor(...)for that specific output viahyprctl evalsnaps it back to0x0.
Additionally, the bar's Display (omarchy.monitor) panel can be left in a stuck "open" visual state after a scale change interrupts it — showing its back-arrow/brightness-OSD chrome in place of the normal bar icon — until omarchy restart shell is run.
Expected
Changing a monitor's scale (live, via the Display panel) should keep any position = "auto" monitor correctly recomputed and flush, should never leave a position = "0x0" monitor drifted to a stray offset, and should not leave the bar's panel widget stuck mid-transition.
Steps to reproduce
~/.config/hypr/monitors.lua:
hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "0x0", scale = 1.25 })
hl.monitor({ output = "DP-3", mode = "[email protected]", position = "auto", scale = 1 })- Confirm starting layout is correct:
hyprctl monitorsshows HDMI-A-1 at0x0and DP-3 at1536x0(flush). - Change HDMI-A-1's scale to
1live (via the Display bar panel's slider, or equivalentlyhyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "0x0", scale = 1 })'). - Observe: DP-3 is still at
1536x0, but HDMI-A-1 is now 1920px wide logically → overlap → Hyprland shows the misconfigured-layout warning banner, covering the bar tray. - Try to fix by re-applying DP-3's
autoposition:hyprctl eval 'hl.monitor({ output = "DP-3", mode = "[email protected]", position = "auto", scale = 1 })'. - Observe: overlap is resolved, but HDMI-A-1 has now reverted to scale
1.25(from the file) at position0x266instead of0x0— a fresh vertical-offset bug — even though this eval call never mentioned HDMI-A-1. - Also observed independently: after any live scale change, the bar's Display widget can be left showing its panel-open chrome (back arrow + inline brightness OSD) instead of collapsing back to its normal icon, until
omarchy restart shell.
System details
- Omarchy version: 4.0.3-1
- Hyprland: 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
- Kernel: Linux 7.1.9-arch1-2
- GPU: AMD Radeon RX 5700 XT (Navi 10, amdgpu driver)
- Monitors: ASUS VS229 22" (HDMI-A-1, 1920x1080@60) + ASUS VG27A 27" (DP-3, [email protected])
omarchy debug --no-sudo --print is not a valid command on this Omarchy version (4.0.3-1) — omarchy commands --all has no debug/diagnostic entry, so no diagnostic log is attached.
Capture
Screenshot of the overlap warning banner covering the bar tray is attached below (drag-and-dropped separately).
View raw text
## What happened
On a 2-monitor Hyprland/Omarchy setup with one monitor's `position` set literally (`0x0`) and the other set to `"auto"` (so it stays flush against the first regardless of scale), changing the first monitor's scale live reliably desyncs the layout in one of two ways:
1. **Overlap**: changing only the scaled monitor's `scale` (e.g. via the Display bar panel's brightness/scale slider, or an equivalent `hl.monitor({...})` live eval) does not recompute the other monitor's `"auto"` position. The two monitors then overlap in logical space, and Hyprland throws its persistent "Your monitor layout is set up incorrectly" warning banner — which visually covers the bar's tray icons (bluetooth, network, volume, etc.) since the bar sits at the top.
2. **Vertical offset drift**: reprocessing the monitor config at all (even a `hl.monitor()` eval that only touches the *other* monitor, to fix the overlap above) causes the literally-positioned monitor (`position = "0x0"`) to snap to a stray vertical offset (observed: `0x266`) instead of staying at `0x0`, even though the config file itself is untouched and still correct. `hyprctl reload` alone does not fix this — only re-issuing `hl.monitor(...)` for that specific output via `hyprctl eval` snaps it back to `0x0`.
Additionally, the bar's Display (`omarchy.monitor`) panel can be left in a stuck "open" visual state after a scale change interrupts it — showing its back-arrow/brightness-OSD chrome in place of the normal bar icon — until `omarchy restart shell` is run.
## Expected
Changing a monitor's scale (live, via the Display panel) should keep any `position = "auto"` monitor correctly recomputed and flush, should never leave a `position = "0x0"` monitor drifted to a stray offset, and should not leave the bar's panel widget stuck mid-transition.
## Steps to reproduce
`~/.config/hypr/monitors.lua`:
```lua
hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "0x0", scale = 1.25 })
hl.monitor({ output = "DP-3", mode = "[email protected]", position = "auto", scale = 1 })
```
1. Confirm starting layout is correct: `hyprctl monitors` shows HDMI-A-1 at `0x0` and DP-3 at `1536x0` (flush).
2. Change HDMI-A-1's scale to `1` live (via the Display bar panel's slider, or equivalently `hyprctl eval 'hl.monitor({ output = "HDMI-A-1", mode = "1920x1080@60", position = "0x0", scale = 1 })'`).
3. Observe: DP-3 is still at `1536x0`, but HDMI-A-1 is now 1920px wide logically → overlap → Hyprland shows the misconfigured-layout warning banner, covering the bar tray.
4. Try to fix by re-applying DP-3's `auto` position: `hyprctl eval 'hl.monitor({ output = "DP-3", mode = "[email protected]", position = "auto", scale = 1 })'`.
5. Observe: overlap is resolved, but HDMI-A-1 has now reverted to scale `1.25` (from the file) at position `0x266` instead of `0x0` — a fresh vertical-offset bug — even though this eval call never mentioned HDMI-A-1.
6. Also observed independently: after any live scale change, the bar's Display widget can be left showing its panel-open chrome (back arrow + inline brightness OSD) instead of collapsing back to its normal icon, until `omarchy restart shell`.
## System details
- Omarchy version: 4.0.3-1
- Hyprland: 0.56.2 (v0.56.2, commit efb50993780079460b0cbed1363e2166a2de1d9f)
- Kernel: Linux 7.1.9-arch1-2
- GPU: AMD Radeon RX 5700 XT (Navi 10, amdgpu driver)
- Monitors: ASUS VS229 22" (HDMI-A-1, 1920x1080@60) + ASUS VG27A 27" (DP-3, [email protected])
`omarchy debug --no-sudo --print` is not a valid command on this Omarchy version (4.0.3-1) — `omarchy commands --all` has no debug/diagnostic entry, so no diagnostic log is attached.
## Capture
Screenshot of the overlap warning banner covering the bar tray is attached below (drag-and-dropped separately).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 11:16 UTC