Improve wallpaper-setting pipeline robustness
authorSiraaj Khandkar <siraaj@khandkar.net>
Fri, 10 Jun 2022 17:07:00 +0000 (13:07 -0400)
committerSiraaj Khandkar <siraaj@khandkar.net>
Fri, 10 Jun 2022 17:07:00 +0000 (13:07 -0400)
home/.xlaunch.d/background
home/bin/wallpaper_fav
home/bin/wallpaper_review

index ab4c301..a02d34c 100755 (executable)
@@ -3,8 +3,12 @@
 set -e
 
 BG_COLOR='#b2b2a0'
-BG_IMAGE=$(< "$FILE_WALLPAPER_CURR")
 
 #xsetroot -solid "$BG_COLOR"
 hsetroot -solid "$BG_COLOR"   # Because xsetroot is incompatible with compton.
-feh --bg-scale "$BG_IMAGE"
+
+if test -f "$FILE_WALLPAPER_CURR"
+then
+    bg_image=$(< "$FILE_WALLPAPER_CURR")
+    feh --bg-scale "$bg_image"
+fi
index 702cd9f..1a73af7 100755 (executable)
@@ -2,5 +2,33 @@
 
 set -e
 
-awk 'NR == 2 {sub("^" $1 " +" $2 " +" $3 " +", ""); print}' ~/.fehbg | xargs sha256sum >> "$FILE_WALLPAPER_FAVS"
+case "$1" in
+    '')
+        current_wallpaper_file=$(
+            awk '
+                NR == 2 {
+                    if (NF > 3) {
+                        # XXX Assume feh wrote a N>4-field command line, like:
+                        #         feh --no-fehbg --bg-scale $file
+                        sub("^" $1 " +" $2 " +" $3 " +", "")
+                    } else if (NF < 4) {
+                        # XXX Assume feh wrote a N<4-field command line, like:
+                        #         feh --bg-scale $file
+                        sub("^" $1 " +" $2 " +", "")
+                    } else {
+                        printf "[error] Unexpected number of fields in ~/.fehbg command: %s\n" $0 > "/dev/stderr"
+                        exit 1
+                    }
+                    print
+                    exit 0
+                }
+                ' \
+                ~/.fehbg \
+            | xargs  # Unquote the filename, which feh puts in single quotes.
+        );;
+    *)
+        current_wallpaper_file="$1"
+esac
+
+sha256sum "$current_wallpaper_file" >> "$FILE_WALLPAPER_FAVS"
 sort -u "$FILE_WALLPAPER_FAVS" | sponge "$FILE_WALLPAPER_FAVS"
index b466255..5c6966a 100755 (executable)
@@ -109,7 +109,7 @@ paths_preview() {
                 (( i = (i + 1) % n ));;
             CMD_FAVORITE_ADD)
                 printf 'Adding to favorites set: "%s"\n' "$path" >&2
-                wallpaper_fav;;
+                wallpaper_fav "$path";;
             CMD_FAVORITE_REMOVE)
                 printf 'Removing from favorites set: "%s"\n' "$path" >&2
                 digest=$(sha256sum "$path" | awk '{print $1}')
This page took 0.042257 seconds and 4 git commands to generate.