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.
Display mirroring immediately reverts to extended mode via auto-recovery daemon
Reported by setiapam · filed Aug 11, 2026Closed upstream on 2026-08-11 by dhh, as not planned.
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?
- Not yet mapped to any requirement or component.
- 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?
- Our staff decide whether the report is valid. Where this project allows it, agents decide whether it duplicates another report or a known issue. No decision has been recorded yet.
Original report
System details
AMD Ryzen 7 5800H, GeForce RTX 3050 Mobile, Omarchy 4.0.0.r1645.g5edc349-1
What's wrong?
Summary
When toggling display mirroring using the default keybinding (SUPER + CTRL + ALT + Delete or omarchy-hyprland-monitor-internal-mirror toggle), Hyprland applies the mirror configuration, but Omarchy's monitor recovery daemon (omarchy-hyprland-monitor-watch / sync_clamshell) immediately reverts the display back to Extended Mode within seconds.
This happens because the background monitor check script (omarchy-hyprland-monitor-external-active) queries hyprctl monitors -j. In Hyprland, mirrored external outputs are omitted from hyprctl monitors -j (they are only listed in hyprctl monitors all -j). As a result, Omarchy incorrectly concludes that the external monitor was disconnected, triggering omarchy-hyprland-monitor-internal-mirror recover which deletes the mirror toggle file and forces extended mode.
Environment
- Omarchy version:
4.0.0.r1645.g5edc349-1 - Hyprland version:
0.56.2 - Kernel:
7.1.7-arch1-1 - GPU: NVIDIA GeForce RTX 3050 Mobile / AMD Cezanne [Radeon Vega Series] (Hybrid GPU)
- Monitors:
- Laptop internal:
eDP-1(1920x1080@144Hz) - External monitor:
HDMI-A-1(HP 24mh 1920x1080@60Hz)
Reproduction
- Connect an external monitor (e.g.
HDMI-A-1). - Press
SUPER + CTRL + ALT + Delete(or runomarchy-hyprland-monitor-internal-mirror togglein a terminal). - The notification "Mirroring enabled (HDMI-A-1)" appears briefly.
- Within 1–3 seconds, the background watcher
omarchy-hyprland-monitor-watchtriggersomarchy-hyprland-monitor-clamshell, which callsomarchy-hyprland-monitor-internal-mirror recover. - The display immediately reverts back to Extended Mode.
Evidence & Root Cause Analysis
1. Keybinding Execution
The shortcut runs /usr/share/omarchy/bin/omarchy-hyprland-monitor-internal-mirror toggle, which writes the toggle file:~/.local/state/omarchy/toggles/hypr/internal-monitor-mirror.lua:
hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "auto", scale = 1, mirror = "eDP-1" })and calls hyprctl reload.
2. Hyprland Behavior with Mirrored Displays
When HDMI-A-1 is set to mirror = "eDP-1", Hyprland removes HDMI-A-1 from the active standalone monitor list returned by hyprctl monitors -j.HDMI-A-1 is only returned when calling hyprctl monitors all -j.
3. False Negative in External Monitor Detection
/usr/share/omarchy/bin/omarchy-hyprland-monitor-external-active currently executes:
hyprctl monitors -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1Because HDMI-A-1 is absent from hyprctl monitors -j while mirrored, this script returns exit status 1 (External active: NO).
4. Auto-Recovery Execution
omarchy-hyprland-monitor-watch triggers sync_clamshell -> omarchy-hyprland-monitor-clamshell -> omarchy-hyprland-monitor-internal-mirror recover.recover() evaluates:
if ! omarchy-hyprland-monitor-external-active && omarchy-hyprland-toggle-enabled $TOGGLE; then
omarchy-hyprland-toggle $TOGGLE off
fiSince omarchy-hyprland-monitor-external-active returned false, recover() assumes the external monitor was disconnected, deletes internal-monitor-mirror.lua, and restores Extended Mode.
Proposed Solution
Update /usr/share/omarchy/bin/omarchy-hyprland-monitor-external-active to query hyprctl monitors all -j instead of hyprctl monitors -j.
Patch
--- a/bin/omarchy-hyprland-monitor-external-active
+++ b/bin/omarchy-hyprland-monitor-external-active
@@ -3,4 +3,4 @@
# omarchy:summary=Returns true when Hyprland has an active external monitor
# omarchy:hidden=true
-hyprctl monitors -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1
+hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1Testing confirmed that hyprctl monitors all -j continues to report HDMI-A-1 with "disabled": false during active mirroring, preventing false auto-recover triggers.
View raw text
### System details
AMD Ryzen 7 5800H, GeForce RTX 3050 Mobile, Omarchy 4.0.0.r1645.g5edc349-1
### What's wrong?
## Summary
When toggling display mirroring using the default keybinding (`SUPER + CTRL + ALT + Delete` or `omarchy-hyprland-monitor-internal-mirror toggle`), Hyprland applies the mirror configuration, but Omarchy's monitor recovery daemon (`omarchy-hyprland-monitor-watch` / `sync_clamshell`) immediately reverts the display back to Extended Mode within seconds.
This happens because the background monitor check script (`omarchy-hyprland-monitor-external-active`) queries `hyprctl monitors -j`. In Hyprland, mirrored external outputs are omitted from `hyprctl monitors -j` (they are only listed in `hyprctl monitors all -j`). As a result, Omarchy incorrectly concludes that the external monitor was disconnected, triggering `omarchy-hyprland-monitor-internal-mirror recover` which deletes the mirror toggle file and forces extended mode.
---
## Environment
- **Omarchy version**: `4.0.0.r1645.g5edc349-1`
- **Hyprland version**: `0.56.2`
- **Kernel**: `7.1.7-arch1-1`
- **GPU**: NVIDIA GeForce RTX 3050 Mobile / AMD Cezanne [Radeon Vega Series] (Hybrid GPU)
- **Monitors**:
- Laptop internal: `eDP-1` (1920x1080@144Hz)
- External monitor: `HDMI-A-1` (HP 24mh 1920x1080@60Hz)
---
## Reproduction
1. Connect an external monitor (e.g. `HDMI-A-1`).
2. Press `SUPER + CTRL + ALT + Delete` (or run `omarchy-hyprland-monitor-internal-mirror toggle` in a terminal).
3. The notification "Mirroring enabled (HDMI-A-1)" appears briefly.
4. Within 1–3 seconds, the background watcher `omarchy-hyprland-monitor-watch` triggers `omarchy-hyprland-monitor-clamshell`, which calls `omarchy-hyprland-monitor-internal-mirror recover`.
5. The display immediately reverts back to Extended Mode.
---
## Evidence & Root Cause Analysis
### 1. Keybinding Execution
The shortcut runs `/usr/share/omarchy/bin/omarchy-hyprland-monitor-internal-mirror toggle`, which writes the toggle file:
`~/.local/state/omarchy/toggles/hypr/internal-monitor-mirror.lua`:
```lua
hl.monitor({ output = "HDMI-A-1", mode = "preferred", position = "auto", scale = 1, mirror = "eDP-1" })
```
and calls `hyprctl reload`.
### 2. Hyprland Behavior with Mirrored Displays
When `HDMI-A-1` is set to `mirror = "eDP-1"`, Hyprland removes `HDMI-A-1` from the active standalone monitor list returned by `hyprctl monitors -j`.
`HDMI-A-1` is **only** returned when calling `hyprctl monitors all -j`.
### 3. False Negative in External Monitor Detection
`/usr/share/omarchy/bin/omarchy-hyprland-monitor-external-active` currently executes:
```bash
hyprctl monitors -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1
```
Because `HDMI-A-1` is absent from `hyprctl monitors -j` while mirrored, this script returns exit status `1` (`External active: NO`).
### 4. Auto-Recovery Execution
`omarchy-hyprland-monitor-watch` triggers `sync_clamshell` -> `omarchy-hyprland-monitor-clamshell` -> `omarchy-hyprland-monitor-internal-mirror recover`.
`recover()` evaluates:
```bash
if ! omarchy-hyprland-monitor-external-active && omarchy-hyprland-toggle-enabled $TOGGLE; then
omarchy-hyprland-toggle $TOGGLE off
fi
```
Since `omarchy-hyprland-monitor-external-active` returned false, `recover()` assumes the external monitor was disconnected, deletes `internal-monitor-mirror.lua`, and restores Extended Mode.
---
## Proposed Solution
Update `/usr/share/omarchy/bin/omarchy-hyprland-monitor-external-active` to query `hyprctl monitors all -j` instead of `hyprctl monitors -j`.
### Patch
```diff
--- a/bin/omarchy-hyprland-monitor-external-active
+++ b/bin/omarchy-hyprland-monitor-external-active
@@ -3,4 +3,4 @@
# omarchy:summary=Returns true when Hyprland has an active external monitor
# omarchy:hidden=true
-hyprctl monitors -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1
+hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1
```
Testing confirmed that `hyprctl monitors all -j` continues to report `HDMI-A-1` with `"disabled": false` during active mirroring, preventing false auto-recover triggers.
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.
No decision has been recorded yet.