nix-config/modules/wm/awww/scripts/random-bg.sh

35 lines
976 B
Bash
Executable file

#!/bin/sh
# Changes the wallpaper to a randomly chosen image in a given directory
# at a set interval.
DEFAULT_INTERVAL=300 # In seconds
if [ $# -lt 1 ] || [ ! -d "$1" ]; then
printf "Usage:\n\t\e[1m%s\e[0m \e[4mDIRECTORY\e[0m [\e[4mINTERVAL\e[0m]\n" "$0"
printf "\tChanges the wallpaper to a randomly chosen image in DIRECTORY every\n\tINTERVAL seconds (or every %d seconds if unspecified)." "$DEFAULT_INTERVAL"
exit 1
fi
# See awww-img(1)
RESIZE_TYPE="crop"
export AWWW_TRANSITION_FPS="${AWWW_TRANSITION_FPS:-60}"
export AWWW_TRANSITION_STEP="${AWWW_TRANSITION_STEP:-2}"
# Kill existing script executions
for pid in $(pidof -x "random-bg.sh"); do
if [ $pid != $$ ]; then
kill $pid
fi
done
while true; do
find "$1" -type f \
| while read -r img; do
echo "$(</dev/urandom tr -dc a-zA-Z0-9 | head -c 8):$img"
done \
| sort -n | cut -d':' -f2- \
| while read -r img; do
swww img --resize="$RESIZE_TYPE" "$img"
sleep "${2:-$DEFAULT_INTERVAL}"
done
done