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