3 ## This idea shamelessly stolen from Jonathan Lange's `undistract-me'; see
4 ## <https://github.com/jml/undistract-me>.
6 __wakey_start
=nil __wakey_cmd
=
7 : ${LONG_RUNNING_COMMAND_TIMEOUT=10}; export LONG_RUNNING_COMMAND_TIMEOUT
8 : ${IGNORE_WINDOW_CHECK=nil}; export IGNORE_WINDOW_CHECK
9 : ${LONG_RUNNING_IGNORE_LIST=}; export LONG_RUNNING_IGNORE_LIST
12 case $__wakey_start in
14 case " $LONG_RUNNING_IGNORE_LIST " in
16 *) __wakey_start
=$SECONDS __wakey_cmd
=$1 ;;
23 local icon
head rc
=$? cmd suppress
=nil win i now
=$SECONDS
25 case $__wakey_start in
28 if (( now
- __wakey_start
< LONG_RUNNING_COMMAND_TIMEOUT
)); then
31 case $IGNORE_WINDOW_CHECK in
34 win
=$
(xprop
-root _NET_ACTIVE_WINDOW |
sed 's/^.*[#=] //')
35 if [[ $win = *"not found." ]] ||
(( win
== WINDOWID
)); then
38 for i
in $
(xwininfo
-tree
-id
$win 2>/dev
/null |
39 sed -n
'/^ *[0-9]\+ child\(ren\)\?[.:]$/,$ {
40 /^ *\(0x[0-9a-f]\+\) (.*$/s//\1/p
43 if (( i
== WINDOWID
)); then suppress
=t
; break; fi
52 0) icon
=trophy-gold
head="Command completed" ;;
53 *) icon
=dialog-warning
head="Command FAILED (rc = $rc)" ;;
55 cmd
=${__wakey_cmd//&/&}; cmd
=${cmd//</<}; cmd
=${cmd//>/>}
56 notify-send
-c Wakey
-i
$icon -t
5000 "$head" "$cmd"
63 case ${DISPLAY+t},${WINDOWID+t},${__mdw_precmd_hook+t},${__mdw_preexec_hook+t} in
65 if __mdw_programp notify-send
; then
66 __mdw_addhook __mdw_preexec_hook __wakey_preexec
67 __mdw_addhook __mdw_precmd_hook __wakey_precmd