diff options
Diffstat (limited to 'bin/menuscripts/pomo')
-rwxr-xr-x | bin/menuscripts/pomo | 101 |
1 files changed, 46 insertions, 55 deletions
diff --git a/bin/menuscripts/pomo b/bin/menuscripts/pomo index e8795e7..eb4c30b 100755 --- a/bin/menuscripts/pomo +++ b/bin/menuscripts/pomo @@ -1,78 +1,69 @@ #!/bin/sh ### FUNCTIONS -notif() { - herbe "pomo" "$1" & - sleep 1 - pkill -SIGUSR1 herbe +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 ' > ' +player_command() { + printf >&2 ' > ' [ -r "$ringSound" ] || PLAYER="" case "$PLAYER" in - mpv) mpv --loop --msg-level=all=no "$ringSound" ;; - "") head -n 1;; - *) $PLAYER "$ringSound" ;; + 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" +ring_ring() { + printf >&2 '%s B %s\n' "$(date '+%R')" "$round" player_command - herbe "pomo" "$2" & - sleep "${1}m" + herbe "pomo" "$2" & + sleep "${1}m" player_command - >&2 printf '\n' + printf >&2 '\n' } -### PROGRAM -main() -{ - round="${1-0}" - case "$round" in - 0|1|2|3) ;; - ring) ;; - *) logn "Invalid \$round value." && exit 1 ;; - esac +### Program - ringSound="${XDG_DATA_HOME:-$HOME/.local/share}"/pomo/ring.aac - [ -r "$ringSound" ] && logn "ring: $ringSound" +trap 'exit 1' INT - if [ "$1" = "ring" ] - then - player_command - exit - fi +round="${1:-0}" +# args +case "$round" in +0 | 1 | 2 | 3) ;; +ring) ;; +*) printf >&2 'Invalid value: %s\n' "$round"; exit 1 ;; +esac - # Countdown - for msg in "three" "two" "one" - do notif "$msg" - done +ringSound="${XDG_DATA_HOME:-$HOME/.local/share}"/pomo/ring.aac +[ -r "$ringSound" ] && printf >&2 'ring: %s\n' "$ringSound" - 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 -} +if [ "$1" = "ring" ]; then + player_command + exit +fi -trap 'exit 1' INT -main "$@" +# Countdown +for msg in "three" "two" "one"; do + notif "$msg" +done + +while true; do + notif "START" + printf >&2 '%s S %s\n' "$(date '+%R')" "$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 |