all repos

dotfiles @ ae3bf99617475f20698bb4e1fe4696bc38b4adf9

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
Authored at: 2025-08-03 18:15:53 +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