diff options
| author | Danilo M. <danix@danix.xyz> | 2026-10-31 10:06:35 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-10-31 10:06:35 +0100 |
| commit | e89994621d81168c6a5ee15adcb798e449bcc4f2 (patch) | |
| tree | 1af77100b0e277fd2ba91d0ab6eefba71ce1c4d0 /desktop/modules/appearance | |
| parent | 8798809231f386de9bdd877246371a907bdf766f (diff) | |
| download | quickshell-e89994621d81168c6a5ee15adcb798e449bcc4f2.tar.gz quickshell-e89994621d81168c6a5ee15adcb798e449bcc4f2.zip | |
wallpaper: keep the pair the engine put up
The engine's ticks are light runs: udt-accent leaves GRUB, the homepage
and SDDM on the home pair. When a tick lands on a combination worth
keeping, there was no way to promote it short of re-picking both
images by hand.
"Keep this pair" reruns wallp on the current pair without
UDT_ROTATION, so the full run brings those three along, and makes it
the engine's home, so switching the engine off does not undo it. The
timer restarts, as after a pick by hand. The button shows only while
the engine is on and the pair up differs from home, so it hides once
kept.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Diffstat (limited to 'desktop/modules/appearance')
| -rw-r--r-- | desktop/modules/appearance/WallEngine.qml | 14 | ||||
| -rw-r--r-- | desktop/modules/appearance/WallpaperTab.qml | 9 | ||||
| -rw-r--r-- | desktop/modules/appearance/Wallpapers.qml | 3 |
3 files changed, 25 insertions, 1 deletions
diff --git a/desktop/modules/appearance/WallEngine.qml b/desktop/modules/appearance/WallEngine.qml index 54705f6..f8d96ac 100644 --- a/desktop/modules/appearance/WallEngine.qml +++ b/desktop/modules/appearance/WallEngine.qml @@ -135,6 +135,20 @@ Singleton { nextAt = Date.now() + timer.interval; } + // The pair up now differs from home only when a tick put it there, with + // the light run. + readonly property bool keepable: on + && (cfg.homeH !== Wallpapers.currentH || cfg.homeV !== Wallpapers.currentV) + // Liked what a tick put up: a full run of the same pair brings GRUB, the + // homepage and SDDM along, and it becomes home, so switching off does not + // undo that, and stays up a full interval like a pick by hand. + function keep() { + const h = Wallpapers.currentH, v = Wallpapers.currentV; + if (!keepable || !Wallpapers.run(h, v, "keep")) return; + Prefs.setWallEngine({ homeH: h, homeV: v }); + restartTimer(); + } + // A switch-off during a run cannot start its own; it goes when that run // finishes. property bool homeWaiting: false diff --git a/desktop/modules/appearance/WallpaperTab.qml b/desktop/modules/appearance/WallpaperTab.qml index 134c90e..136b24d 100644 --- a/desktop/modules/appearance/WallpaperTab.qml +++ b/desktop/modules/appearance/WallpaperTab.qml @@ -178,6 +178,15 @@ Column { onClicked: decided ? Wallpapers.upscaleFile(actions.staged) : Wallpapers.decide(actions.staged) } + // The engine's ticks are light runs; this makes the pair up + // now a full one and the engine's home (WallEngine.keep). + Tab { + visible: WallEngine.keepable + enabled: !Wallpapers.applying + text: "Keep this pair" + onClicked: WallEngine.keep() + } + // Apply and Reset are in the page header, with every settings // page's. // wallhaven-dl searches wallhaven.cc and finds larger diff --git a/desktop/modules/appearance/Wallpapers.qml b/desktop/modules/appearance/Wallpapers.qml index 73c1f25..582fb22 100644 --- a/desktop/modules/appearance/Wallpapers.qml +++ b/desktop/modules/appearance/Wallpapers.qml @@ -322,7 +322,8 @@ Singleton { } // What started the run in flight: "manual" (Apply), "tick" (the engine's - // timer) or "home" (the engine switched off). A tick is the light run, + // timer), "home" (the engine switched off) or "keep" (the pair up now, + // run in full). A tick is the light run, // UDT_ROTATION, which udt-accent reads; the others are full. property string kind: "" |
