#!/bin/rc rfork en bgdir=$home/lib/theme/bg fn default{ >/dev/theme cat <<'...' rioback 777777 ... exit } fn list{ if(! test -d $bgdir) error nodir bglist=`{walk -f $bgdir | grep -e '*.bit' | sort} switch($bglist){ case '' error nolist case * echo 'available backgrounds in' $bgdir for(i in $bglist) echo ' -' `{basename $i .bit} exit } } fn error{ switch($1){ case nodev echo 'error: /dev/theme not found' echo 'is rio running and is it patched?' exit nodev case nodir echo 'error:' $bgdir 'is not a directory' exit nodir case nofile echo 'error: background file for "'$arg'" not found in' $bgdir exit nofile case nolist echo 'error: no valid backgrounds found in' $bgdir exit nolist case nopath echo 'error: no path specified' usage case nobg echo 'error: no background file specified' usage case unknown echo 'error: unknown option "'$flag'"' usage } } fn help{ echo 'options:' echo ' -d for default colors' echo ' -p for setting $bgdir (default=$home/lib/theme/bg)' echo ' -l for list of available backgrounds' echo ' -r for random background' echo 'requires:' echo ' - rio patched for theme support (see https://ftrv.se/14)' echo ' - .bit files in $bgdir' echo ' * ex:' $bgdir/glenda_wallpaper.bit usage } fn random{ if(! test -d $bgdir) error nodir randbg=`{fortune <{walk -f $bgdir | grep -e '*.bit'}} switch($randbg){ case '' error nolist case * echo rioback $randbg >/dev/theme exit } } fn usage{ echo 'usage: setbg [-h help] [-d default] [-p /path/to/bgdir] [-l list] [-r random] ' exit usage } ############ Main if(! test -f /dev/theme) error nodev while(~ $1 -*){ switch($1){ case -p switch($2){ case '' -* error nopath case * bgdir=$2 shift 2 } case -d default case -h -help --help help case -l list case -r random case * flag=$1 error unknown } } switch($#*){ case 0 if(~ $#bg 1) arg=$bg if not error nobg case 1 arg=$1 case * usage } if(! test -d $bgdir) error nodir if(! test -f $bgdir/$arg.bit) error nofile echo rioback $bgdir/$arg.bit > /dev/theme