23 lines
670 B
Bash
23 lines
670 B
Bash
#!/usr/bin/env bash
|
|
set -o pipefail
|
|
|
|
# Wallpapers are in the laptop-config repo
|
|
WALLPAPER_DIR="$HOME/laptop-config/wallpapers"
|
|
CACHE_FILE="$HOME/.cache/current-wallpaper"
|
|
|
|
mapfile -t wallpapers < <(find "$WALLPAPER_DIR" -maxdepth 1 -type f \( -iname "*.png" -o -iname "*.jpg" -o -iname "*.jpeg" -o -iname "*.gif" \) | sort)
|
|
count="${#wallpapers[@]}"
|
|
|
|
if [ "$count" -eq 0 ]; then
|
|
echo "No wallpapers found in $WALLPAPER_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
current=$(cat "$CACHE_FILE" 2>/dev/null || echo "")
|
|
chosen="$current"
|
|
while [ "$chosen" = "$current" ] && [ "$count" -gt 1 ]; do
|
|
chosen="${wallpapers[$((RANDOM % count))]}"
|
|
done
|
|
|
|
echo "$chosen" > "$CACHE_FILE"
|
|
awww img "$chosen"
|