all repos

dotfiles @ ae3bf99

i use rach linux btw
1 files changed, 74 insertions(+), 0 deletions(-)
bin: add pomodoro script
Author: Olexandr Smirnov olexsmir@gmail.com
Committed at: 2025-08-03 18:16:04 +0300
Parent: a2719d4
A bin/pomodoro
ยทยทยท
                
                1
                +#!/usr/bin/bash

              
                
                2
                +# credits: https://github.com/gpanders/dotfiles/blob/master/.local/bin/pomodoro

              
                
                3
                +

              
                
                4
                +usage() {

              
                
                5
                +  echo "Usage: $(basename "$0") [focus time] [short break] [long break]"

              
                
                6
                +}

              
                
                7
                +

              
                
                8
                +if [ "$1" = "-h" ]; then

              
                
                9
                +  usage

              
                
                10
                +  exit 0

              
                
                11
                +fi

              
                
                12
                +

              
                
                13
                +focus_time=${1:-25}

              
                
                14
                +short_break=${2:-5}

              
                
                15
                +long_break=${3:-15}

              
                
                16
                +

              
                
                17
                +# Ensure all arguments are numbers

              
                
                18
                +case $focus_time$short_break$long_break in

              
                
                19
                +  *[!0-9]*)

              
                
                20
                +    echo "Arguments must be positive integer numbers" >&2

              
                
                21
                +    usage >&2

              
                
                22
                +    exit 1

              
                
                23
                +    ;;

              
                
                24
                +esac

              
                
                25
                +

              
                
                26
                +notify() {

              
                
                27
                +  echo "$1"

              
                
                28
                +  if command -v terminal-notifier >/dev/null 2>&1; then

              
                
                29
                +    terminal-notifier -title 'Pomodoro' -message "$1"

              
                
                30
                +  elif command -v notify-send >/dev/null 2>&1; then

              
                
                31
                +    notify-send "$1"

              
                
                32
                +  fi

              
                
                33
                +}

              
                
                34
                +

              
                
                35
                +countdown() {

              
                
                36
                +  timer=$(($1 * 60))

              
                
                37
                +  while true; do

              
                
                38
                +    minutes=$((timer / 60))

              
                
                39
                +    seconds=$((timer - 60*minutes))

              
                
                40
                +    printf '\e[0K\r'  # Clear current line

              
                
                41
                +    printf 'Remaining: %02d:%02d' "$minutes" "$seconds"

              
                
                42
                +

              
                
                43
                +    [ $timer -eq 0 ] && break

              
                
                44
                +    timer=$((timer - 1))

              
                
                45
                +    sleep 1

              
                
                46
                +  done

              
                
                47
                +  printf '\n'

              
                
                48
                +}

              
                
                49
                +

              
                
                50
                +while true; do

              
                
                51
                +  notify "Focus for $focus_time minutes"

              
                
                52
                +  countdown "$focus_time"

              
                
                53
                +

              
                
                54
                +  notify "Take a short break for $short_break minutes (1/4)"

              
                
                55
                +  countdown "$short_break"

              
                
                56
                +

              
                
                57
                +  notify "Focus for $focus_time minutes"

              
                
                58
                +  countdown "$focus_time"

              
                
                59
                +

              
                
                60
                +  notify "Take a short break for $short_break minutes (2/4)"

              
                
                61
                +  countdown "$short_break"

              
                
                62
                +

              
                
                63
                +  notify "Focus for $focus_time minutes"

              
                
                64
                +  countdown "$focus_time"

              
                
                65
                +

              
                
                66
                +  notify "Take a short break for $short_break minutes (3/4)"

              
                
                67
                +  countdown "$short_break"

              
                
                68
                +

              
                
                69
                +  notify "Focus for $focus_time minutes"

              
                
                70
                +  countdown "$focus_time"

              
                
                71
                +

              
                
                72
                +  notify "Take a long break for $long_break minutes (4/4)"

              
                
                73
                +  countdown "$long_break"

              
                
                74
                +done