bin/wakey.sh: Include hostname in notification if SSH is implicated.
[profile] / bin / wakey.sh
CommitLineData
9778630e
MW
1### -*-sh-*-
2
3## This idea shamelessly stolen from Jonathan Lange's `undistract-me'; see
4## <https://github.com/jml/undistract-me>.
5
9778630e
MW
6__wakey_start=nil __wakey_cmd=
7: ${LONG_RUNNING_COMMAND_TIMEOUT=10}; export LONG_RUNNING_COMMAND_TIMEOUT
132a9791 8: ${IGNORE_WINDOW_CHECK=nil}; export IGNORE_WINDOW_CHECK
aeba0b89 9: ${LONG_RUNNING_IGNORE_LIST=}; export LONG_RUNNING_IGNORE_LIST
9778630e
MW
10
11__wakey_preexec () {
12 case $__wakey_start in
13 nil)
0621c557 14 case " $LONG_RUNNING_IGNORE_LIST " in
aeba0b89 15 *" $1 "*) ;;
1bea7f5c 16 *) __wakey_start=$SECONDS __wakey_cmd=$1 ;;
aeba0b89 17 esac
9778630e
MW
18 ;;
19 esac
20}
21
22__wakey_precmd () {
bb834f36 23 local icon head rc=$? cmd suppress=nil win i now=$SECONDS
9778630e
MW
24
25 case $__wakey_start in
26 nil) ;;
27 *)
6131a252
MW
28 if (( now - __wakey_start < LONG_RUNNING_COMMAND_TIMEOUT )); then
29 suppress=t
132a9791
MW
30 else
31 case $IGNORE_WINDOW_CHECK in
32 t) ;;
33 *)
57a3a881 34 win=$(xprop -root _NET_ACTIVE_WINDOW | sed 's/^.*[#=] //')
56366bec 35 if [[ $win = *"not found." ]] || (( win == WINDOWID )); then
132a9791 36 suppress=t
d75ab17a
MW
37 elif (( win == 0 )); then
38 :
132a9791 39 else
21ded11f 40 for i in $(xwininfo -tree -id $win 2>/dev/null |
132a9791
MW
41 sed -n '/^ *[0-9]\+ child\(ren\)\?[.:]$/,$ {
42 /^ *\(0x[0-9a-f]\+\) (.*$/s//\1/p
43 }')
44 do
3c7d194d 45 if (( i == WINDOWID )); then suppress=t; break; fi
132a9791
MW
46 done
47 fi
48 esac
9778630e 49 fi
6131a252
MW
50 case $suppress in
51 t) ;;
52 *)
53 case $rc in
54 0) icon=trophy-gold head="Command completed" ;;
55 *) icon=dialog-warning head="Command FAILED (rc = $rc)" ;;
56 esac
57 cmd=${__wakey_cmd//&/&amp;}; cmd=${cmd//</&lt;}; cmd=${cmd//>/&gt;}
16f063f4 58 case ${SSH_CONNECTION+t} in t) head="[$HOST] $head" ;; esac
6e3de426 59 notify-send -c Wakey -i $icon -t 5000 "$head" "$cmd"
5f1fc65b 60 ;;
6131a252 61 esac
9778630e
MW
62 __wakey_start=nil
63 ;;
64 esac
65}
66
ba14abd8 67case ${DISPLAY+t},${WINDOWID+t},${__mdw_precmd_hook+t},${__mdw_preexec_hook+t} in
f0dc3124 68 t,t,t,t)
d040dbc2 69 if __mdw_programp notify-send; then
05e32650
MW
70 __mdw_addhook __mdw_preexec_hook __wakey_preexec
71 __mdw_addhook __mdw_precmd_hook __wakey_precmd
0b69235c
MW
72 fi
73 ;;
74esac