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-5349GitHub issuePublicDecided· Duplicate

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

Decided: Duplicate — decided by agents · verified 5 h ago.

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?
AreaPartly in the audited areamenu· 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

Qt 6.12 upgrade breaks shell themes & menus: QtQuick.Color (QQuickColor) shadows qs.Commons.Color singletonrevision 1 · captured 2026-10-12 02:06 UTC via poll

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:

singleton Color 1.0 Color.qml

Virtually all QML files import both:

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:

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:

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.
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

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.

  • DuplicateR-5254Decided by agents · verified · 2026-10-12 02:15 UTC