#!/bin/bash
#------------------------------------------------
#
# A simple Pomodoro method timer in bash
# Uses espeak to announce Work/Break/Long-Break
#
# ./pomodoro.sh
#
# Hope you ejoy,
# Phillip J Rhoades
#
#------------------------------------------------
#Times
workminutes=25 #working pomodoro minutes
shortbreak=5 #short break minutes
longbreak=15 #long break minutes
pommax=4 #Work pomodoros before long break
#Initializing
pomcount=0
thebreak=0
sbreaker=0
#Sounds
sbsound="/usr/share/sounds/purple/receive.wav"
lbsound="/usr/share/sounds/speech-dispatcher/test.wav"
wksound="/usr/share/xdx/sounds/attention.wav"
###
tput civis #hide the cursor
#Bring the cursor back after ctrl-c
trap ctrl_c INT
function ctrl_c() {
tput cvvis
exit
}
#Loop those pomodoros
while [ 1 ]; do
if [ $sbreaker -eq 1 ] && [ $pomcount -ne $pommax ]; then
let "sbreaker=0"
dominutes=$shortbreak
theword="SHORT BREAK:"
thesound="$sbsound"
else
if [ $pomcount -eq $pommax ]; then
let "pomcount=0"
dominutes=$longbreak
theword="LONG BREAK:"
thesound="$lbsound"
let "sbreaker=0"
else
let "pomcount+=1"
dominutes=$workminutes
theword="WORK $pomcount:"
thesound="$wksound"
let "sbreaker=1"
fi
fi
#echo "$pomcount | $thebreak | $dominutes"
secs=$(($dominutes * 60))
echo $theword |espeak &>/dev/null
while [ $secs -gt 0 ]; do
#echo -ne "$theword $secs\033[0K\r"
theminutes=$(printf "%02d" $((m=(${secs}%3600)/60)))
theseconds=$(printf "%02d" $((s=${secs}%60)))
echo -ne "$theword $theminutes:$theseconds\033[0K\r"
sleep 1
: $((secs--))
done
#play "$thesound" &>/dev/null
done
Comments