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-850GitHub issuePublicDecided· Out of scope

omarchy-launch-shell treats IPC exit 0 as a stop; a failed replacement leaves no bar

Reported by gw7523 · filed Sep 7, 2026 · open at source

Decided: Out of scope — decided by agents · verified 3 days ago.

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?
AreaOutside the audited area· 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

omarchy-launch-shell treats IPC exit 0 as a stop; a failed replacement leaves no barrevision 1 · captured 2026-09-28 21:23 UTC via poll

System details

Intel Core Ultra 5 225, NVIDIA GeForce RTX 5080, Omarchy 4.0.2-1, Hyprland 0.56.2

What's wrong?

omarchy-launch-shell documents a clean Quickshell exit as a deliberate stop:

# A clean exit is a deliberate stop
# (omarchy-restart-shell starts its own replacement)
(( status == 0 )) && exit 0

omarchy-restart-shell kills the running config (quickshell kill …) then hyprctl dispatch exec_cmd("omarchy-launch-shell"). The old supervisor sees exit 0 and leaves. That is fine if the new launcher stays up.

It is not fine when the replacement dies in the same window:

  1. Plugin hot-reload storm (recursive inotify on ~/.config/omarchy/plugins, including git checkouts) makes the shell IPC-exit or fail to come up.
  2. Journal: Exiting due to IPC request, then An instance of this configuration is already running.
  3. The supervisor has already exited on status 0, so nothing relaunches.
  4. Bar, Super binds that go through the shell, idle, and screensaver stay dead. This seat sat that way from 12:22 until 15:20.

Expected: a graphical session that still has Hyprland should not be left without a shell after an IPC restart + failed replacement. Either:

  • omarchy-launch-shell should relaunch on exit 0 while the compositor is alive, unless an explicit stop sentinel is present, or
  • omarchy-restart-shell should start the new supervisor before killing (or stay in the loop until ping succeeds and start another launcher if it does not)

We work around this with a user-unit that pings every 5s and only calls omarchy-launch-shell if no Quickshell process is alive (ping from the unit env can fail while the bar is up). That should not be required for stock.

View raw text
### System details

Intel Core Ultra 5 225, NVIDIA GeForce RTX 5080, Omarchy 4.0.2-1, Hyprland 0.56.2

### What's wrong?

`omarchy-launch-shell` documents a clean Quickshell exit as a deliberate stop:

```
# A clean exit is a deliberate stop
# (omarchy-restart-shell starts its own replacement)
(( status == 0 )) && exit 0
```

`omarchy-restart-shell` kills the running config (`quickshell kill …`) then `hyprctl dispatch exec_cmd("omarchy-launch-shell")`. The **old** supervisor sees exit 0 and leaves. That is fine if the new launcher stays up.

It is not fine when the replacement dies in the same window:

1. Plugin hot-reload storm (recursive inotify on `~/.config/omarchy/plugins`, including git checkouts) makes the shell IPC-exit or fail to come up.
2. Journal: `Exiting due to IPC request`, then `An instance of this configuration is already running.`
3. The supervisor has already exited on status 0, so nothing relaunches.
4. Bar, Super binds that go through the shell, idle, and screensaver stay dead. This seat sat that way from 12:22 until 15:20.

Expected: a graphical session that still has Hyprland should not be left without a shell after an IPC restart + failed replacement. Either:

- `omarchy-launch-shell` should relaunch on exit 0 while the compositor is alive, unless an explicit stop sentinel is present, or
- `omarchy-restart-shell` should start the new supervisor **before** killing (or stay in the loop until ping succeeds and start another launcher if it does not)

We work around this with a user-unit that pings every 5s and only calls `omarchy-launch-shell` if no Quickshell process is alive (ping from the unit env can fail while the bar is up). That should not be required for stock.

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.

  • Out of scopeDecided by agents · verified · 2026-10-09 11:06 UTC