3 ## This idea shamelessly stolen from Jonathan Lange's `undistract-me'; see
4 ## <https://github.com/jml/undistract-me>.
8 __wakey_start
=nil __wakey_cmd
=
9 : ${LONG_RUNNING_COMMAND_TIMEOUT=10}; export LONG_RUNNING_COMMAND_TIMEOUT
10 : ${IGNORE_WINDOW_CHECK=nil}; export IGNORE_WINDOW_CHECK
11 : ${LONG_RUNNING_IGNORE_LIST=}; export LONG_RUNNING_IGNORE_LIST
14 case $__wakey_start in
16 case $LONG_RUNNING_IGNORE_LIST in
18 *) __wakey_start
=$EPOCHREALTIME __wakey_cmd
=$1 ;;
25 typeset icon
head rc
=$? cmd suppress
=nil
27 typeset
-F now
=$EPOCHREALTIME
29 case $__wakey_start in
32 if (( now
- __wakey_start
< LONG_RUNNING_COMMAND_TIMEOUT
)); then
35 case $IGNORE_WINDOW_CHECK in
38 win
=$
(xprop
-root _NET_ACTIVE_WINDOW |
sed 's/^.*# //')
39 if (( win
== WINDOWID
)); then
42 for i
in $
(xwininfo
-children
-id
$win |
43 sed -n
'/^ *[0-9]\+ child\(ren\)\?[.:]$/,$ {
44 /^ *\(0x[0-9a-f]\+\) (.*$/s//\1/p
47 if (( i
== WINDOWID
)) then; suppress
=t
; break; fi
56 0) icon
=trophy-gold
head="Command completed" ;;
57 *) icon
=dialog-warning
head="Command FAILED (rc = $rc)" ;;
59 cmd
=${__wakey_cmd//&/&}; cmd
=${cmd//</<}; cmd
=${cmd//>/>}
60 notify-send
-c Wakey
-i
$icon -t
5000 $head $cmd
67 case ${DISPLAY-nil} in
70 if whence notify-send
>/dev
/null
2>&1; then
71 preexec_functions
+=(__wakey_preexec
)
72 precmd_functions
+=(__wakey_precmd
)