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.
Internal laptop display never recovers after external monitor unplug: external-active check doesn't exclude Hyprland's FALLBACK placeholder output
Reported by Kilohertz77 · filed Sep 29, 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 laptop where the internal panel (eDP-1) is manually force-disabled while docked (via omarchy-hyprland-monitor-internal off, e.g. from a custom monitor.added hook in monitors.lua), unplugging the external monitor's cable leaves the internal display off permanently. It never recovers, even though Omarchy's monitor watcher (omarchy-hyprland-monitor-watch) is running and reacting to the monitorremoved/monitorremovedv2 events.
Expected behavior
Per the comments in the default monitors.lua template ("Omarchy's monitor watcher turns it back on again when the external one goes away"), the internal panel should be automatically re-enabled once no external monitor is connected.
Root cause
omarchy-hyprland-monitor-external-active is:
hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1When the internal panel is disabled and the external monitor is then unplugged, Hyprland refuses to leave the session with zero active outputs and substitutes an auto-generated placeholder monitor named FALLBACK (disabled: false). Since FALLBACK doesn't match the ^(eDP|LVDS|DSI)- exclusion pattern, omarchy-hyprland-monitor-external-active matches it and keeps returning true — "an external monitor is active" — indefinitely, even with nothing physically connected.
This check is used both by omarchy-hyprland-monitor-internal recover (called from omarchy-hyprland-monitor-clamshell, which the watcher invokes on every monitorremoved/monitoradded event and on a 2s poll while docked) and by omarchy-hyprland-monitor-clamshell's own enable_internal(). Both silently no-op because the check never flips to false, so the internal panel is never recovered — there's no error, no timeout, it's just stuck.
Steps to reproduce
- On a laptop with
omarchy-hw-clamshell-independent forced internal-disable while docked (e.g. via a customhl.on("monitor.added", ...)hook callingomarchy-hyprland-monitor-internal off, not requiring the lid to be closed), connect an external monitor. Internal panel correctly disables. - Unplug the external monitor's cable and leave it unplugged.
- Observe:
hyprctl monitors all -jnow shows aFALLBACKoutput in place of the real one,eDP-1stays"disabled": trueindefinitely, andomarchy-hyprland-monitor-external-activekeeps exiting 0 (true).
Live evidence
Captured via polling hyprctl monitors all -j and omarchy-hyprland-monitor-external-active once per second across an unplug event that was left disconnected:
14:02:50 ext_active=yes hw_ext=yes mons=[{"n":"eDP-1","d":true},{"n":"HDMI-A-1","d":false}]
14:02:51 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]
14:02:52 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]
...
14:03:44 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]hw_ext is omarchy-hw-external-monitors (sysfs DRM status, correctly reports "no" once physically disconnected). ext_active is omarchy-hyprland-monitor-external-active, which incorrectly stays "yes" for the entire ~53s window because of the FALLBACK output.
Suggested fix
Exclude the FALLBACK output (and any other Hyprland-internal placeholder outputs) in omarchy-hyprland-monitor-external-active, e.g.:
hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.name != "FALLBACK") | select(.disabled == false)' >/dev/null 2>&1System info
- Omarchy: 4.0.4-1
- Hyprland: 0.56.2 (commit
efb50993780079460b0cbed1363e2166a2de1d9f) - Kernel: 7.2.5-3-omarchy
- GPU: Intel HD Graphics 620 (Kaby Lake-U), i915 driver
- Laptop, single internal panel (
eDP-1) + one external monitor over HDMI
Workaround in the meantime
Added a second hl.on("monitor.removed", ...) hook in my own monitors.lua that re-checks for a real external monitor excluding FALLBACK and calls omarchy-hyprland-monitor-internal on directly when none is found, bypassing the broken built-in check.
View raw text
## What happened
On a laptop where the internal panel (`eDP-1`) is manually force-disabled while docked (via `omarchy-hyprland-monitor-internal off`, e.g. from a custom `monitor.added` hook in `monitors.lua`), unplugging the external monitor's cable leaves the internal display off **permanently**. It never recovers, even though Omarchy's monitor watcher (`omarchy-hyprland-monitor-watch`) is running and reacting to the `monitorremoved`/`monitorremovedv2` events.
## Expected behavior
Per the comments in the default `monitors.lua` template ("Omarchy's monitor watcher turns it back on again when the external one goes away"), the internal panel should be automatically re-enabled once no external monitor is connected.
## Root cause
`omarchy-hyprland-monitor-external-active` is:
```sh
hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.disabled == false)' >/dev/null 2>&1
```
When the internal panel is disabled and the external monitor is then unplugged, Hyprland refuses to leave the session with zero active outputs and substitutes an auto-generated placeholder monitor named `FALLBACK` (`disabled: false`). Since `FALLBACK` doesn't match the `^(eDP|LVDS|DSI)-` exclusion pattern, `omarchy-hyprland-monitor-external-active` matches it and keeps returning **true** — "an external monitor is active" — indefinitely, even with nothing physically connected.
This check is used both by `omarchy-hyprland-monitor-internal recover` (called from `omarchy-hyprland-monitor-clamshell`, which the watcher invokes on every `monitorremoved`/`monitoradded` event and on a 2s poll while docked) and by `omarchy-hyprland-monitor-clamshell`'s own `enable_internal()`. Both silently no-op because the check never flips to false, so the internal panel is never recovered — there's no error, no timeout, it's just stuck.
## Steps to reproduce
1. On a laptop with `omarchy-hw-clamshell`-independent forced internal-disable while docked (e.g. via a custom `hl.on("monitor.added", ...)` hook calling `omarchy-hyprland-monitor-internal off`, not requiring the lid to be closed), connect an external monitor. Internal panel correctly disables.
2. Unplug the external monitor's cable and leave it unplugged.
3. Observe: `hyprctl monitors all -j` now shows a `FALLBACK` output in place of the real one, `eDP-1` stays `"disabled": true` indefinitely, and `omarchy-hyprland-monitor-external-active` keeps exiting 0 (true).
## Live evidence
Captured via polling `hyprctl monitors all -j` and `omarchy-hyprland-monitor-external-active` once per second across an unplug event that was left disconnected:
```
14:02:50 ext_active=yes hw_ext=yes mons=[{"n":"eDP-1","d":true},{"n":"HDMI-A-1","d":false}]
14:02:51 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]
14:02:52 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]
...
14:03:44 ext_active=yes hw_ext=no mons=[{"n":"eDP-1","d":true},{"n":"FALLBACK","d":false}]
```
`hw_ext` is `omarchy-hw-external-monitors` (sysfs DRM `status`, correctly reports "no" once physically disconnected). `ext_active` is `omarchy-hyprland-monitor-external-active`, which incorrectly stays "yes" for the entire ~53s window because of the `FALLBACK` output.
## Suggested fix
Exclude the `FALLBACK` output (and any other Hyprland-internal placeholder outputs) in `omarchy-hyprland-monitor-external-active`, e.g.:
```sh
hyprctl monitors all -j | jq -e '.[] | select(.name | test("^(eDP|LVDS|DSI)-") | not) | select(.name != "FALLBACK") | select(.disabled == false)' >/dev/null 2>&1
```
## System info
- Omarchy: 4.0.4-1
- Hyprland: 0.56.2 (commit `efb50993780079460b0cbed1363e2166a2de1d9f`)
- Kernel: 7.2.5-3-omarchy
- GPU: Intel HD Graphics 620 (Kaby Lake-U), i915 driver
- Laptop, single internal panel (`eDP-1`) + one external monitor over HDMI
## Workaround in the meantime
Added a second `hl.on("monitor.removed", ...)` hook in my own `monitors.lua` that re-checks for a real external monitor excluding `FALLBACK` and calls `omarchy-hyprland-monitor-internal on` directly when none is found, bypassing the broken built-in check.
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
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 20:11 UTC