diff --git a/example_scripts/swww_randomize.sh b/example_scripts/swww_randomize.sh
index 300d3e0..df4a768 100755
--- a/example_scripts/swww_randomize.sh
+++ b/example_scripts/swww_randomize.sh
@@ -1,32 +1,28 @@
-#!/bin/bash
+#!/bin/sh
+# Changes the wallpaper to a randomly chosen image in a given directory
+# at a set interval.
-# This script will randomly go through the files of a directory, setting it
-# up as the wallpaper at regular intervals
-#
-# NOTE: this script is in bash (not posix shell), because the RANDOM variable
-# we use is not defined in posix
+DEFAULT_INTERVAL=300 # In seconds
-if [[ $# -lt 1 ]] || [[ ! -d $1 ]]; then
- echo "Usage:
- $0
"
+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
-# Edit below to control the images transition
-export SWWW_TRANSITION_FPS=60
-export SWWW_TRANSITION_STEP=2
-
-# This controls (in seconds) when to switch to the next image
-INTERVAL=300
+# See swww-img(1)
+RESIZE_TYPE="fit"
+export SWWW_TRANSITION_FPS="${SWWW_TRANSITION_FPS:-60}"
+export SWWW_TRANSITION_STEP="${SWWW_TRANSITION_STEP:-2}"
while true; do
find "$1" -type f \
- | while read -r img; do
- echo "$((RANDOM % 1000)):$img"
- done \
- | sort -n | cut -d':' -f2- \
- | while read -r img; do
- swww img "$img"
- sleep $INTERVAL
- done
+ | while read -r img; do
+ echo "$("
- exit 1
+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
-# Make sure only 1 instance of swww_randomize
-PIDFILE=~/.local/state/swww-randomize-pidfile.txt
-if [ -e "${PIDFILE}" ]; then
- OLD_PID="$(<${PIDFILE})"
- if [ "X" != "X${OLD_PID}" -a -e "/proc/${OLD_PID}" ]; then
- OLD_NAME="$( ${PIDFILE}
-
-# Edit below to control the images transition
-export SWWW_TRANSITION_FPS=60
-export SWWW_TRANSITION_STEP=2
-
-# This controls (in seconds) when to switch to the next image
-INTERVAL=300
-
-# Possible values:
-# - no: Do not resize the image
-# - crop: Resize the image to fill the whole screen, cropping out parts that don't fit
-# - fit: Resize the image to fit inside the screen, preserving the original aspect ratio
+# See swww-img(1)
RESIZE_TYPE="fit"
-
-DISPLAY_LIST=$(swww query | grep -Po "^[^:]+")
+export SWWW_TRANSITION_FPS="${SWWW_TRANSITION_FPS:-60}"
+export SWWW_TRANSITION_STEP="${SWWW_TRANSITION_STEP:-2}"
while true; do
- find "$1" -type f \
- | while read -r img; do
- echo "$RANDOM:$img"
- done \
- | sort -n | cut -d':' -f2- \
- | tee ~/.local/state/swww-randomize-list.txt \
- | while read -r img; do
- # Set a different image for each display
- for disp in $DISPLAY_LIST; do
- # if there is no image try to get one
- if [ "X" = "X${img}" ]; then
- if read -r img; then
- true
- else # if there are no more images, refresh the list
- break 2
- fi
- fi
- swww img --resize=$RESIZE_TYPE --outputs $disp $img
- # make sure each image is only used once
- img=""
- done
- sleep $INTERVAL
- done
+ find "$1" -type f \
+ | while read -r img; do
+ echo "$(