From e28b0c695eedea63774c7d856c585d5c3ea7c73f Mon Sep 17 00:00:00 2001 From: Josh Symonds Date: Sat, 9 May 2026 14:51:39 -0700 Subject: [PATCH] Theme: expose tertiary on the singleton (was undefined in dynamic mode) (#2375) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dynamic-mode currentThemeData object at Theme.qml:447-468 omitted tertiary entirely, even though matugen generates it and writes it to the matugen colors JSON. As a result, Theme.tertiary returned undefined in dynamic mode, and any QML binding through .r/.g/.b/.a defaulted to white — visible as desaturated near-white highlights in the bar's ChromeShader (which mixes Theme.tertiary at highlight peaks). Two-line fix: - Add tertiary to the dynamic-mode currentThemeData via getMatugenColor - Add property color tertiary on the Theme singleton, falling back to secondary if tertiary is absent (covers the stock-theme path where tertiary is added separately via buildMatugenColorsFromTheme:1811) Fallback hex #efb8c8 is the M3 baseline tertiary (light pink) for dark mode, in case matugen output is missing. Theme.tertiary was already referenced at LockScreenContent.qml:737 so the property name is the right one. Co-authored-by: Claude Opus 4.7 (1M context) --- quickshell/Common/Theme.qml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/quickshell/Common/Theme.qml b/quickshell/Common/Theme.qml index cd7cecbd..05d806df 100644 --- a/quickshell/Common/Theme.qml +++ b/quickshell/Common/Theme.qml @@ -450,6 +450,7 @@ Singleton { "primaryText": getMatugenColor("on_primary", "#ffffff"), "primaryContainer": getMatugenColor("primary_container", "#1976d2"), "secondary": getMatugenColor("secondary", "#8ab4f8"), + "tertiary": getMatugenColor("tertiary", "#efb8c8"), "surface": getMatugenColor("surface", "#1a1c1e"), "surfaceText": getMatugenColor("on_background", "#e3e8ef"), "surfaceVariant": getMatugenColor("surface_variant", "#44464f"), @@ -522,6 +523,7 @@ Singleton { property color primaryText: currentThemeData.primaryText property color primaryContainer: currentThemeData.primaryContainer property color secondary: currentThemeData.secondary + property color tertiary: currentThemeData.tertiary || currentThemeData.secondary property color surface: currentThemeData.surface property color surfaceText: currentThemeData.surfaceText property color surfaceVariant: currentThemeData.surfaceVariant