diff options
| -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" |
