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.
nwg-displays' multi-line hl.monitor() blocks break internal-panel scale sync (resets to 2)
Reported by Ethanxu1 · filed Aug 25, 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
System details
Omarchy version: 4.0.0-1, Hardware: Lenovo Slim Pro 7 14APH8 (laptop), Kernel: Linux 7.1.8-arch1-3, GPU: NVIDIA GeForce RTX 3050 6GB Laptop GPU (GA107BM) + AMD Phoenix1 (integrated), nwg-displays version: 0.4.3-1Monitors: internal eDP-1 (2560x1600@90Hz), external HDMI-A-1 (3840x2160@60Hz, Sceptre Z27)
What's wrong?
What happened
On a laptop with an external monitor connected and active, setting the internal
panel's scale to a fractional value (e.g. 1.25) via nwg-displays gets silently
reverted to 2 within a couple of seconds — every time, no matter what scale is
chosen. The external monitor's scale applies and holds fine; only the internal
panel is affected.
Expected behavior
The internal panel should keep whatever scale is set in ~/.config/hypr/monitors.lua,
same as the external monitor does.
Steps to reproduce
- On a laptop with an external monitor attached and active, open
nwg-displays. - Set the internal panel (e.g.
eDP-1) scale to1.25(or any non-2 value) and save. nwg-displayswrites~/.config/hypr/monitors.luausing a multi-line
hl.monitor({...}) block, e.g.:
hl.monitor({
output = "eDP-1",
mode = "[email protected]",
position = "0x0",
scale = 1.25
})- Within ~2 seconds, the internal panel's scale reverts to 2.
Root cause
/usr/share/omarchy/bin/omarchy-hyprland-monitor-clamshell is responsible for
re-applying the internal panel's configured scale (used to restore it correctly
after suspend/resume, lid open/close, and dock/undock). Its configured_monitor_value()
function locates the relevant hl.monitor({...}) block with a sed regex that
requires output = "..." to appear on the same source line as hl.monitor({:
monitor_rule_regex() {
printf '^[[:space:]]*hl\\.monitor\\(\\{.*output[[:space:]]*=[[:space:]]*"%s"' "$1"
}nwg-displays (version 0.4.3, a commonly recommended display-configuration GUI
for Hyprland/Omarchy) always writes hl.monitor({...}) blocks across multiple
lines, so this regex never matches for the internal panel. configured_monitor_scale()
then returns empty, read_monitor_scale() falls through past the (also empty)
state-file fallback, and returns the hardcoded default of 2.
This function is called from sync_internal_scale() → enable_internal(),
which runs:
- on every monitoradded/monitorremoved Hyprland event, and
- every 2 seconds via poll_clamshell_state in omarchy-hyprland-monitor-watch,
which runs continuously whenever omarchy-hw-laptop && omarchy-hyprland-monitor-external-active
(i.e. exactly the "laptop + external monitor" setup where this bug shows up).
So any scale set on the internal panel gets reapplied and stomped back to 2
within ~2 seconds. External monitors are untouched because this script only
manages the internal/laptop output.
Confirmed manually
hyprctl eval 'hl.monitor({ output = "eDP-1", mode = "[email protected]", position = "0x0", scale = 1.25 })'
applies immediately, then reverts to scale: 2 within ~2-4 seconds (caught via
hyprctl monitors polling).
- Reformatting the same block onto a single line in monitors.lua lets
configured_monitor_value() parse it correctly and the scale then holds.
- Seeding ~/.local/state/omarchy/toggles/hypr/internal-monitor-scale with 1.25
(the parser's secondary fallback, checked before the hardcoded default) also
works around it without touching monitors.lua formatting — this is what I'm
using as a temporary fix, but it silently goes stale the next time the scale
is actually changed via nwg-displays.
- Also noticed (separately, likely unrelated): two copies of
omarchy-hyprland-monitor-watch were running simultaneously in my session,
seemingly a leftover from a prior Hyprland reload — doubles the polling but
isn't the cause of the scale-reset bug itself.
Suggested fix
Make configured_monitor_value()'s parsing multi-line aware — e.g. flatten eachhl.monitor({...}) block onto one logical line before matching (strip newlines
between the balanced { and }), or replace the regex-based scrape with a
proper Lua parse — since nwg-displays, a standard/recommended tool for this
workflow, never emits single-line calls.
View raw text
### System details
Omarchy version: 4.0.0-1, Hardware: Lenovo Slim Pro 7 14APH8 (laptop), Kernel: Linux 7.1.8-arch1-3, GPU: NVIDIA GeForce RTX 3050 6GB Laptop GPU (GA107BM) + AMD Phoenix1 (integrated), nwg-displays version: 0.4.3-1Monitors: internal `eDP-1` (2560x1600@90Hz), external `HDMI-A-1` (3840x2160@60Hz, Sceptre Z27)
### What's wrong?
## What happened
On a laptop with an external monitor connected and active, setting the internal
panel's scale to a fractional value (e.g. 1.25) via `nwg-displays` gets silently
reverted to 2 within a couple of seconds — every time, no matter what scale is
chosen. The external monitor's scale applies and holds fine; only the internal
panel is affected.
## Expected behavior
The internal panel should keep whatever scale is set in `~/.config/hypr/monitors.lua`,
same as the external monitor does.
## Steps to reproduce
1. On a laptop with an external monitor attached and active, open `nwg-displays`.
2. Set the internal panel (e.g. `eDP-1`) scale to `1.25` (or any non-2 value) and save.
3. `nwg-displays` writes `~/.config/hypr/monitors.lua` using a multi-line
`hl.monitor({...})` block, e.g.:
```lua
hl.monitor({
output = "eDP-1",
mode = "[email protected]",
position = "0x0",
scale = 1.25
})
```
4. Within ~2 seconds, the internal panel's scale reverts to 2.
## Root cause
`/usr/share/omarchy/bin/omarchy-hyprland-monitor-clamshell` is responsible for
re-applying the internal panel's configured scale (used to restore it correctly
after suspend/resume, lid open/close, and dock/undock). Its `configured_monitor_value()`
function locates the relevant `hl.monitor({...})` block with a `sed` regex that
requires `output = "..."` to appear on the **same source line** as `hl.monitor({`:
```
monitor_rule_regex() {
printf '^[[:space:]]*hl\\.monitor\\(\\{.*output[[:space:]]*=[[:space:]]*"%s"' "$1"
}
```
`nwg-displays` (version 0.4.3, a commonly recommended display-configuration GUI
for Hyprland/Omarchy) always writes `hl.monitor({...})` blocks across multiple
lines, so this regex never matches for the internal panel. `configured_monitor_scale()`
then returns empty, `read_monitor_scale()` falls through past the (also empty)
state-file fallback, and returns the hardcoded default of `2`.
This function is called from `sync_internal_scale()` → `enable_internal()`,
which runs:
- on every `monitoradded`/`monitorremoved` Hyprland event, and
- every 2 seconds via `poll_clamshell_state` in `omarchy-hyprland-monitor-watch`,
which runs continuously whenever `omarchy-hw-laptop && omarchy-hyprland-monitor-external-active`
(i.e. exactly the "laptop + external monitor" setup where this bug shows up).
So any scale set on the internal panel gets reapplied and stomped back to 2
within ~2 seconds. External monitors are untouched because this script only
manages the internal/laptop output.
## Confirmed manually
- `hyprctl eval 'hl.monitor({ output = "eDP-1", mode = "[email protected]", position = "0x0", scale = 1.25 })'`
applies immediately, then reverts to `scale: 2` within ~2-4 seconds (caught via
`hyprctl monitors` polling).
- Reformatting the same block onto a single line in `monitors.lua` lets
`configured_monitor_value()` parse it correctly and the scale then holds.
- Seeding `~/.local/state/omarchy/toggles/hypr/internal-monitor-scale` with `1.25`
(the parser's secondary fallback, checked before the hardcoded default) also
works around it without touching `monitors.lua` formatting — this is what I'm
using as a temporary fix, but it silently goes stale the next time the scale
is actually changed via nwg-displays.
- Also noticed (separately, likely unrelated): two copies of
`omarchy-hyprland-monitor-watch` were running simultaneously in my session,
seemingly a leftover from a prior Hyprland reload — doubles the polling but
isn't the cause of the scale-reset bug itself.
## Suggested fix
Make `configured_monitor_value()`'s parsing multi-line aware — e.g. flatten each
`hl.monitor({...})` block onto one logical line before matching (strip newlines
between the balanced `{` and `}`), or replace the regex-based scrape with a
proper Lua parse — since `nwg-displays`, a standard/recommended tool for this
workflow, never emits single-line calls.
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
- Fixed bypr/7146· confirmed
- Fixed bypr/14583· confirmed
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:43 UTC