62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# random_wallpaper
 | 
						|
#
 | 
						|
# Requirement: feh (apt install feh)
 | 
						|
 | 
						|
directory="$HOME/wallpapers"
 | 
						|
minutes=15
 | 
						|
PROGRAM=`which feh`
 | 
						|
 | 
						|
# Some tests
 | 
						|
if [[ "$XDG_SESSION_TYPE" -eq "wayland" ]]; then
 | 
						|
  PROGRAM=`which swaymsg`
 | 
						|
  if [ -z "${PROGRAM}" ]; then
 | 
						|
    echo "This script needs the swaymsg program."
 | 
						|
    exit 1
 | 
						|
  fi
 | 
						|
  wayland=1
 | 
						|
elif [ -z "${PROGRAM}" ]; then
 | 
						|
  echo "This script needs the feh program. Install it."
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
if [ -d '$directory' ]; then
 | 
						|
  echo "No $directory found."
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
IFS="
 | 
						|
"
 | 
						|
 | 
						|
array_files=($(ls -1 $directory))
 | 
						|
 | 
						|
nb_files=`ls $directory|wc -l`
 | 
						|
 | 
						|
if [ $nb_files == 0 ]; then
 | 
						|
  echo "$nb_files files in $directory"
 | 
						|
  exit 1
 | 
						|
fi
 | 
						|
 | 
						|
# initialisation
 | 
						|
seconds=$[ $minutes * 60 ]
 | 
						|
 | 
						|
while true; do
 | 
						|
 | 
						|
  # Random number generator (not more than files number)
 | 
						|
  NUMBER=$[ ( $RANDOM % $nb_files ) ]
 | 
						|
 | 
						|
  # Change background
 | 
						|
  file="${array_files["$NUMBER"]}"
 | 
						|
  if [[ -n wayland ]]; then
 | 
						|
    $PROGRAM output "*" bg "$directory/$file" fill
 | 
						|
  else
 | 
						|
    feh --bg-fill "$directory/$file"
 | 
						|
  fi
 | 
						|
 | 
						|
  # Wait some times
 | 
						|
  sleep $seconds
 | 
						|
done
 | 
						|
 | 
						|
exit 0
 |