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

Qt 6.12's new QtQuick.Color singleton shadows omarchy's Color singleton — menus/emoji/clipboard render as an opaque black screen

Reported by zerger · filed Oct 9, 2026 · open at source

Decided: Duplicate — decided by agents · verified 3 days ago.

R-5254 is the earliest report of this defect — filed Oct 8, 2026, open upstream. This report (filed Oct 9, 2026) describes the same defect, so it is folded under it in the inbox.

Decided by agents · verified· Oct 9, 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's new QtQuick.Color singleton shadows omarchy's Color singleton — menus/emoji/clipboard render as an opaque black screenrevision 1 · captured 2026-10-09 14:31 UTC via poll

System details

  • Omarchy 4.0.4-1, Hyprland 0.56.2-4, quickshell 0.3.2-1, qt6-base 6.12.0-2 / qt6-declarative 6.12.0-1 / qt6-wayland 6.12.0-1, AMD GPU, eDP-1 @ scale 1.5.

What's wrong?

Summary
After the Qt 6.11.2 → 6.12.0 upgrade, opening any omarchy menu (e.g. Super+K) paints the entire screen pure black; ESC closes it. Same for the emoji and clipboard overlays. The bar is also effectively invisible.
Root cause
Qt 6.12 introduced a new singleton in the QtQuick module:
/usr/lib/qt6/qml/QtQuick/plugins.qmltypes
file: "private/qquickcolor_p.h"
name: "QQuickColor"
exports: ["QtQuick/Color 6.12"]
isSingleton: true
This collides with omarchy's own Color singleton (shell/Commons/Color.qml, registered singleton Color 1.0 Color.qml). In shell QML files that do import QtQuick and import qs.Commons unqualified (e.g. shell/plugins/menu/Menu.qml), bare Color now resolves to QtQuick's Color, not omarchy's. So Color.menu.background, Color.menu.scrim, … are read off the wrong object.
Evidence
1. With the real qs.Commons module, in a fresh quickshell:
import qs.Commons as C
C.Color.menu.background -> #101315 (correct singleton)
bare Color -> QQuickColor (QtQuick's, wrong)
Color.menu -> undefined
Import order does not help — import QtQuick placed before import qs.Commons still yields QQuickColor.
2. Every shell start logs (shell/plugins/menu/Menu.qml[87-94]):
TypeError: Cannot read property 'background' of undefined
TypeError: Cannot read property 'text' of undefined
TypeError: Cannot read property 'border' of undefined
TypeError: Cannot read property 'scrim' of undefined
TypeError: Cannot read property 'selectedBackground' of undefined
TypeError: Cannot read property 'selectedText' of undefined
TypeError: Cannot read property 'selectedBorder' of undefined
Color.menu is a constant readonly object, so once a binding throws it never re-evaluates. QML's default color value is opaque black (verified in isolation: an unbound property color, and a throwing binding, both render (0,0,0)). Result: full-screen scrim + card + text all opaque black.
3. Confirming the trigger: qt6-declarative 6.11.2's QtQuick/plugins.qmltypes has no QQuickColor type and no QtQuick/Color export (only QtQuick/ColorSpace). Downgrading qt6-* to 6.11.2 + quickshell to 0.3.1-1 restores the menu (54374 distinct colors, background #1a1b26, no TypeErrors).
Impact
Menus, emoji picker, clipboard, and any other surface using bare Color are unusable under Qt 6.12.
Suggested fix
Qualify the singleton import in affected QML (import qs.Commons as Commons and use Commons.Color.*) or rename the Color singleton to something non-colliding (e.g. Theme). Files to update include plugins/menu/Menu.qml, plugins/emojis/Emojis.qml, plugins/clipboard/Clipboard.qml, plus any bar/widget files that reference bare Color.

View raw text
### System details

- Omarchy 4.0.4-1, Hyprland 0.56.2-4, quickshell 0.3.2-1, qt6-base 6.12.0-2 / qt6-declarative 6.12.0-1 / qt6-wayland 6.12.0-1, AMD GPU, eDP-1 @ scale 1.5.

### What's wrong?

Summary
After the Qt 6.11.2 → 6.12.0 upgrade, opening any omarchy menu (e.g. Super+K) paints the entire screen pure black; ESC closes it. Same for the emoji and clipboard overlays. The bar is also effectively invisible.
Root cause
Qt 6.12 introduced a new singleton in the QtQuick module:
/usr/lib/qt6/qml/QtQuick/plugins.qmltypes
file: "private/qquickcolor_p.h"
name: "QQuickColor"
exports: ["QtQuick/Color 6.12"]
isSingleton: true
This collides with omarchy's own Color singleton (shell/Commons/Color.qml, registered singleton Color 1.0 Color.qml). In shell QML files that do import QtQuick and import qs.Commons unqualified (e.g. shell/plugins/menu/Menu.qml), bare Color now resolves to QtQuick's Color, not omarchy's. So Color.menu.background, Color.menu.scrim, … are read off the wrong object.
Evidence
1. With the real qs.Commons module, in a fresh quickshell:
import qs.Commons as C
C.Color.menu.background  ->  #101315        (correct singleton)
bare Color               ->  QQuickColor    (QtQuick's, wrong)
Color.menu               ->  undefined
Import order does not help — import QtQuick placed before import qs.Commons still yields QQuickColor.
2. Every shell start logs (shell/plugins/menu/Menu.qml[87-94]):
TypeError: Cannot read property 'background' of undefined
TypeError: Cannot read property 'text' of undefined
TypeError: Cannot read property 'border' of undefined
TypeError: Cannot read property 'scrim' of undefined
TypeError: Cannot read property 'selectedBackground' of undefined
TypeError: Cannot read property 'selectedText' of undefined
TypeError: Cannot read property 'selectedBorder' of undefined
Color.menu is a constant readonly object, so once a binding throws it never re-evaluates. QML's default color value is opaque black (verified in isolation: an unbound property color, and a throwing binding, both render (0,0,0)). Result: full-screen scrim + card + text all opaque black.
3. Confirming the trigger: qt6-declarative 6.11.2's QtQuick/plugins.qmltypes has no QQuickColor type and no QtQuick/Color export (only QtQuick/ColorSpace). Downgrading qt6-* to 6.11.2 + quickshell to 0.3.1-1 restores the menu (54374 distinct colors, background #1a1b26, no TypeErrors).
Impact
Menus, emoji picker, clipboard, and any other surface using bare Color are unusable under Qt 6.12.
Suggested fix
Qualify the singleton import in affected QML (import qs.Commons as Commons and use Commons.Color.*) or rename the Color singleton to something non-colliding (e.g. Theme). Files to update include plugins/menu/Menu.qml, plugins/emojis/Emojis.qml, plugins/clipboard/Clipboard.qml, plus any bar/widget files that reference bare Color.

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-09 14:39 UTC