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.
Undocking with the lid closed suspends with no active output: black screen after resume (clamshell race)
Reported by azzouzidk · filed Sep 26, 2026 · open at source
R-578 is the earliest report of this defect — filed Sep 14, 2026, open upstream. This report (filed Sep 26, 2026) describes the same defect, so it is folded under it in the inbox.
Decided by arbitration· Oct 10, 2026
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?
- 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 arbitration — agents disagreed and an independent third agent decided — see the decision.
Original report
System details
Framework Laptop 13 — AMD Ryzen AI 9 HX 370 / Radeon 890M, Omarchy 4.0.4-1, kernel 7.2.5-3-omarchy, Hyprland 0.56.2-2, Quickshell 0.3.1-1
What's wrong?
Undocking while the lid is closed can put the laptop to sleep with no active output and no lock surface. After waking up, the internal screen stays black and there's no way to recover without a hard reset. The kernel and userspace are still alive: network and services keep logging for minutes after the lid is opened.
Steps
1. Dock the laptop: an external monitor on a DisplayPort expansion card, plus a USB-C dock.
2. Close the lid. The laptop is docked, so HandleLidSwitchDocked=ignore keeps it awake. omarchy-system-lid-close → omarchy-hyprland-monitor-clamshell disables eDP-1 (internal-monitor-scale is written at this point).
3. With the lid still closed, unplug the monitor and the dock within a few seconds.
4. The laptop is now undocked with the lid closed, so logind suspends it immediately.
5. Later, open the lid: black screen, and no lock screen appears.
Journal (times in seconds)
22:42:29 systemd-logind: Lid closed. # docked -> ignored, eDP-1 disabled (clamshell)
22:42:31 kernel: [drm] DM_MST: stopping TM on aconnector # monitor + dock unplugged
22:42:31 kernel: usb 7-1.x: USB disconnect ...
22:42:33 systemd-logind: Suspending...
22:42:33 hyprpolkitagent: There are no outputs - creating placeholder screen
22:42:33 omarchy-shell: DEBUG: Not creating lock surface for screen QScreen(..., name="") as it is not backed by a valid wayland output.
22:42:33 omarchy-shell: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
22:42:34 kernel: PM: suspend entry (s2idle)
--- next morning ---
09:29:38 systemd-logind: Lid opened.
09:29:38 kernel: PM: suspend exit
(network, services keep logging normally until the forced power-off ~2 min later; no oops, no Hyprland coredump)The clamshell toggle directory was modified at 22:42:33, so the internal output was being re-enabled (clamshell flag removed + hyprctl reload) in the same second that the lock was requested and logind suspended. My reading is that suspend overtook the re-enable and lock. The session ended up locked with no lock surface on eDP-1, and nothing recreated one on resume, which leaves the screen black.
Expected: after undocking with the lid closed, the laptop sleeps with eDP-1 enabled and locked, and wakes to the lock screen.
Notes
- I've only seen this once and haven't tried to reproduce it deliberately. The diagnosis comes from the journal above. Resuming normally (lid close/open with nothing attached) works fine on this machine.
- Workaround: unplug external displays with the lid open.
- Possible fix direction: have the sleep lock (omarchy-system-sleep-lock / the PrepareForSleep path) wait until there is at least one enabled output with a lock surface. Or, on resume, re-run the clamshell reconcile and recreate lock surfaces for outputs that have none.
View raw text
### System details
Framework Laptop 13 — AMD Ryzen AI 9 HX 370 / Radeon 890M, Omarchy 4.0.4-1, kernel 7.2.5-3-omarchy, Hyprland 0.56.2-2, Quickshell 0.3.1-1
### What's wrong?
Undocking while the lid is closed can put the laptop to sleep with **no active output and no lock surface**. After waking up, the internal screen stays black and there's no way to recover without a hard reset. The kernel and userspace are still alive: network and services keep logging for minutes after the lid is opened.
**Steps**
1. Dock the laptop: an external monitor on a DisplayPort expansion card, plus a USB-C dock.
2. Close the lid. The laptop is docked, so `HandleLidSwitchDocked=ignore` keeps it awake. `omarchy-system-lid-close` → `omarchy-hyprland-monitor-clamshell` disables eDP-1 (internal-monitor-scale is written at this point).
3. With the lid still closed, unplug the monitor and the dock within a few seconds.
4. The laptop is now undocked with the lid closed, so logind suspends it immediately.
5. Later, open the lid: black screen, and no lock screen appears.
**Journal (times in seconds)**
```
22:42:29 systemd-logind: Lid closed. # docked -> ignored, eDP-1 disabled (clamshell)
22:42:31 kernel: [drm] DM_MST: stopping TM on aconnector # monitor + dock unplugged
22:42:31 kernel: usb 7-1.x: USB disconnect ...
22:42:33 systemd-logind: Suspending...
22:42:33 hyprpolkitagent: There are no outputs - creating placeholder screen
22:42:33 omarchy-shell: DEBUG: Not creating lock surface for screen QScreen(..., name="") as it is not backed by a valid wayland output.
22:42:33 omarchy-shell: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
22:42:34 kernel: PM: suspend entry (s2idle)
--- next morning ---
09:29:38 systemd-logind: Lid opened.
09:29:38 kernel: PM: suspend exit
(network, services keep logging normally until the forced power-off ~2 min later; no oops, no Hyprland coredump)
```
The clamshell toggle directory was modified at 22:42:33, so the internal output was being re-enabled (clamshell flag removed + `hyprctl reload`) in the same second that the lock was requested and logind suspended. My reading is that suspend overtook the re-enable and lock. The session ended up locked with no lock surface on eDP-1, and nothing recreated one on resume, which leaves the screen black.
**Expected:** after undocking with the lid closed, the laptop sleeps with eDP-1 enabled and locked, and wakes to the lock screen.
**Notes**
- I've only seen this once and haven't tried to reproduce it deliberately. The diagnosis comes from the journal above. Resuming normally (lid close/open with nothing attached) works fine on this machine.
- Workaround: unplug external displays with the lid open.
- Possible fix direction: have the sleep lock (`omarchy-system-sleep-lock` / the PrepareForSleep path) wait until there is at least one enabled output with a lock surface. Or, on resume, re-run the clamshell reconcile and recreate lock surfaces for outputs that have none.
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/13480· confirmed
- Related PRpr/7196· confirmed
- Duplicate ofR-578Quickshell lock freezes on display wake after 4.0.3: session stays locked with no lock surface (no-real-screen)· decided by arbitration
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.