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-1219GitHub issuePublicDecided· Duplicate

Shell lock client dies on resume from suspend, showing Hyprland 'screensaver died' failsafe

Reported by MartinNielsen · filed Aug 30, 2026 · open at source

Decided: Duplicate — decided by agents · verified 3 days ago.

R-1659 is the earliest report of this defect — filed Aug 19, 2026, open upstream. This report (filed Aug 30, 2026) describes the same defect, so it is folded under it in the inbox. It was marked as a duplicate of R-709, which is itself a duplicate of R-1659.

Decided by agents · verified· Oct 8, 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?
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?
Decided by agents and verified by a second, independent agent — see the decision.

Original report

Shell lock client dies on resume from suspend, showing Hyprland 'screensaver died' failsaferevision 1 · captured 2026-09-28 21:24 UTC via poll

Summary

When the system resumes from suspend while the Omarchy shell holds the session lock (auto-lock after idle), the shell's Wayland connection dies with a protocol error. The lock client disappears while the session is still locked, so Hyprland shows its crashed-lockscreen failsafe ("Oops, looks like your screensaver died..."). The launcher then relaunches the shell, which re-acquires the lock and the user must unlock. Intermittent but recurring on every suspend cycle.

Expected behavior

The shell should survive resume from suspend without dropping its session-lock connection (or the lock state should be handled gracefully), so a resume never lands the user on Hyprland's failsafe screen.

What happens

Journal excerpt from the most recent occurrence (2026-08-30):

13:32:14 systemd[1]: Finished System Suspend.
13:32:14 systemd[1]: Starting NVIDIA system resume actions...   # hybrid NVIDIA laptop
13:32:16 systemd[890]: Started Lock Omarchy before suspend.
13:32:20 omarchy-shell[1089]: There are no outputs - creating placeholder screen
13:32:20 omarchy-shell[1089]: DEBUG: Not creating lock surface for screen QScreen(...) as it is not backed by a valid wayland output.
13:32:20 omarchy-shell[1089]: WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick.
13:32:21 omarchy-shell[1089]: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
13:32:21 uwsm_hyprland.desktop[1021]: error in client communication (pid 1089)
13:32:21 omarchy-shell[1089]: WARN: The Wayland connection experienced a fatal error: Invalid argument
13:32:22 omarchy-shell[62182]: Omarchy shell exited with status 255; relaunching.
13:32:23 omarchy-shell[62309]: INFO: Launching config: "/usr/share/omarchy/shell/shell.qml"
13:32:23 omarchy-shell[62309]: DEBUG qml: omarchy lock ... lock-stranded: recovering
13:32:23 omarchy-shell[62309]: DEBUG qml: omarchy lock ... lock-requested
13:32:24 omarchy-shell[62309]: DEBUG qml: omarchy lock ... secure=true
13:32:48 omarchy-shell[62309]: DEBUG qml: omarchy lock ... unlocked   # after user auth

Same pattern on a previous resume (2026-08-29 17:44:18 Finished System Suspend → 17:44:23 error in client communication (pid 1097) → Wayland connection experienced a fatal error: Invalid argument). Other resumes (e.g. 06:45, 13:30, 13:31) did not crash, so it is intermittent.

Likely trigger: the shell presents/reconfigures its lock surfaces (org.omarchy.screensaver, ext-session-lock) while Hyprland is still rebuilding outputs after resume (FALLBACK monitor, "no outputs", invalid wayland output warnings), and the compositor kills the connection during that window. omarchy-launch-shell already documents and supervises exactly this failure mode ("Qt leaves through _exit() when the Wayland connection fails ... no crash report, no relaunch, no bar") — it recovers, but the recovery path surfaces Hyprland's failsafe on screen and leaves the session locked, requiring re-authentication.

Steps to reproduce (intermittent)

  1. Hybrid NVIDIA (optimus) laptop, e.g. Dell XPS 9570 class.
  2. Let the system auto-lock (idle.lock) or lock, then suspend.
  3. Resume the system.
  4. Sometimes: Hyprland failsafe "Oops, screensaver died" screen; shell relaunches; re-type password.

