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

Shell tests launch visible surfaces on the active Hyprland compositor

Reported by wadewegner · filed Aug 15, 2026 · open at source

Received. Triage checks are recorded; 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?
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. So far: matches no known issue — decided by agents · verified. The outcome (valid, duplicate, not a bug, …) is not decided yet. See the decision.

Original report

Shell tests launch visible surfaces on the active Hyprland compositorrevision 1 · captured 2026-09-28 21:29 UTC via poll

System details

  • Omarchy 4.0.0-1 (Quattro)
  • Hyprland 0.56.2
  • Quickshell 0.3.0 (revision 28771c7c74b42e20afca0b1b63980cb46515537c)
  • Linux 7.1.8-arch1-3
  • Intel Core i7-9700, Intel UHD 630, NVIDIA GTX 1660 Ti
  • 3440x1440 display

What's wrong?

I ran ./test/all on a live Omarchy Quattro desktop and a temporary second Omarchy bar appeared and flickered. I traced it to shell tests launching their temporary Quickshell instance against the active Hyprland compositor.

You can reproduce it directly with:

bash test/shell.d/runtime-smoke-test.sh

The test launches:

quickshell -p /tmp/tmp.../omarchy/shell --no-color

It replaces HOME, the XDG paths, and OMARCHY_PATH, but inherits WAYLAND_DISPLAY and HYPRLAND_INSTANCE_SIGNATURE. The temporary shell therefore connects to the developer's active compositor.

Of the 12 shell tests that launch Quickshell, I confirmed these create host surfaces:

  • runtime-smoke-test.sh: background, bar, keyboard panel, menu, and OSD layers
  • manifest-entrypoints-test.sh: background and bar
  • screenshot-sanity-test.sh: background and bar, then a real screenshot of the display

The other nine did not create visible host layers during polling.

I also ran runtime-smoke-test.sh and manifest-entrypoints-test.sh against a second nested Hyprland compositor on wayland-2. Both passed, including the bar geometry assertions, and no temporary test layers appeared on the host desktop. Good news!

screenshot-sanity-test.sh reached grim but hung when pointed at the nested compositor. Since ./test/all intentionally excludes graphical acceptance tests, that test may fit better in the disposable VM acceptance suite.

I think the expected behavior is:

  • ./test/all never changes the active development desktop
  • Runtime and manifest tests use an isolated compositor while preserving their geometry assertions
  • Screenshot testing runs in the disposable graphical acceptance suite

This is related to #6743 and #6749, which fixed tests running when a compositor is unreachable. This is the other side of that problem: the compositor is reachable because it is the developer's real session.

View raw text
### System details

- Omarchy 4.0.0-1 (Quattro)
- Hyprland 0.56.2
- Quickshell 0.3.0 (revision `28771c7c74b42e20afca0b1b63980cb46515537c`)
- Linux 7.1.8-arch1-3
- Intel Core i7-9700, Intel UHD 630, NVIDIA GTX 1660 Ti
- 3440x1440 display

### What's wrong?

I ran `./test/all` on a live Omarchy Quattro desktop and a temporary second Omarchy bar appeared and flickered. I traced it to shell tests launching their temporary Quickshell instance against the active Hyprland compositor.

You can reproduce it directly with:

```bash
bash test/shell.d/runtime-smoke-test.sh
```

The test launches:

```text
quickshell -p /tmp/tmp.../omarchy/shell --no-color
```

It replaces `HOME`, the XDG paths, and `OMARCHY_PATH`, but inherits `WAYLAND_DISPLAY` and `HYPRLAND_INSTANCE_SIGNATURE`. The temporary shell therefore connects to the developer's active compositor.

Of the 12 shell tests that launch Quickshell, I confirmed these create host surfaces:

- `runtime-smoke-test.sh`: background, bar, keyboard panel, menu, and OSD layers
- `manifest-entrypoints-test.sh`: background and bar
- `screenshot-sanity-test.sh`: background and bar, then a real screenshot of the display

The other nine did not create visible host layers during polling.

I also ran `runtime-smoke-test.sh` and `manifest-entrypoints-test.sh` against a second nested Hyprland compositor on `wayland-2`. Both passed, including the bar geometry assertions, and no temporary test layers appeared on the host desktop. Good news!

`screenshot-sanity-test.sh` reached `grim` but hung when pointed at the nested compositor. Since `./test/all` intentionally excludes graphical acceptance tests, that test may fit better in the disposable VM acceptance suite.

I think the expected behavior is:

- `./test/all` never changes the active development desktop
- Runtime and manifest tests use an isolated compositor while preserving their geometry assertions
- Screenshot testing runs in the disposable graphical acceptance suite

This is related to #6743 and #6749, which fixed tests running when a compositor is unreachable. This is the other side of that problem: the compositor is reachable because it is the developer's real session.

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: matches no known issue

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