aboutsummaryrefslogtreecommitdiff
path: root/hooks/on_done
diff options
context:
space:
mode:
Diffstat (limited to 'hooks/on_done')
-rwxr-xr-xhooks/on_done43
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