#!/bin/bash # www.xeron.cc # Version 6! Now uses source to read variables from settings file instead of # grepping it out. Also, redid file finding and also fixed indention up a bit. #========== VARIABLES ================= # Use $HOME or absolute path instead of ~. Seperate paths with spaces. BG_PATH="$HOME/media/pictures/backgrounds" EXTS="jpg png bmp gif jpeg" SCRIPT_PATH="$HOME/misc/scripts/bg" SETTINGS_FILE="$HOME/.bgconf" # These are settings for the BG_COMMAND. Set them appropriately. ## bsetbg commands #BG_COMMAND="bsetbg" #CENTER="-center" #TILE="-tile" #FULL="-full" ## display from image magick commands #BG_COMMAND="display -window root" #CENTER="-backdrop" #TILE="" #FULL="-geometry 1600x1200" # GNOME 2 Commands BG_COMMAND="gconftool-2 -s /desktop/gnome/background/picture_options -t string '' -s /desktop/gnome/background/picture_options -t string" CENTER="centered -s /desktop/gnome/background/picture_filename -t string" TILE="wallpaper -s /desktop/gnome/background/picture_filename -t string" FULL="stretched -s /desktop/gnome/background/picture_filename -t string" #========== END VARIABLES ============= if [ ! -f "$SETTINGS_FILE" ]; then echo -e "mode=\"center\"\nbg=\"\"" > $SETTINGS_FILE fi source $SETTINGS_FILE case $1 in menu) echo "" for EXT in $EXTS; do find $BG_PATH -iname \*.$EXT|sed s:"&":"&":g|while read ITEM; do # Tilde Hack, replace with unlikely string. TITEM=`echo "$ITEM"|sed s:\~:NmTiLD3mN:g` echo " " echo " $SCRIPT_PATH apply \"$TITEM\"" echo " " done done echo " " echo " " echo " $SCRIPT_PATH mode center" echo " " echo " " echo " $SCRIPT_PATH mode tile" echo " " echo " " echo " $SCRIPT_PATH mode full" echo " " echo "" ;; apply) # decode tilde string and make & work with sed. bgvar=`echo "$2"|sed -e s:NmTiLD3mN:\~:g` sed -i s:^bg=\".*\"$:bg=\""${bgvar/&/\\&}"\": $SETTINGS_FILE $0 load ;; load) case $mode in tile) nmode="$TILE" ;; full) nmode="$FULL" ;; *) nmode="$CENTER" ;; esac $BG_COMMAND $nmode "$bg" ;; mode) case $2 in tile) nmode="tile" ;; full) nmode="full" ;; *) nmode="center" ;; esac sed -i s:^mode=\"$mode\"$:mode=\"$nmode\": $SETTINGS_FILE $0 load ;; *) echo "Usage: `basename $0` command [parameter]" echo " menu display openbox menu" echo " load load saved settings" echo " apply [file] applies background" echo " mode {center|tile|full} background position" ;; esac