Better xscreensaver detection
[tpope-extra.git] / bin / away-detect
index 1d7575b0c612fc5553e0bd68c5806134a094ba29..9764f75c90d9218950571500f0bf502d5da02d20 100755 (executable)
@@ -69,28 +69,30 @@ set_active() {
 
 now="$(expr 60 \* $(date +%H) + $(date +%M))"
 
-today --category='!school' | sed -e s/^..........//|grep '[0-9][0-9]:[0-9][0-9]-[0-9][0-9]:[0-9][0-9]'| \
+if ! today --category='holiday' | grep '' >/dev/null; then
+today --category='school' | sed -e s/^..........// -e 's/ \[.*\]$//'|grep '[0-9][0-9]:[0-9][0-9]-[0-9][0-9]:[0-9][0-9]'| \
 while read times event; do
     begin="$(expr 60 \* $(echo $times|sed -e 's/-.*//' -e 's/:/ + /g'))"
     end="$(expr 60 \* $(echo $times|sed -e 's/.*-//' -e 's/:/ + /g'))"
     max_end="$end"
+    begin="`expr $begin - 15`"
+    end="`expr $begin / 2 + $end / 2`"
     if [ "$begin" -le "$now" -a "$now" -lt "$end" ]; then
-       echo "scheduled=\"$event\"" > "$HOME/.away-smart"
+       echo "scheduled=\"Class ($event)\"" > "$HOME/.away-smart"
        break
-    elif [ "$old_away" = "$event" -a "$now" -gt "$max_end" ]; then
+    elif [ "$old_away" = "Class ($event)" -a "$now" -gt "$max_end" ]; then
        echo "old_smart=\"$old_away\"" > "$HOME/.away-smart"
     fi
 done
+fi
 
-today --category='school' | sed -e s/^..........//|grep '[0-9][0-9]:[0-9][0-9]-[0-9][0-9]:[0-9][0-9]'| \
+today --category='!school' | sed -e s/^..........//|grep '[0-9][0-9]:[0-9][0-9]-[0-9][0-9]:[0-9][0-9]'| \
 while read times event; do
     begin="$(expr 60 \* $(echo $times|sed -e 's/-.*//' -e 's/:/ + /g'))"
     end="$(expr 60 \* $(echo $times|sed -e 's/.*-//' -e 's/:/ + /g'))"
     max_end="$end"
-    begin="`expr $begin - 15`"
-    end="`expr $begin / 2 + $end / 2`"
     if [ "$begin" -le "$now" -a "$now" -lt "$end" ]; then
-       echo "scheduled=\"Class ($event)\"" > "$HOME/.away-smart"
+       echo "scheduled=\"$event\"" > "$HOME/.away-smart"
        break
     elif [ "$old_away" = "$event" -a "$now" -gt "$max_end" ]; then
        echo "old_smart=\"$old_away\"" > "$HOME/.away-smart"
@@ -106,7 +108,7 @@ done
 
 for host in $livehosts; do
     # True if a non-blanked display is found
-    $ssh $host 'if DISPLAY=:0.0 xscreensaver-command -time >/dev/null 2>&1; then if DISPLAY=:0.0 xscreensaver-command -time 2>/dev/null|grep non-blanked >/dev/null; then true; else pid=`ps ax|grep "[0-9]:[0-9][0-9] ssh .*exec screen.*RR irc"|sed -e "s/^  *//"|cut -d" " -f 1`; [ -f "$HOME/.irc.lock" -o -z "$pid" ] || kill $pid; false; fi; else false; fi' && alive=$host
+    $ssh $host 'if DISPLAY=:0.0 xscreensaver-command -version >/dev/null 2>&1; then if DISPLAY=:0.0 xscreensaver-command -time 2>&1 |egrep "non-blanked|no saver status" >/dev/null; then true; else pid=`ps ax|grep "[0-9]:[0-9][0-9] ssh .*exec screen.*RR irc"|sed -e "s/^  *//"|cut -d" " -f 1`; [ -f "$HOME/.irc.lock" -o -z "$pid" ] || kill $pid; false; fi; else false; fi' && alive=$host
 done
 
 if ! ping -c 1 mona >/dev/null 2>/dev/null; then