Browse Source

Develop simple pomodoro posix shell script

master
RinRi 1 year ago
commit
df71fd28d3
1 changed files with 63 additions and 0 deletions
  1. +63
    -0
      pomodoro.sh

+ 63
- 0
pomodoro.sh View File

@@ -0,0 +1,63 @@
#!/bin/sh

sl=25 # study session time in minutes
bl=5 # break time in minutes
bll=20 # long break time in minutes
bls=4 # number of study sessions before long break
ringtone="$HOME/Media/warcraft-soundtrack/2004 World of Warcraft/ringtone.flac"

sessions=0 # number of sessions passed
# if you kill and restart pomodoro.sh, you can specify the number of sessions passed
[ $# -gt 0 ] && sessions=$1

printf "\rStudy time! Sessions done: %d\n" "$sessions"
notify-send -i "media-playback-playing" "Study time!"
start="$(date +%s)" # start time stamp
state=0 # 0 - study, 1 - relax, 2 - long break
tl=$sl # current time limit

while :
do
now="$(date +%s)"

left=$((tl * 60 - (now - start)))

printf "\033[K\r%02d:%02d" "$((left / 60))" "$((left % 60))"

if [ $left -le 0 ]; then
printf "\033[1A\033[K"
if [ $state -eq 0 ]; then
sessions=$((sessions + 1))
if [ $((sessions % bls)) -eq 0 ]; then
state=2
printf "\rLong break time! Sessions done: %d\n" "$sessions"
notify-send -i "media-playback-paused" "Long break time!"
mpv --no-vid --no-terminal "$ringtone" &
tl=$bll
else
state=1
printf "\rBreak time! Sessions done: %d\n" "$sessions"
notify-send -i "media-playback-paused" "Break time!"
mpv --no-vid --no-terminal "$ringtone" &
tl=$bl
fi
else
state=0
printf "\rStudy time! Sessions done: %d\n" "$sessions"
notify-send -i "media-playback-playing" "Study time!"
mpv --no-vid --no-terminal "$ringtone" &
tl=$sl
fi

mpvpid=$!

printf "%s " "Press Enter to start the timer"
read ans
printf "\033[1A\033[K"

start="$(date +%s)"
kill $mpvpid 2> /dev/null
fi

sleep 1
done

Loading…
Cancel
Save