Proof Portal
Omarchy
ProbeLabs65 findings · 95 requirementsA 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.
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.
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
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 argumentSo 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:
- 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 isjournalctl --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 zeroEDID 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 ishyprctl --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, sincehl.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.