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.
Qt 6.12 upgrade breaks shell themes & menus: QtQuick.Color (QQuickColor) shadows qs.Commons.Color singleton
Reported by sanurielf · filed Oct 12, 2026 · open at source
R-5254 is the earliest report of this defect — filed Oct 8, 2026, open upstream. This report (filed Oct 12, 2026) describes the same defect, so it is folded under it in the inbox.
Decided by agents · verified· Oct 12, 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
System details
Apple M1 Pro (aarch64) [also reproduces across x86_64 systems], Omarchy 4.0.2-2, Hyprland 0.56.2, Quickshell 0.3.2-1, Qt 6.12.0 (qt6-declarative 6.12.0-1, qt6-base 6.12.0-2).
What's wrong?
Following the Qt 6.12.0 upgrade, triggering any menu or launcher overlay (Super+Space, Super+Alt+Space, omarchy-menu toggle) renders a 100% solid pitch black screen across the entire monitor. No menu card, rows, or text appear.
In addition, UI components across the shell log widespread runtime TypeErrors during property evaluation:
WARN scene: @Ui/Button.qml: TypeError: Cannot read property 'border' of undefined
WARN scene: @Ui/Button.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/PanelToolTip.qml: TypeError: Cannot read property 'border' of undefined
WARN scene: @Ui/PanelToolTip.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/PopupCard.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/TextField.qml: Unable to assign [undefined] to QColorRoot Cause Analysis
In Qt 6.12, QtQuick introduced a new built-in QML singleton named Color (backed by the C++ class QQuickColor).
In Omarchy Shell (/usr/share/omarchy/shell/), the central theme palette singleton is declared in Commons/qmldir as:
singleton Color 1.0 Color.qmlVirtually all QML files import both:
import QtQuick
import qs.CommonsBecause QtQuick now exports Color, it shadows qs.Commons.Color.
We verified this inside a minimal Quickshell test harness running under Qt 6.12:
import QtQuick
import Quickshell
import qs.Commons as Commons
import qs.Commons
// Evaluating identifiers:
console.log("Bare Color:", Color) // -> QQuickColor(...) [QtQuick built-in]
console.log("Color.menu:", Color.menu) // -> undefined
console.log("Commons.Color:", Commons.Color)// -> Color_QMLTYPE(...) [Omarchy singleton]
console.log("Commons.Color.menu.scrim:", Commons.Color.menu.scrim) // -> #80101315When Menu.qml evaluates:
property color scrim: Color.menu.scrim
property color background: Color.menu.background
property color border: Color.menu.borderColor.menuresolves toundefinedonQQuickColor.root.scrimreceivesundefined, which QML coerces to#000000(100% opaque black).- The fullscreen scrim
Rectangle { anchors.fill: parent; color: root.scrim }renders as an opaque solid black sheet covering the screen. - The
BorderSurfacecard fails withTypeError: Cannot read property 'border' of undefinedand fails to render.
This root cause directly explains both #15071 ("Super+Space launcher overlay renders 100% black") and #15085 ("Bar renders solid black with no text when bar.transparent=false / Color.bar undefined").
Steps to Reproduce
- Upgrade to Qt 6.12 (
pacman -Syuwithqt6-declarative 6.12.0-1). - Trigger the menu:
omarchy-menu toggleorSuper+Space. - The entire monitor turns solid black until the menu is closed.
View raw text
### System details
Apple M1 Pro (aarch64) [also reproduces across x86_64 systems], Omarchy 4.0.2-2, Hyprland 0.56.2, Quickshell 0.3.2-1, Qt 6.12.0 (`qt6-declarative 6.12.0-1`, `qt6-base 6.12.0-2`).
### What's wrong?
Following the Qt 6.12.0 upgrade, triggering any menu or launcher overlay (`Super+Space`, `Super+Alt+Space`, `omarchy-menu toggle`) renders a 100% solid pitch black screen across the entire monitor. No menu card, rows, or text appear.
In addition, UI components across the shell log widespread runtime TypeErrors during property evaluation:
```
WARN scene: @Ui/Button.qml: TypeError: Cannot read property 'border' of undefined
WARN scene: @Ui/Button.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/PanelToolTip.qml: TypeError: Cannot read property 'border' of undefined
WARN scene: @Ui/PanelToolTip.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/PopupCard.qml: TypeError: Cannot read property 'background' of undefined
WARN scene: @Ui/TextField.qml: Unable to assign [undefined] to QColor
```
### Root Cause Analysis
In **Qt 6.12**, `QtQuick` introduced a new built-in QML singleton named `Color` (backed by the C++ class `QQuickColor`).
In Omarchy Shell (`/usr/share/omarchy/shell/`), the central theme palette singleton is declared in `Commons/qmldir` as:
```qml
singleton Color 1.0 Color.qml
```
Virtually all QML files import both:
```qml
import QtQuick
import qs.Commons
```
Because `QtQuick` now exports `Color`, it **shadows** `qs.Commons.Color`.
We verified this inside a minimal Quickshell test harness running under Qt 6.12:
```qml
import QtQuick
import Quickshell
import qs.Commons as Commons
import qs.Commons
// Evaluating identifiers:
console.log("Bare Color:", Color) // -> QQuickColor(...) [QtQuick built-in]
console.log("Color.menu:", Color.menu) // -> undefined
console.log("Commons.Color:", Commons.Color)// -> Color_QMLTYPE(...) [Omarchy singleton]
console.log("Commons.Color.menu.scrim:", Commons.Color.menu.scrim) // -> #80101315
```
When `Menu.qml` evaluates:
```qml
property color scrim: Color.menu.scrim
property color background: Color.menu.background
property color border: Color.menu.border
```
1. `Color.menu` resolves to `undefined` on `QQuickColor`.
2. `root.scrim` receives `undefined`, which QML coerces to `#000000` (100% opaque black).
3. The fullscreen scrim `Rectangle { anchors.fill: parent; color: root.scrim }` renders as an opaque solid black sheet covering the screen.
4. The `BorderSurface` card fails with `TypeError: Cannot read property 'border' of undefined` and fails to render.
This root cause directly explains both **#15071** ("Super+Space launcher overlay renders 100% black") and **#15085** ("Bar renders solid black with no text when bar.transparent=false / Color.bar undefined").
### Steps to Reproduce
1. Upgrade to Qt 6.12 (`pacman -Syu` with `qt6-declarative 6.12.0-1`).
2. Trigger the menu: `omarchy-menu toggle` or `Super+Space`.
3. The entire monitor turns solid black until the menu is closed.
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.