diff options
author | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-06-06 15:29:58 +0200 |
---|---|---|
committer | Raymaekers Luca <raymaekers.luca@gmail.com> | 2024-06-06 15:29:58 +0200 |
commit | ad05cb18f03f3a97a918e090c38ba760147a0bb6 (patch) | |
tree | 233097b3ccbf1a4fef18a291d0d8fda3fba34c03 /bin/menuscripts/pomo | |
parent | 1a7e35285abb5db60d2e1544ce0100e82c5d3490 (diff) | |
parent | 511b6c1bc9acd9e6029d08a6c448f6e0037755fb (diff) |
Merge branch 'main' of db:dotfiles
Diffstat (limited to 'bin/menuscripts/pomo')
-rwxr-xr-x | bin/menuscripts/pomo | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/bin/menuscripts/pomo b/bin/menuscripts/pomo new file mode 100755 index 0000000..e8795e7 --- /dev/null +++ b/bin/menuscripts/pomo @@ -0,0 +1,78 @@ +#!/bin/sh + +### FUNCTIONS +notif() { + herbe "pomo" "$1" & + sleep 1 + pkill -SIGUSR1 herbe +} +logn () { >&2 printf '%s\n' "$@"; } +log () { >&2 printf '%s' "$@"; } + +# Plays ringing sound +# Then wait for user input to start/end the break +player_command() +{ + >&2 printf ' > ' + [ -r "$ringSound" ] || PLAYER="" + case "$PLAYER" in + mpv) mpv --loop --msg-level=all=no "$ringSound" ;; + "") head -n 1;; + *) $PLAYER "$ringSound" ;; + esac +} + +# $1: time in minutes +# $2: msg for notification +ring_ring() +{ + logn "$(date '+%R') B $round" + player_command + herbe "pomo" "$2" & + sleep "${1}m" + player_command + >&2 printf '\n' +} + +### PROGRAM +main() +{ + round="${1-0}" + case "$round" in + 0|1|2|3) ;; + ring) ;; + *) logn "Invalid \$round value." && exit 1 ;; + esac + + ringSound="${XDG_DATA_HOME:-$HOME/.local/share}"/pomo/ring.aac + [ -r "$ringSound" ] && logn "ring: $ringSound" + + if [ "$1" = "ring" ] + then + player_command + exit + fi + + # Countdown + for msg in "three" "two" "one" + do notif "$msg" + done + + while true + do + notif "START" + logn "$(date '+%R') S $round" + sleep 25m + if [ "$round" -eq 3 ] + then + ring_ring 20 "GIGA BREAK TIME" + round=0 + else + ring_ring 5 "BREAK TIME" + round=$((round+1)) + fi + done +} + +trap 'exit 1' INT +main "$@" |