mass update.
[my-dotfiles.git] / bin / change_wallpaper.sh
CommitLineData
7abef725 1#! /bin/bash
2
3PID=$$
4PIDFILE=${PIDFILE:-/tmp/wallpaper.pid}
5WAIT_CYCLE="5m"
6
7trap "rm -f $PIDFILE" SIGTERM
8
9WP_SETTER="/usr/bin/feh"
10QARMA="/usr/bin/qarma"
11
12function set_wp() {
13 NEW_WP=$1
14 $WP_SETTER --bg-fill $NEW_WP
15}
16
17# set background function (requires input)
18function wpapers() {
19 if [[ -f $1 ]]; then
20 # We have a single file as input
21 set_wp $1
22 exit 0
23 elif [[ -d $1 ]]; then
24 # directory as input
25 while true; do
26 BGIMG=$(find $1 -type f -print | shuf -n1)
27 set_wp ${BGIMG}
28 sleep $WAIT_CYCLE
29 done
30 fi
31}
32
33function file_or_dir() {
34 if [[ -f /tmp/choice ]]; then
35 rm /tmp/choice
36 fi
37
38 FOD=$($QARMA --list --text="single image or directory?" --hide-header "file" "directory" > /tmp/choice)
39 case $? in
40 0 )
41 file_chooser $(cat /tmp/choice)
42 ;;
43 1 )
44 $QARMA --info --title="Exiting!" --text="No wallpaper was changed."
45 ;;
46 -1 )
47 $QARMA --error --title="Ooops!!" --text="Something unexpected happened."
48 ;;
49 esac
50}
51
52function file_chooser() {
53 case $1 in
54 "file" )
55 FILE="$($QARMA --file-selection --title='Choose your Wallpaper')"
56 case $? in
57 0 )
58 wpapers $FILE
59 ;;
60 1 )
61 $QARMA --info --title="Exiting!" --text="No wallpaper was changed."
62 ;;
63 -1 )
64 $QARMA --error --title="Ooops!!" --text="Something unexpected happened."
65 esac
66 ;;
67 "directory" )
68 FILE="$($QARMA --file-selection --directory --title='Choose your Wallpaper directory')"
69 case $? in
70 0 )
71 wpapers $FILE
72 ;;
73 1 )
74 $QARMA --info --title="Exiting!" --text="No wallpaper was changed."
75 ;;
76 -1 )
77 $QARMA --error --title="Ooops!!" --text="Something unexpected happened."
78 esac
79 ;;
80 * )
81 $QARMA --error --title="Ooops!!" --text="Something unexpected happened."
82 ;;
83 esac
84}
85
86function run() {
87 if [[ $(basename $0) == "wallpaper.sh" ]]; then
88 # we were called as wallpaper.sh, so simple wallpaper setter without qarma interaction
89 wpapers $1
90 elif [[ $(basename $0) == "change_wallpaper.sh" ]]; then
91 # we use qarma to set the wallpaper
92 $QARMA --question --title="Change Wallpaper" --text="Do you want to change the wallpaper?"
93 case $? in
94 0 )
95 file_or_dir
96 ;;
97 1 )
98 $QARMA --info --title="Exiting!" --text="No wallpaper was changed."
99 ;;
100 -1 )
101 $QARMA --error --title="Ooops!!" --text="Something unexpected happened."
102 esac
103 fi
104}
105
106if [[ -r $PIDFILE ]]; then
107 # PIDFILE exists, so I guess there's already an instance running
108 # let's kill it and run again
109 kill -s 15 $(cat $PIDFILE) > /dev/null 2>&1
110 # should already be deleted by trap, but just to be sure
111 rm $PIDFILE
112fi
113
114# create PIDFILE
115echo $PID > $PIDFILE
116
117run