From ba7ff8c7bc2f7b9316ad374b3f80b27829a553b7 Mon Sep 17 00:00:00 2001 From: danix Date: Thu, 11 Jun 2026 10:01:30 +0200 Subject: feat: restore action (saved -> default fallback) Co-Authored-By: Claude Opus 4.8 --- tests/wallp.bats | 21 +++++++++++++++++++++ wallp | 19 +++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/tests/wallp.bats b/tests/wallp.bats index 11c319d..27595c7 100644 --- a/tests/wallp.bats +++ b/tests/wallp.bats @@ -193,3 +193,24 @@ teardown() { grep -q "wal --backend colorz -nq --theme mytheme -o $HOME/bin/wal.sh" "$HOME/calls.log" grep -q "notify-send" "$HOME/calls.log" } + +@test "restore uses persisted wallpapers" { + CONF_OUTPUT_H="DP-1"; CONF_OUTPUT_V="DP-3"; CONF_THEME="conf" + CONF_DEFAULT_H="$HOME/dh.png"; CONF_DEFAULT_V="$HOME/dv.png" + : > "$HOME/saved_h.png"; : > "$HOME/saved_v.png" + mkdir -p "$HOME/.config/wallp" + echo "$HOME/saved_h.png" > "$HOME/.config/wallp/wall_h" + echo "$HOME/saved_v.png" > "$HOME/.config/wallp/wall_v" + do_restore "" + grep -q "swaybg -o DP-1 -i $HOME/saved_h.png" "$HOME/calls.log" + grep -q "swaybg -o DP-3 -i $HOME/saved_v.png" "$HOME/calls.log" +} + +@test "restore falls back to conf defaults" { + CONF_OUTPUT_H="DP-1"; CONF_OUTPUT_V="DP-3"; CONF_THEME="conf" + : > "$HOME/dh.png"; : > "$HOME/dv.png" + CONF_DEFAULT_H="$HOME/dh.png"; CONF_DEFAULT_V="$HOME/dv.png" + do_restore "" + grep -q "swaybg -o DP-1 -i $HOME/dh.png" "$HOME/calls.log" + [ "$(cat "$HOME/.config/wallp/wall_h")" = "$HOME/dh.png" ] +} diff --git a/wallp b/wallp index 978e79a..851860a 100644 --- a/wallp +++ b/wallp @@ -180,6 +180,25 @@ apply_theme() { notify-send -u normal -t 5000 "color theme update" "setting color theme to: $theme" } +# Pick saved path for a logical output, else its conf default. +restore_path_for() { + local logical="$1" wf; wf="$(wall_file_for "$logical")" + if [ -s "$wf" ]; then cat "$wf"; return; fi + case "$logical" in + H) printf '%s\n' "$CONF_DEFAULT_H" ;; + V) printf '%s\n' "$CONF_DEFAULT_V" ;; + esac +} + +do_restore() { + local flag_theme="$1" logical file + for logical in H V; do + file="$(restore_path_for "$logical")" + apply_output "$logical" "$file" || true + done + finalize "$(resolve_theme "$flag_theme")" +} + finalize() { update_wpaper apply_theme "$1" -- cgit v1.2.3