Proof Portal

Project overview

Omarchy

ProbeLabs65 findings · 95 requirements

A 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.

Inbox
ReportR-455GitHub issuePublicReceived

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

In the audited area (lock) — decided by agents · verified. Not validated yet.

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?
AreaIn the audited arealock· 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?
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

Black screen / full hang on unlock after idle screensaver: lock surface fails to attach ("not backed by a valid wayland output")revision 1 · captured 2026-09-28 21:23 UTC via poll

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.

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.