aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tests/wallp.bats21
-rw-r--r--wallp19
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" ]
+}
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"