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.
Black screen / full hang on unlock after idle screensaver: lock surface fails to attach ("not backed by a valid wayland output")
Reported by socalest1977 · filed Sep 16, 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?
- 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. So far: in the audited area (lock) — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.
Original report
What happened
Device idled normally (screensaver at 120s, lock at 150s per ~/.config/omarchy/shell.json). After ~15 minutes idle, pressing a key to wake did not show the lockscreen — monitors stayed black. Two blind password attempts were typed (unlock worked previously with same setup). System then fully froze — no further journal entries at all, required a hard powercycle.
Expected
Pressing a key after idle should wake the display and show the hyprlock prompt.
Log evidence (journalctl, previous boot)
Idle/lock cycle started normally:
15:22:44 idle-monitor: idle
15:22:44 idle-cycle-start: screensaver=120 lock=150
15:23:14 lock-armed: lock-timeoutOn wake attempt, the lock surface failed to attach to a real output:
15:28:22 idle-monitor: active
15:28:22 lock-system: activity-after-grace
15:28:22 process-start: lock omarchy-system-lock
15:28:24 omarchy-shell: WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick.
15:28:24 omarchy-shell: DEBUG: Not creating lock surface for screen QScreen(0x7c4e77e08ca0, name="") as it is not backed by a valid wayland output.
15:28:25 omarchy-shell: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.(repeats several times over 15:28:24–15:28:26)
Two blind unlock attempts against the black screen:
15:28:31 quickshell.service.pam.subprocess: Starting pam session ...
15:28:31 unix_chkpwd: password check failed for user (matthew)
15:28:34 quickshell.service.pam.subprocess: Failed to authenticate.
15:29:27 quickshell.service.pam.subprocess: Starting pam session ...
15:29:27 quickshell.service.pam.subprocess: Relaying pam message: "Password: " ...Journal for that boot ends mid this second attempt — no shutdown/reboot entry follows. This is a hard freeze, not a clean shutdown. Kernel log (i915) shows no GPU reset/hang error for this period, so the freeze appears to originate in the compositor/lock-surface path rather than the GPU driver.
Root cause (best guess from logs)
On wake from idle-DPMS-off, Hyprland appears to drop/re-enumerate the monitor as FALLBACK right as omarchy-system-lock (hyprlock via quickshell) tries to attach its lock surface. The lock surface gets no real wayland output, so nothing renders (black screen), while the session is still considered locked/waiting on auth — leaving no way to recover except a hard powercycle.
System details
- Omarchy: 4.0.4-1
- Hyprland: 0.56.2 (tag v0.56.2, commit efb5099)
- quickshell: 0.3.1-1
- Kernel: 7.2.5-3-omarchy
- CPU: Intel Core i5-8500T
- GPU: Intel UHD Graphics 630 (CoffeeLake-S GT2, iGPU only)
- idle config:
~/.config/omarchy/shell.json→idle.screensaver: 120,idle.lock: 150(defaults)
Steps to reproduce
- Leave device idle ~15+ minutes so screensaver (120s) then lock (150s) both trigger, monitors go to DPMS off.
- Press a key to wake.
- Intermittently: monitors stay black instead of showing hyprlock, and the session eventually hangs completely, requiring a hard power cycle.
Note: omarchy debug --no-sudo --print does not exist as a command on this Omarchy version (4.0.4-1) — omarchy commands --all has no debug entry, so no diagnostic bundle/URL is attached. Happy to provide fuller diagnostics if pointed at the right command for this version.
View raw text
## What happened Device idled normally (screensaver at 120s, lock at 150s per `~/.config/omarchy/shell.json`). After ~15 minutes idle, pressing a key to wake did not show the lockscreen — monitors stayed black. Two blind password attempts were typed (unlock worked previously with same setup). System then fully froze — no further journal entries at all, required a hard powercycle. ## Expected Pressing a key after idle should wake the display and show the hyprlock prompt. ## Log evidence (journalctl, previous boot) Idle/lock cycle started normally: ``` 15:22:44 idle-monitor: idle 15:22:44 idle-cycle-start: screensaver=120 lock=150 15:23:14 lock-armed: lock-timeout ``` On wake attempt, the lock surface failed to attach to a real output: ``` 15:28:22 idle-monitor: active 15:28:22 lock-system: activity-after-grace 15:28:22 process-start: lock omarchy-system-lock 15:28:24 omarchy-shell: WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick. 15:28:24 omarchy-shell: DEBUG: Not creating lock surface for screen QScreen(0x7c4e77e08ca0, name="") as it is not backed by a valid wayland output. 15:28:25 omarchy-shell: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked. ``` (repeats several times over 15:28:24–15:28:26) Two blind unlock attempts against the black screen: ``` 15:28:31 quickshell.service.pam.subprocess: Starting pam session ... 15:28:31 unix_chkpwd: password check failed for user (matthew) 15:28:34 quickshell.service.pam.subprocess: Failed to authenticate. 15:29:27 quickshell.service.pam.subprocess: Starting pam session ... 15:29:27 quickshell.service.pam.subprocess: Relaying pam message: "Password: " ... ``` Journal for that boot ends mid this second attempt — no shutdown/reboot entry follows. This is a hard freeze, not a clean shutdown. Kernel log (i915) shows no GPU reset/hang error for this period, so the freeze appears to originate in the compositor/lock-surface path rather than the GPU driver. ## Root cause (best guess from logs) On wake from idle-DPMS-off, Hyprland appears to drop/re-enumerate the monitor as `FALLBACK` right as `omarchy-system-lock` (hyprlock via quickshell) tries to attach its lock surface. The lock surface gets no real wayland output, so nothing renders (black screen), while the session is still considered locked/waiting on auth — leaving no way to recover except a hard powercycle. ## System details - Omarchy: 4.0.4-1 - Hyprland: 0.56.2 (tag v0.56.2, commit efb5099) - quickshell: 0.3.1-1 - Kernel: 7.2.5-3-omarchy - CPU: Intel Core i5-8500T - GPU: Intel UHD Graphics 630 (CoffeeLake-S GT2, iGPU only) - idle config: `~/.config/omarchy/shell.json` → `idle.screensaver: 120`, `idle.lock: 150` (defaults) ## Steps to reproduce 1. Leave device idle ~15+ minutes so screensaver (120s) then lock (150s) both trigger, monitors go to DPMS off. 2. Press a key to wake. 3. Intermittently: monitors stay black instead of showing hyprlock, and the session eventually hangs completely, requiring a hard power cycle. Note: `omarchy debug --no-sudo --print` does not exist as a command on this Omarchy version (4.0.4-1) — `omarchy commands --all` has no `debug` entry, so no diagnostic bundle/URL is attached. Happy to provide fuller diagnostics if pointed at the right command for this version.
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.
- Decided by agents · verified: in the audited area (lock)
The outcome (valid, duplicate, not a bug, …) is not decided yet.