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-578GitHub issuePublicReceived

Quickshell lock freezes on display wake after 4.0.3: session stays locked with no lock surface (no-real-screen)

Reported by joachim162 · filed Sep 14, 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; matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Quickshell lock freezes on display wake after 4.0.3: session stays locked with no lock surface (no-real-screen)revision 1 · captured 2026-09-28 21:23 UTC via poll

Summary

After the Omarchy 4.0.3 update, the Quickshell lock screen intermittently freezes: after unlocking/waking the display the session stays locked with no visible lock surface, mouse and keyboard input are dead, and the only recovery is a hard reboot.

Environment

  • Omarchy 4.0.3-1, omarchy-settings 4.0.3-1, quickshell 0.3.1-1
  • Hyprland 0.56.2-2, hyprutils 0.14.2-1, hyprland-guiutils 0.2.2-3, qt6-base 6.11.2-3
  • Intel i5-8600K, NVIDIA GTX 1070 Ti (proprietary driver), kernel 7.2.3-arch1-3
  • Host monitor config: DP-2 (LG ULTRAGEAR 2560x1440) active, HDMI-A-1 disabled
  • idle.lock=300, idle.screensaver=150

Steps to reproduce

  1. Sit idle until the lock engages (or lock manually).
  2. The lock engages normally (omarchy lock lock-requested -> secure=true, lock surface renders).
  3. Wait for the display to blank (~5s, display off), then move the mouse to wake.
  4. The screen stays frozen/black: no lock UI, keyboard and mouse input dead.
  5. The shell restarts and gets stuck in a "no-real-screen" state; only a reboot restores the session.

What happens (from \journalctl --user\)

Boot -2:

11:22:50 omarchy-shell: omarchy lock ... lock-requested
11:22:50 omarchy-shell: omarchy lock ... lock-pending: screen-stabilizing
11:22:50 omarchy-shell: omarchy lock ... secure=true
11:25:17 omarchy-shell: qt.qpa.wayland: There are no outputs - creating placeholder screen
11:25:17 omarchy-shell: Not creating lock surface for screen QScreen(..., name="") as it is not backed by a valid wayland output.
... repeated ...
11:25:19 omarchy-shell: quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
11:26:55 omarchy-shell: Omarchy shell exited with status 143; relaunching.
11:26:57 omarchy-shell: omarchy lock ... lock-stranded: recovering
11:26:57 omarchy-shell: omarchy lock ... lock-pending: no-real-screen

Boot -1 (same pattern):

11:56:55 omarchy lock ... lock-requested / secure=true
12:07:17 qt.qpa.wayland: There are no outputs - creating placeholder screen
12:07:17 Not creating lock surface for screen QScreen(...) as it is not backed by a valid wayland output.
12:07:19 quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.

Root-cause analysis

When the display is woken while the session lock is held, all Wayland outputs are briefly removed (Hyprland drops to its FALLBACK monitor). Quickshell destroys the lock surfaces for the real screens and, once they come back, refuses to create new lock surfaces because Qt/QQuick still reports a placeholder screen (name="") that "is not backed by a valid wayland output". The session lock stays held (secure=true) but no lock surface exists: frozen screen, dead input, forced reboot.

Suspects in the new (4.0.2/4.0.3) code path:
- The idle-lock display-blank/wake cycle (omarchy-brightness-display off after lock + omarchy-system-wake on input) races with omarchy-hyprland-monitor-watch's recover_modeless loop, which issues hyprctl reload while the session is locked — this is what drops all outputs to FALLBACK.
- The lock service's lock-pending: no-real-screen path (screens count of 0) means a reloaded shell never re-arms sessionLock.locked=true once real screens return.

This did not happen before the Sep 12 update (Omarchy 4.0.1 / hyprland 0.56.2-1 / qt6-base 6.11.2-2).

