diff options
Diffstat (limited to 'hooks/on_done')
| -rwxr-xr-x | hooks/on_done | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/hooks/on_done b/hooks/on_done index 955cd13..cfe57f2 100755 --- a/hooks/on_done +++ b/hooks/on_done @@ -1,31 +1,36 @@ #!/bin/sh # ttym on_done -- runs when a countdown reaches zero. # -# $1 mode always "countdown" (a stopwatch never completes) +# $1 mode always "countdown" -- a stopwatch never completes # $2 seconds the full duration that elapsed # $3 comment the -c text, or an empty string # -# timer waits for this to exit before ringing the bell and entering the -# alert loop, so background anything slow. +# Nothing here duplicates the notify patch: if your build has it, the +# desktop notification and sound have already fired by the time this +# runs. Use this for what the binary does not do. +# +# timer waits for this before the completion bell and the alert loop, so +# background anything slow with &. -seconds=$2 comment=$3 -mins=$((seconds / 60)) +mode=$1 seconds=$2 comment=$3 -# Desktop notification. Gives the base build what the notify patch adds. -if command -v notify-send > /dev/null 2>&1; then - notify-send -u critical "Timer" "${mins}m done${comment:+ -- $comment}" & +# --- session record ------------------------------------------------------ +state=${XDG_STATE_HOME:-$HOME/.local/state}/ttym +if mkdir -p "$state" 2>/dev/null; then + printf '%s\tDONE\t%s\t%s\t%s\n' \ + "$(date +%Y-%m-%dT%H:%M:%S)" "$mode" "$seconds" "$comment" \ + >> "$state/sessions.tsv" fi -# A sound, first player that exists wins. Backgrounded so it never blocks. -for player in paplay aplay mpv ffplay; do - if command -v "$player" > /dev/null 2>&1; then - sound=/usr/share/sounds/freedesktop/stereo/complete.oga - [ -r "$sound" ] && "$player" "$sound" > /dev/null 2>&1 & - break - fi -done +# --- leave focus mode ---------------------------------------------------- +# Note the ordering: the notify patch emits its completion popup *before* +# this hook runs, so with dunst paused that popup is queued and appears +# the moment the next line unpauses. Delayed, not lost. +command -v dunstctl > /dev/null 2>&1 && dunstctl set-paused false +command -v playerctl > /dev/null 2>&1 && playerctl play 2>/dev/null +command -v mpc > /dev/null 2>&1 && mpc -q play 2>/dev/null -# Push to your phone (uncomment and set your topic): -# curl -fsS -d "${mins}m done${comment:+ -- $comment}" ntfy.sh/your-topic & +# --- timewarrior --------------------------------------------------------- +# command -v timew > /dev/null 2>&1 && timew stop > /dev/null 2>&1 -wait +exit 0 |
