#!/bin/sh WALLPAPER_PATH="$HOME/Images/Wallpaper" INTERVAL=600 while getopts 'p::t::' OPTION; do case "$OPTION" in p) WALLPAPER_PATH="$OPTARG" ;; t) INTERVAL="$OPTARG" ;; ?) echo "Usage: {$0} [--path=] [--time=]" exit 1 ;; esac done RUNNING_PID=-1 while true; do # run swaybg RANDOM_NUMBER=$(shuf -i 1-10 -n 1) if [ $RANDOM_NUMBER -le 2 ]; then swaybg -i "$(find "$WALLPAPER_PATH" -type f | shuf -n1)" -m fill & else swaybg -i "$(find "$WALLPAPER_PATH" -type f -not -path "*/hyper-pokemon/*" | shuf -n1)" -m fill & fi # get pid of new spawned instance NEW_PID=$! # wait until new instance of swaybg has booted up properly sleep 5 # kill the previous process # the new swaybg process takes its place automatically kill $RUNNING_PID # set pid for next iteration RUNNING_PID=$NEW_PID # wait $INTERVAL seconds sleep $INTERVAL done