Notes

  • Intermittent: boot -3 of the same day unlocked normally; boots -2 and -1 froze.
  • Workaround used meanwhile: set \idle.lock\ to a large value (e.g. 43200) in \~/.config/omarchy/shell.json\ to disable auto-lock until fixed.
  • The user has a monitor that is turned off via \hl.dsp.dpms({ action = \"disable\" })\, external-only setup (no laptop panel).
View raw text
## Summary

After the Omarchy 4.0.3 update, the Quickshell lock screen intermittently freezes: after unlocking/waking the display the session stays locked with no visible lock surface, mouse and keyboard input are dead, and the only recovery is a hard reboot.

## Environment

- Omarchy 4.0.3-1, omarchy-settings 4.0.3-1, quickshell 0.3.1-1
- Hyprland 0.56.2-2, hyprutils 0.14.2-1, hyprland-guiutils 0.2.2-3, qt6-base 6.11.2-3
- Intel i5-8600K, NVIDIA GTX 1070 Ti (proprietary driver), kernel 7.2.3-arch1-3
- Host monitor config: DP-2 (LG ULTRAGEAR 2560x1440) active, HDMI-A-1 disabled
- idle.lock=300, idle.screensaver=150

## Steps to reproduce

1. Sit idle until the lock engages (or lock manually).
2. The lock engages normally (`omarchy lock lock-requested` -> `secure=true`, lock surface renders).
3. Wait for the display to blank (~5s, display off), then move the mouse to wake.
4. The screen stays frozen/black: no lock UI, keyboard and mouse input dead.
5. The shell restarts and gets stuck in a "no-real-screen" state; only a reboot restores the session.

## What happens (from \`journalctl --user\`)

Boot -2:

```
11:22:50 omarchy-shell: omarchy lock ... lock-requested
11:22:50 omarchy-shell: omarchy lock ... lock-pending: screen-stabilizing
11:22:50 omarchy-shell: omarchy lock ... secure=true
11:25:17 omarchy-shell: qt.qpa.wayland: There are no outputs - creating placeholder screen
11:25:17 omarchy-shell: Not creating lock surface for screen QScreen(..., name="") as it is not backed by a valid wayland output.
... repeated ...
11:25:19 omarchy-shell: quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
11:26:55 omarchy-shell: Omarchy shell exited with status 143; relaunching.
11:26:57 omarchy-shell: omarchy lock ... lock-stranded: recovering
11:26:57 omarchy-shell: omarchy lock ... lock-pending: no-real-screen
```

Boot -1 (same pattern):

```
11:56:55 omarchy lock ... lock-requested / secure=true
12:07:17 qt.qpa.wayland: There are no outputs - creating placeholder screen
12:07:17 Not creating lock surface for screen QScreen(...) as it is not backed by a valid wayland output.
12:07:19 quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
```

## Root-cause analysis

When the display is woken while the session lock is held, all Wayland outputs are briefly removed (Hyprland drops to its `FALLBACK` monitor). Quickshell destroys the lock surfaces for the real screens and, once they come back, refuses to create new lock surfaces because Qt/QQuick still reports a placeholder screen (`name=""`) that "is not backed by a valid wayland output". The session lock stays held (`secure=true`) but no lock surface exists: frozen screen, dead input, forced reboot.

Suspects in the new (4.0.2/4.0.3) code path:
- The idle-lock display-blank/wake cycle (`omarchy-brightness-display off` after lock + `omarchy-system-wake` on input) races with `omarchy-hyprland-monitor-watch`'s `recover_modeless` loop, which issues `hyprctl reload` while the session is locked — this is what drops all outputs to `FALLBACK`.
- The lock service's `lock-pending: no-real-screen` path (`screens` count of 0) means a reloaded shell never re-arms `sessionLock.locked=true` once real screens return.

This did not happen before the Sep 12 update (Omarchy 4.0.1 / hyprland 0.56.2-1 / qt6-base 6.11.2-2).

## Notes

- Intermittent: boot -3 of the same day unlocked normally; boots -2 and -1 froze.
- Workaround used meanwhile: set \`idle.lock\` to a large value (e.g. 43200) in \`~/.config/omarchy/shell.json\` to disable auto-lock until fixed.
- The user has a monitor that is turned off via \`hl.dsp.dpms({ action = \"disable\" })\`, external-only setup (no laptop panel).

Also reported as

R-578 is the earliest report of this defect, filed Sep 14, 2026. 1 later report describes the same defect.

  1. Sep 14, 2026R-578 · this report— the original
  2. ·Decided by arbitration

    Open upstream.

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)
  • Decided by agents · verified: matches no known issue

The outcome (valid, duplicate, not a bug, …) is not decided yet.