System details

  • Omarchy version: 4.0.1-1
  • Hyprland: 0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f)
  • Kernel: 7.1.9-arch1-2
  • GPU: Intel HD 630 (Kaby Lake-H) + NVIDIA GTX 1050 Mobile (hybrid, nvidia-resume.service runs on resume)
  • Shell: quickshell via omarchy-launch-shell (systemd-cat tag omarchy-shell)
View raw text
## Summary

When the system resumes from suspend while the Omarchy shell holds the session lock (auto-lock after idle), the shell's Wayland connection dies with a protocol error. The lock client disappears while the session is still locked, so Hyprland shows its crashed-lockscreen failsafe ("Oops, looks like your screensaver died..."). The launcher then relaunches the shell, which re-acquires the lock and the user must unlock. Intermittent but recurring on every suspend cycle.

## Expected behavior

The shell should survive resume from suspend without dropping its session-lock connection (or the lock state should be handled gracefully), so a resume never lands the user on Hyprland's failsafe screen.

## What happens

Journal excerpt from the most recent occurrence (2026-08-30):

```
13:32:14 systemd[1]: Finished System Suspend.
13:32:14 systemd[1]: Starting NVIDIA system resume actions...   # hybrid NVIDIA laptop
13:32:16 systemd[890]: Started Lock Omarchy before suspend.
13:32:20 omarchy-shell[1089]: There are no outputs - creating placeholder screen
13:32:20 omarchy-shell[1089]: DEBUG: Not creating lock surface for screen QScreen(...) as it is not backed by a valid wayland output.
13:32:20 omarchy-shell[1089]: WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick.
13:32:21 omarchy-shell[1089]: WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
13:32:21 uwsm_hyprland.desktop[1021]: error in client communication (pid 1089)
13:32:21 omarchy-shell[1089]: WARN: The Wayland connection experienced a fatal error: Invalid argument
13:32:22 omarchy-shell[62182]: Omarchy shell exited with status 255; relaunching.
13:32:23 omarchy-shell[62309]: INFO: Launching config: "/usr/share/omarchy/shell/shell.qml"
13:32:23 omarchy-shell[62309]: DEBUG qml: omarchy lock ... lock-stranded: recovering
13:32:23 omarchy-shell[62309]: DEBUG qml: omarchy lock ... lock-requested
13:32:24 omarchy-shell[62309]: DEBUG qml: omarchy lock ... secure=true
13:32:48 omarchy-shell[62309]: DEBUG qml: omarchy lock ... unlocked   # after user auth
```

Same pattern on a previous resume (2026-08-29 17:44:18 `Finished System Suspend` → 17:44:23 `error in client communication (pid 1097)` → `Wayland connection experienced a fatal error: Invalid argument`). Other resumes (e.g. 06:45, 13:30, 13:31) did not crash, so it is intermittent.

Likely trigger: the shell presents/reconfigures its lock surfaces (`org.omarchy.screensaver`, ext-session-lock) while Hyprland is still rebuilding outputs after resume (`FALLBACK` monitor, "no outputs", invalid wayland output warnings), and the compositor kills the connection during that window. `omarchy-launch-shell` already documents and supervises exactly this failure mode ("Qt leaves through _exit() when the Wayland connection fails ... no crash report, no relaunch, no bar") — it recovers, but the recovery path surfaces Hyprland's failsafe on screen and leaves the session locked, requiring re-authentication.

## Steps to reproduce (intermittent)

1. Hybrid NVIDIA (optimus) laptop, e.g. Dell XPS 9570 class.
2. Let the system auto-lock (`idle.lock`) or lock, then suspend.
3. Resume the system.
4. Sometimes: Hyprland failsafe "Oops, screensaver died" screen; shell relaunches; re-type password.

## System details

- Omarchy version: 4.0.1-1
- Hyprland: 0.56.2 (commit efb50993780079460b0cbed1363e2166a2de1d9f)
- Kernel: 7.1.9-arch1-2
- GPU: Intel HD 630 (Kaby Lake-H) + NVIDIA GTX 1050 Mobile (hybrid, `nvidia-resume.service` runs on resume)
- Shell: quickshell via `omarchy-launch-shell` (systemd-cat tag `omarchy-shell`)

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

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.

  • DuplicateR-709Decided by agents · verified · 2026-10-08 21:51 UTC