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.
Shell tests launch visible surfaces on the active Hyprland compositor
Reported by wadewegner · filed Aug 15, 2026 · open at source
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
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.shThe test launches:
quickshell -p /tmp/tmp.../omarchy/shell --no-colorIt 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 layersmanifest-entrypoints-test.sh: background and barscreenshot-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/allnever 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.