From e89994621d81168c6a5ee15adcb798e449bcc4f2 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 31 Oct 2026 10:06:35 +0100 Subject: 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 --- desktop/modules/appearance/WallEngine.qml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'desktop/modules/appearance/WallEngine.qml') 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 -- cgit v1.2.3