Apply shell theme if background reveal stalls

This commit is contained in:
David Heinemeier Hansson
2026-06-22 19:52:35 +02:00
parent eb3cb5225c
commit cdd833facb
2 changed files with 16 additions and 0 deletions
+9
View File
@@ -66,10 +66,12 @@ Item {
pendingColorsRaw = Util.decodeBase64(colorsB64)
pendingShellRaw = Util.decodeBase64(shellB64)
pendingThemeVersion = backgroundVersion
pendingThemeFallbackTimer.restart()
}
function applyPendingTheme() {
if (pendingThemeVersion !== backgroundVersion) return
pendingThemeFallbackTimer.stop()
Color.loadColors(pendingColorsRaw)
// Color.loadShell also refreshes Style so the type scale flips with the
// background reveal instead of waiting for a separate reload path.
@@ -154,6 +156,13 @@ Item {
onTriggered: root.refreshBackground()
}
Timer {
id: pendingThemeFallbackTimer
interval: 300
repeat: false
onTriggered: root.applyPendingTheme()
}
NumberAnimation {
id: revealAnimation
target: root
+7
View File
@@ -10,4 +10,11 @@ assert(
/theme=\$\(omarchy-theme-switcher\); \[\[ -n \$theme \]\] && omarchy-theme-set \\"\$theme\\" >\/dev\/null 2>&1 &/.test(backgroundQml),
'background theme switcher starts theme application asynchronously after selection'
)
assert(
backgroundQml.includes('pendingThemeFallbackTimer.restart()') &&
backgroundQml.includes('pendingThemeFallbackTimer.stop()') &&
backgroundQml.includes('id: pendingThemeFallbackTimer'),
'background theme transition applies pending colors even if image reveal stalls'
)
JS