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.
Super+Space launcher (omarchy menu) overlay is fully black: Color singleton is hollow/empty in plugin contexts
Reported by TamiAlQuida · filed Oct 11, 2026 · open at source
R-5254 is the earliest report of this defect — filed Oct 8, 2026, open upstream. This report (filed Oct 11, 2026) describes the same defect, so it is folded under it in the inbox.
Decided by agents · verified· Oct 11, 2026
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?
- 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
Bug: Super+Space (and other overlay panels) render as a fully black screen — Color singleton is hollow in plugin contexts
Summary
Pressing Super+Space (the Omarchy launcher/menu, omarchy.menu) makes the entire screen turn opaque black. No card/rows, no text appear. The same happens for the clipboard overlay, and the emojis overlay is black except the colored emoji glyphs. The bar works fine. This is not theme- or config-related — it reproduces identically on a fresh stock theme (catppuccin) with the user shell.toml removed.
Environment
- Omarchy 4.0.4-1 (stable channel), kernel
7.2.5-3-omarchy - GPU: NVIDIA RTX 4070 Ti, driver
615.78.08(open kernel module) - Hyprland
0.56.2, Quickshell0.3.2(all current; nothing newer available) - Single monitor 3840x2160@60, scale 1
Steps to reproduce
- Press Super+Space (bind:
omarchy-menu toggle,/usr/share/omarchy/default/hypr/bindings/utilities.lua:1). - Screen goes fully black.
grimof the output is 100% pure black (8294400 pixels, 1 unique color).
What should happen
A centered menu card with a dim scrim behind it, themed with the active theme (Color.menu.*).
Diagnostics
Layer stack while open (hyprctl layers): menu panel is a fullscreen overlay, alpha 1:
Layer level 3 (overlay): Layer ... xywh: 0 0 3840 2160, a: 1, namespace: omarchy-menuThe menu panel is plugins/menu/Menu.qml: PanelWindow (fullscreen, color "transparent") with a fullscreen scrim Rectangle { color: root.scrim }, card, and row text whose colors all come from Color.menu.* (Menu.qml:87-91,1045-1048).
Startup QML warnings (4161 lines; no errors on toggle): every shell surface fails to bind themed properties to a populated singleton, e.g. TypeError: Cannot read property 'border' of undefined in @Ui/Button.qml, @Ui/PopupCard.qml, @Ui/PanelToolTip.qml, plugins/bar/widgets/Tray.qml, plugins/menu/Menu.qml, plus Unable to assign [undefined] to QColor (@Ui/TextField.qml, @Ui/CursorSurface.qml, Bar.qml).
KEY: plugin contexts get an empty `Color` singleton. A minimal third-party test plugin (id: render-test, enabled via omarchy-shell shell setPluginEnabled render-test true) that paints an opaque fullscreen red rectangle composites perfectly (99.9% red + white text) — so the compositor/pipeline is not at fault. The same plugin logging import qs.Commons → Color.foreground, Color.background, Color.accent prints:
ColorTest fg=undefined
ColorTest bg=undefined
ColorTest accent=undefinedand Color.menu is undefined (access throws, stops logging). So Loader-loaded plugin contexts resolve Color.* to undefined; assigning undefined to a QML color: yields an invalid color rendered as opaque black. Hence the fullscreen scrim, card, and text are all black. Emoji glyphs and app icons are raster content, so they survive — matching the "icons visible but no text" report in light themes.
The bar is unaffected because it is instantiated in the shell root scope (shell.qml defaultBarComponent, sharing the singleton that gets populated by Color.qml's FileView on colors.toml/shell.toml), while plugin overlays (menu, clipboard, emojis, OSD) are loaded via Loader { source: url } and do not share that state.
Related: shell.qml already documents and works around this exact hazard ("relative-path imports do not share singleton state, which silently leaves consumers with their own empty copies") by property-injecting shared state into bar targets (configureBar), but the overlay plugins (Menu.qml, Clipboard.qml, Emojis.qml, Osd.qml) still import qs.Commons and read Color.menu.* directly — on this build those imports resolve to an empty copy.
Also observed: the [launcher] surface documented in default/themed/shell.toml.tpl does not exist in Commons/Color.qml (no launcher QtObject), so a user [launcher] section in ~/.config/omarchy/shell.toml is silently ignored.
Captures (available to attach)
/tmp/opencode/baseline-menu.png— menu open: 100% pure black screen./tmp/opencode/baseline-desktop.png— menu closed: bar + wallpaper render correctly./tmp/opencode/render-test.png— test overlay painting opaque red: renders perfectly (pipeline OK)./tmp/opencode/overlay-emojis.png— emojis overlay: black background, glyphs visible./tmp/opencode/overlay-clip.png— clipboard overlay: pure black.
Expected fix direction
Ensure plugin contexts resolve the same populated qs.Commons.Color (and other) singletons — e.g. property-inject the resolved tokens into overlay plugin roots as already done for bars, or make Menu.qml/Clipboard.qml/Emojis.qml/Osd.qml consume them the same way.
View raw text
## Bug: Super+Space (and other overlay panels) render as a fully black screen — Color singleton is hollow in plugin contexts
### Summary
Pressing Super+Space (the Omarchy launcher/menu, `omarchy.menu`) makes the **entire screen turn opaque black**. No card/rows, no text appear. The same happens for the clipboard overlay, and the emojis overlay is black except the colored emoji glyphs. The **bar works fine**. This is not theme- or config-related — it reproduces identically on a fresh stock theme (catppuccin) with the user shell.toml removed.
### Environment
- Omarchy **4.0.4-1** (stable channel), kernel `7.2.5-3-omarchy`
- GPU: NVIDIA RTX 4070 Ti, driver `615.78.08` (open kernel module)
- Hyprland `0.56.2`, Quickshell `0.3.2` (all current; nothing newer available)
- Single monitor 3840x2160@60, scale 1
### Steps to reproduce
1. Press Super+Space (bind: `omarchy-menu toggle`, `/usr/share/omarchy/default/hypr/bindings/utilities.lua:1`).
2. Screen goes fully black. `grim` of the output is **100% pure black** (8294400 pixels, 1 unique color).
### What should happen
A centered menu card with a dim scrim behind it, themed with the active theme (`Color.menu.*`).
### Diagnostics
**Layer stack while open** (`hyprctl layers`): menu panel is a fullscreen overlay, alpha 1:
```
Layer level 3 (overlay): Layer ... xywh: 0 0 3840 2160, a: 1, namespace: omarchy-menu
```
The menu panel is `plugins/menu/Menu.qml`: PanelWindow (fullscreen, color "transparent") with a fullscreen scrim `Rectangle { color: root.scrim }`, card, and row text whose colors all come from `Color.menu.*` (`Menu.qml:87-91,1045-1048`).
**Startup QML warnings** (4161 lines; no errors on toggle): every shell surface fails to bind themed properties to a populated singleton, e.g. `TypeError: Cannot read property 'border' of undefined` in `@Ui/Button.qml`, `@Ui/PopupCard.qml`, `@Ui/PanelToolTip.qml`, `plugins/bar/widgets/Tray.qml`, `plugins/menu/Menu.qml`, plus `Unable to assign [undefined] to QColor` (`@Ui/TextField.qml`, `@Ui/CursorSurface.qml`, `Bar.qml`).
**KEY: plugin contexts get an empty `Color` singleton.** A minimal third-party test plugin (`id: render-test`, enabled via `omarchy-shell shell setPluginEnabled render-test true`) that paints an opaque fullscreen red rectangle composites *perfectly* (99.9% red + white text) — so the compositor/pipeline is not at fault. The same plugin logging `import qs.Commons` → `Color.foreground`, `Color.background`, `Color.accent` prints:
```
ColorTest fg=undefined
ColorTest bg=undefined
ColorTest accent=undefined
```
and `Color.menu` is **undefined** (access throws, stops logging). So Loader-loaded plugin contexts resolve `Color.*` to undefined; assigning undefined to a QML `color:` yields an invalid color rendered as opaque black. Hence the fullscreen scrim, card, *and* text are all black. Emoji glyphs and app icons are raster content, so they survive — matching the "icons visible but no text" report in light themes.
The bar is unaffected because it is instantiated in the shell root scope (`shell.qml` `defaultBarComponent`, sharing the singleton that gets populated by `Color.qml`'s `FileView` on `colors.toml`/`shell.toml`), while plugin overlays (menu, clipboard, emojis, OSD) are loaded via `Loader { source: url }` and do not share that state.
Related: `shell.qml` already documents and works around this exact hazard ("relative-path imports do not share singleton state, which silently leaves consumers with their own empty copies") by property-injecting shared state into bar targets (`configureBar`), but the overlay plugins (`Menu.qml`, `Clipboard.qml`, `Emojis.qml`, `Osd.qml`) still `import qs.Commons` and read `Color.menu.*` directly — on this build those imports resolve to an empty copy.
Also observed: the `[launcher]` surface documented in `default/themed/shell.toml.tpl` does not exist in `Commons/Color.qml` (no `launcher` QtObject), so a user `[launcher]` section in `~/.config/omarchy/shell.toml` is silently ignored.
### Captures (available to attach)
- `/tmp/opencode/baseline-menu.png` — menu open: 100% pure black screen.
- `/tmp/opencode/baseline-desktop.png` — menu closed: bar + wallpaper render correctly.
- `/tmp/opencode/render-test.png` — test overlay painting opaque red: renders perfectly (pipeline OK).
- `/tmp/opencode/overlay-emojis.png` — emojis overlay: black background, glyphs visible.
- `/tmp/opencode/overlay-clip.png` — clipboard overlay: pure black.
### Expected fix direction
Ensure plugin contexts resolve the same populated `qs.Commons.Color` (and other) singletons — e.g. property-inject the resolved tokens into overlay plugin roots as already done for bars, or make `Menu.qml`/`Clipboard.qml`/`Emojis.qml`/`Osd.qml` consume them the same way.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
- Duplicate ofR-5254Menu is black after Qt 6.12.0 / quickshell 0.3.2 upgrade (Color singleton sub-objects undefined)· decided by agents · verified
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.