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

omarchy-shell crashes (exit 255) on resume when FALLBACK monitor is removed, briefly showing Hyprland's lock-crashed screen

Reported by coloradobum · filed Sep 10, 2026 · open at source

Decided: Duplicate — decided by arbitration 2 days ago.

R-1659 is the earliest report of this defect — filed Aug 19, 2026, open upstream. This report (filed Sep 10, 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?
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 arbitration — agents disagreed and an independent third agent decided — see the decision.

Original report

omarchy-shell crashes (exit 255) on resume when FALLBACK monitor is removed, briefly showing Hyprland's lock-crashed screenrevision 1 · captured 2026-09-28 21:23 UTC via poll

Summary

On (almost) every resume from sleep, the Omarchy QML lock screen (omarchy-shell, built on quickshell) crashes with a fatal Wayland error while trying to draw a lock surface on the transient "FALLBACK" pseudo-monitor Hyprland creates during output re-init. This triggers Hyprland's generic "session lock client died" fallback screen (the built-in hl.clear_crashed_lockscreen() message). A watchdog then relaunches omarchy-shell about a second later, which recovers the stranded lock and shows the normal password prompt — so the machine stays locked/secure throughout, but the crash-and-recover is 100% reproducible on wake.

Environment

  • omarchy 4.0.3-1
  • quickshell 0.3.1-1
  • hyprland 0.56.2-2
  • Arch Linux

Steps to reproduce

  1. Let the machine idle-lock or manually lock (omarchy-shell lock), or just suspend/resume the laptop/desktop.
  2. Watch the monitor immediately after wake.

Observed behavior

Hyprland's generic lock-crash fallback screen appears for ~1 second:

Oopsie daisy, it looks like you locked your screen but the lockscreen app died :( ... hyprctl --instance 0 eval 'hl.clear_crashed_lockscreen()' ... killall -9 hyprlock

(Note: this message references hyprlock, which isn't even installed on my system — Omarchy's own QML lock screen is the actual session-lock client here, so the message is a bit misleading in this context, but that's a Hyprland-side generic message, not something Omarchy controls.)

It then self-recovers to the normal lock/password screen a moment later.

Root cause (from journalctl)

omarchy-shell[251864]:  DEBUG: Not creating lock surface for screen QScreen(0x7f1fad4e3180, name="") as it is not backed by a valid wayland output.
   ... (repeated for several QScreen instances) ...
omarchy-shell[251864]:   INFO qt.qpa.wayland: There are no outputs - creating placeholder screen
omarchy-shell[251864]:   WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick.
uwsm_hyprland.desktop[1067]: error in client communication (pid 251864)
omarchy-shell[251864]:   WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
omarchy-shell[251864]:   WARN: The Wayland connection experienced a fatal error: Invalid argument
omarchy-shell[257062]: Omarchy shell exited with status 255; relaunching.
omarchy-shell[257064]:   INFO: Launching config: "/usr/share/omarchy/shell/shell.qml"
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.755Z lock-stranded: recovering
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.756Z lock-requested
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.756Z lock-pending: screen-stabilizing

Sequence:
1. On resume, Hyprland briefly reports a synthetic "FALLBACK" monitor as outputs come back online.
2. omarchy-shell's QML/Wayland layer tries to create lock surfaces against screens not yet backed by a valid Wayland output, repeatedly failing (Not creating lock surface for screen ... not backed by a valid wayland output), then falls back to a placeholder screen.
3. Shortly after, the removal of the "FALLBACK" monitor isn't handled cleanly by quickshell.hyprland.ipc, and the Wayland connection dies fatally (Invalid argument), killing omarchy-shell (exit 255).
4. A supervisor relaunches omarchy-shell (Omarchy shell exited with status 255; relaunching.), which detects the orphaned lock (lock-stranded: recovering) and re-establishes it correctly.

This has happened on essentially every wake-from-sleep in my logs over the past few days (checked timestamps: 10:09, 11:23, 12:03, 13:02, etc. — same pattern every time).

Expected behavior

omarchy-shell should handle the transient FALLBACK monitor during output re-negotiation on resume without crashing the whole process — e.g. defer lock-surface creation until a real output is available, rather than hitting a fatal Wayland error.

Screenshot

Attached: the Hyprland fallback screen shown mid-crash.

View raw text
## Summary

On (almost) every resume from sleep, the Omarchy QML lock screen (`omarchy-shell`, built on `quickshell`) crashes with a fatal Wayland error while trying to draw a lock surface on the transient `"FALLBACK"` pseudo-monitor Hyprland creates during output re-init. This triggers Hyprland's generic "session lock client died" fallback screen (the built-in `hl.clear_crashed_lockscreen()` message). A watchdog then relaunches `omarchy-shell` about a second later, which recovers the stranded lock and shows the normal password prompt — so the machine stays locked/secure throughout, but the crash-and-recover is 100% reproducible on wake.

## Environment

- `omarchy` 4.0.3-1
- `quickshell` 0.3.1-1
- `hyprland` 0.56.2-2
- Arch Linux

## Steps to reproduce

1. Let the machine idle-lock or manually lock (`omarchy-shell lock`), or just suspend/resume the laptop/desktop.
2. Watch the monitor immediately after wake.

## Observed behavior

Hyprland's generic lock-crash fallback screen appears for ~1 second:

> Oopsie daisy, it looks like you locked your screen but the lockscreen app died :(
> ...
> hyprctl --instance 0 eval 'hl.clear_crashed_lockscreen()'
> ...
> killall -9 hyprlock

(Note: this message references `hyprlock`, which isn't even installed on my system — Omarchy's own QML lock screen is the actual session-lock client here, so the message is a bit misleading in this context, but that's a Hyprland-side generic message, not something Omarchy controls.)

It then self-recovers to the normal lock/password screen a moment later.

## Root cause (from journalctl)

```
omarchy-shell[251864]:  DEBUG: Not creating lock surface for screen QScreen(0x7f1fad4e3180, name="") as it is not backed by a valid wayland output.
   ... (repeated for several QScreen instances) ...
omarchy-shell[251864]:   INFO qt.qpa.wayland: There are no outputs - creating placeholder screen
omarchy-shell[251864]:   WARN: Layershell screen does not correspond to a real screen. Letting the compositor pick.
uwsm_hyprland.desktop[1067]: error in client communication (pid 251864)
omarchy-shell[251864]:   WARN quickshell.hyprland.ipc: Got removal for monitor "FALLBACK" which was not previously tracked.
omarchy-shell[251864]:   WARN: The Wayland connection experienced a fatal error: Invalid argument
omarchy-shell[257062]: Omarchy shell exited with status 255; relaunching.
omarchy-shell[257064]:   INFO: Launching config: "/usr/share/omarchy/shell/shell.qml"
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.755Z lock-stranded: recovering
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.756Z lock-requested
omarchy-shell[257064]:  DEBUG qml: omarchy lock 2026-09-10T16:09:02.756Z lock-pending: screen-stabilizing
```

Sequence:
1. On resume, Hyprland briefly reports a synthetic `"FALLBACK"` monitor as outputs come back online.
2. `omarchy-shell`'s QML/Wayland layer tries to create lock surfaces against screens not yet backed by a valid Wayland output, repeatedly failing (`Not creating lock surface for screen ... not backed by a valid wayland output`), then falls back to a placeholder screen.
3. Shortly after, the removal of the `"FALLBACK"` monitor isn't handled cleanly by `quickshell.hyprland.ipc`, and the Wayland connection dies fatally (`Invalid argument`), killing `omarchy-shell` (exit 255).
4. A supervisor relaunches `omarchy-shell` (`Omarchy shell exited with status 255; relaunching.`), which detects the orphaned lock (`lock-stranded: recovering`) and re-establishes it correctly.

This has happened on essentially every wake-from-sleep in my logs over the past few days (checked timestamps: 10:09, 11:23, 12:03, 13:02, etc. — same pattern every time).

## Expected behavior

`omarchy-shell` should handle the transient `FALLBACK` monitor during output re-negotiation on resume without crashing the whole process — e.g. defer lock-surface creation until a real output is available, rather than hitting a fatal Wayland error.

## Screenshot

Attached: the Hyprland fallback screen shown mid-crash.

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-1659Decided by arbitration · 2026-10-10 05:14 UTC