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

omarchy-shell exits when locking with a screen that has no valid Wayland output — bar disappears and the session is left on "lockscreen app died"

Reported by jfbourdeau · filed Aug 10, 2026Closed upstream on 2026-08-11 by the merge of PR #6692 (closed by dhh). GitHub close reason: completed.

Received and recorded verbatim. Nothing has been checked 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?
Not yet mapped to any requirement or component.
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. No decision has been recorded yet.

Original report

omarchy-shell exits when locking with a screen that has no valid Wayland output — bar disappears and the session is left on "lockscreen app died"revision 1 · captured 2026-10-04 11:56 UTC via poll

System details

Desktop PC, single monitor (Dell S3422DW on HDMI-A-1), Arch, # omarchy-dev 4.0.0.r1624.g03b825f, quickshell-git 0.3.0.r20.g28771c7 # (also reproduced on a Lenovo Yoga C640 laptop, same versions)

What's wrong?

"What's wrong?" field: everything below this line

---------------------------------------------------------------------------

Symptom. After the machine sits idle and locks, coming back gives Hyprland's
"Oopsie daisy, it looks like you locked your screen but the lockscreen app died"
screen — and after clearing it, the bar is gone too, because omarchy-shell
(quickshell) is no longer running at all. Happened three times on 2026-08-10
across two machines.

What the log shows. These are the final two lines the shell emits before the
process disappears:

DEBUG: Not creating lock surface for screen QScreen(0x…, name="") as it is not
       backed by a valid wayland output.
WARN:  The Wayland connection experienced a fatal error: Invalid argument

So the lock path encounters a screen with an **empty name / no valid Wayland
output**, correctly declines to create a lock surface for it — and then the Wayland
connection dies, taking the whole shell with it.

Two consequences, both bad:

  1. The session is locked with no lock client → Hyprland's dead-lock wall, which

needs a TTY (or another machine over SSH) to clear.
2. The shell is dead → no bar, no widgets, until it is started manually.

It writes no crash report. ~/.cache/quickshell/crashes/ stays empty, so nothing
surfaces the failure; the shell appears to have simply evaporated. The only trace is
journalctl --user | grep omarchy-shell.

Not a flaky-hardware artifact. On the desktop there is exactly one connected
output (HDMI-A-1), the other connectors report disconnected, and there are zero
EDID block 0 is all zeroes messages in the journal for that day. The invalid screen
appears transiently — most plausibly while the display sleeps or outputs are
reconfigured around the lock.

Aggravating detail: Hyprland's recovery text advises killall -9 hyprlock, but
hyprlock is not installed on Quattro — the lock is the omarchy.lock Quickshell
plugin. Anyone following that instruction literally hits a dead end. Recovery is
hyprctl --instance 0 eval 'hl.clear_crashed_lockscreen()', plus starting the shell
again.

Suggested fix. Treat "screen not backed by a valid wayland output" as skippable
without tearing down the Wayland connection, and re-arm the lock surface if a valid
output appears later. Failing that, having the shell restart itself rather than exit
would at least keep the bar and the lock alive.

Workaround in use here. A 30-second user timer that restarts quickshell when it
is not running. It deliberately does not clear a crashed lock, since
hl.clear_crashed_lockscreen() unlocks the session without a password — so the bar
comes back automatically, but unlocking still requires the user.

View raw text
### System details

#   Desktop PC, single monitor (Dell S3422DW on HDMI-A-1), Arch,  #   omarchy-dev 4.0.0.r1624.g03b825f, quickshell-git 0.3.0.r20.g28771c7  #   (also reproduced on a Lenovo Yoga C640 laptop, same versions)

### What's wrong?

# "What's wrong?" field: everything below this line

# ---------------------------------------------------------------------------

**Symptom.** After the machine sits idle and locks, coming back gives Hyprland's
*"Oopsie daisy, it looks like you locked your screen but the lockscreen app died"*
screen — and after clearing it, **the bar is gone too**, because `omarchy-shell`
(quickshell) is no longer running at all. Happened **three times on 2026-08-10**
across two machines.

**What the log shows.** These are the final two lines the shell emits before the
process disappears:

```
DEBUG: Not creating lock surface for screen QScreen(0x…, name="") as it is not
       backed by a valid wayland output.
WARN:  The Wayland connection experienced a fatal error: Invalid argument
```

So the lock path encounters a screen with an **empty name / no valid Wayland
output**, correctly declines to create a lock surface for it — and then the Wayland
connection dies, taking the whole shell with it.

**Two consequences, both bad:**

1. The session is locked with no lock client → Hyprland's dead-lock wall, which
   needs a TTY (or another machine over SSH) to clear.
2. The shell is dead → no bar, no widgets, until it is started manually.

**It writes no crash report.** `~/.cache/quickshell/crashes/` stays empty, so nothing
surfaces the failure; the shell appears to have simply evaporated. The only trace is
`journalctl --user | grep omarchy-shell`.

**Not a flaky-hardware artifact.** On the desktop there is exactly **one** connected
output (`HDMI-A-1`), the other connectors report `disconnected`, and there are **zero**
`EDID block 0 is all zeroes` messages in the journal for that day. The invalid screen
appears transiently — most plausibly while the display sleeps or outputs are
reconfigured around the lock.

**Aggravating detail:** Hyprland's recovery text advises `killall -9 hyprlock`, but
**hyprlock is not installed on Quattro** — the lock is the `omarchy.lock` Quickshell
plugin. Anyone following that instruction literally hits a dead end. Recovery is
`hyprctl --instance 0 eval 'hl.clear_crashed_lockscreen()'`, plus starting the shell
again.

**Suggested fix.** Treat "screen not backed by a valid wayland output" as skippable
without tearing down the Wayland connection, and re-arm the lock surface if a valid
output appears later. Failing that, having the shell restart itself rather than exit
would at least keep the bar and the lock alive.

**Workaround in use here.** A 30-second user timer that restarts `quickshell` when it
is not running. It deliberately does **not** clear a crashed lock, since
`hl.clear_crashed_lockscreen()` unlocks the session without a password — so the bar
comes back automatically, but unlocking still requires the user.

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.

No decision has been recorded yet.