diff options
| author | danix <danix@danix.xyz> | 2026-06-11 10:01:30 +0200 |
|---|---|---|
| committer | danix <danix@danix.xyz> | 2026-06-11 10:01:30 +0200 |
| commit | ba7ff8c7bc2f7b9316ad374b3f80b27829a553b7 (patch) | |
| tree | 1cfd14e2db65b55b46ca8492472246168967540a | |
| parent | dea3f129f3b834f367abfe477de342b9f0c1e620 (diff) | |
| download | wallp-ba7ff8c7bc2f7b9316ad374b3f80b27829a553b7.tar.gz wallp-ba7ff8c7bc2f7b9316ad374b3f80b27829a553b7.zip | |
feat: restore action (saved -> default fallback)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
| -rw-r--r-- | tests/wallp.bats | 21 | ||||
| -rw-r--r-- | wallp | 19 |
2 files changed, 40 insertions, 0 deletions
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" ] +} @@ -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" |
