aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordanix <danix@danix.xyz>2026-06-11 09:47:08 +0200
committerdanix <danix@danix.xyz>2026-06-11 09:47:08 +0200
commitc20cfb9423a48ca4ded7e6b7b3cd014a60499e33 (patch)
tree4aafb727d415d9e31e45768535b3f68ff85fbe1c
parentb72a81a3a4becee8c388b9d110cb650ac26f1ebf (diff)
downloadwallp-c20cfb9423a48ca4ded7e6b7b3cd014a60499e33.tar.gz
wallp-c20cfb9423a48ca4ded7e6b7b3cd014a60499e33.zip
feat: theme resolution + persistence
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-rw-r--r--tests/wallp.bats25
-rw-r--r--wallp17
2 files changed, 42 insertions, 0 deletions
diff --git a/tests/wallp.bats b/tests/wallp.bats
index 298067f..0ffed89 100644
--- a/tests/wallp.bats
+++ b/tests/wallp.bats
@@ -80,3 +80,28 @@ teardown() {
[ "$?" -eq 0 ]
[ "$CONF_THEME" = "sexy-splurge" ]
}
+
+@test "resolve_theme flag wins over all" {
+ CONF_THEME="conf"; mkdir -p "$HOME/.config/wallp"
+ echo persisted > "$HOME/.config/wallp/theme"
+ run resolve_theme flagged
+ [ "$output" = "flagged" ]
+}
+
+@test "resolve_theme persisted beats conf" {
+ CONF_THEME="conf"; mkdir -p "$HOME/.config/wallp"
+ echo persisted > "$HOME/.config/wallp/theme"
+ run resolve_theme ''
+ [ "$output" = "persisted" ]
+}
+
+@test "resolve_theme uses conf when no persisted" {
+ CONF_THEME="conf"
+ run resolve_theme ''
+ [ "$output" = "conf" ]
+}
+
+@test "persist_theme writes the file" {
+ persist_theme "abc"
+ [ "$(cat "$HOME/.config/wallp/theme")" = "abc" ]
+}
diff --git a/wallp b/wallp
index fc1ed99..6f14341 100644
--- a/wallp
+++ b/wallp
@@ -78,6 +78,23 @@ load_conf() {
return 0
}
+theme_file() { printf '%s\n' "$HOME/.config/wallp/theme"; }
+
+persist_theme() {
+ local f; f="$(theme_file)"
+ mkdir -p "$(dirname "$f")"
+ printf '%s\n' "$1" > "$f"
+}
+
+# Precedence: flag arg > persisted file > CONF_THEME > sexy-splurge.
+resolve_theme() {
+ local flag="$1" f; f="$(theme_file)"
+ if [ -n "$flag" ]; then printf '%s\n' "$flag"; return; fi
+ if [ -s "$f" ]; then head -n1 "$f"; return; fi
+ if [ -n "${CONF_THEME:-}" ]; then printf '%s\n' "$CONF_THEME"; return; fi
+ printf '%s\n' "sexy-splurge"
+}
+
main() {
return 0
}