#!/bin/sh [ "$1" = "-h" ] || [ "$1" = "--help" ] && { echo "usage: $(basename $(readlink -f -- "$0")) [-1] WORK BREAK PAUSE" echo echo " WORK (default: 15m)" echo " BREAK (default: 3m)" echo " PAUSE (default: 5m)" echo exit 0 } [ "$1" = "-1" ] && _once=1 && shift WORK=${1:-15}m BREAK=${2:-3}m PAUSE=${3:-5}m WORK_BELL=/home/robert/Music/sounds/215415__unfa__ping.wav BREAK_BELL=/home/robert/Music/sounds/320655__rhodesmas__level-up-01.wav PAUSE_BELL=/home/robert/Music/sounds/32304__acclivity__shipsbell.wav END_BELL=/home/robert/Music/sounds/105228__chimerical__old-fashion-radio-jingle-2.wav log() { echo "$@" notify-send -i /usr/share/icons/mdi/scalable/progress-clock.svg -a pomo "pomo" "$@" } play() { paplay --property=media.role=event --volume=0.2 "$@" } nag() { swaynag --type=warning --dismiss-button=ok "$@" } _work() { play "${WORK_BELL}" 1>&2 2>/dev/null & log "[$(date +%k:%M:%S)] work for ${WORK}" sleep "${WORK}" } _break() { play "${BREAK_BELL}" 1>&2 2>/dev/null & nag -m "pomo: take a ${BREAK} break" log "[$(date +%k:%M:%S)] take a ${BREAK} break" sleep "${BREAK}" } _pause() { play "${PAUSE_BELL}" 1>&2 2>/dev/null & nag -m "pomo: pause for ${PAUSE}" log "[$(date +%k:%M:%S)] pause for ${PAUSE}" sleep "${PAUSE}" } _end() { aplay "${END_BELL}" 1>&2 2>/dev/null & nag -m "[$(date +%k:%M:%S)] the end" } trap '{ printf "\n"; log "[$(date +%k:%M:%S)] goodbye"; exit 0; }' INT if [ -n "${_once}" ]; then _work && _end exit 0 fi while true; do _work && _break _work && _break _work && _break _work && _pause _end done