aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/modules/appearance/WallEngine.qml
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-10-31 10:06:35 +0100
committerDanilo M. <danix@danix.xyz>2026-10-31 10:06:35 +0100
commite89994621d81168c6a5ee15adcb798e449bcc4f2 (patch)
tree1af77100b0e277fd2ba91d0ab6eefba71ce1c4d0 /desktop/modules/appearance/WallEngine.qml
parent8798809231f386de9bdd877246371a907bdf766f (diff)
downloadquickshell-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/WallEngine.qml')
-rw-r--r--desktop/modules/appearance/WallEngine.qml14
1 files changed, 14 insertions, 0 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