Created
April 3, 2017 16:42
-
-
Save RobbiNespu/2f974f115f1f3ccf228a7696a7efdd4e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# Configuration directory | |
HOOKS_DIR="$HOME/.pomodoro/hooks" | |
# Time for a Pomodoro (see UNIT) | |
POMODORO=25 | |
# Time for a short pause (see UNIT) | |
SHORT_PAUSE=5 | |
# Number of Pomodoro before long pause | |
NB_POMODORO_BEFORE_PAUSE=4 | |
# Time for a long pause (every POMODORO_BEFORE_PAUSE) | |
LONG_PAUSE=15 | |
# Notification icons depending on context | |
ICON_WORK=face-glasses | |
ICON_SHORT_PAUSE=face-smile | |
ICON_LONG_PAUSE=face-cool | |
# Notification time | |
SHORT_NOTIFICATION_TIME=500 | |
LONG_NOTIFICATION_TIME=2000 | |
# Base unit time in second (if you change this, labels will become incoherent, used for debugging purpose) | |
UNIT=60 | |
# Start the Pomodoro magic! | |
# Hooks directories | |
HOOKS_WORK="$HOOKS_DIR/work.d" | |
HOOKS_PAUSE="$HOOKS_DIR/pause.d" | |
HOOKS_PAUSE_SHORT="$HOOKS_DIR/pause-short.d" | |
HOOKS_PAUSE_LONG="$HOOKS_DIR/pause-short.d" | |
HOOKS_EXIT="$HOOKS_DIR/exit.d" | |
if [ ! -d "$HOOKS_DIR" ]; then | |
echo "INIT: Creating hooks directory..." | |
mkdir -p "$HOOKS_DIR" || (echo "Failed to initialize directory '$PREF_DIR'"; exit 1) | |
fi | |
# Hooks execution | |
function execute_hooks () { | |
if [ ! -d "$1" ]; then | |
echo "INIT: Creating dedicated hooks directory..." | |
mkdir -p "$1" || (echo "Failed to initialize directory '$PREF_DIR'") | |
fi | |
find "$1" -maxdepth 1 -mindepth 1 -not -type d -executable | while read script; do | |
echo "HOOK: $script" | |
$script | |
done | |
} | |
# Catch exit as some hooks may need some cleanup | |
function on_exit() { | |
echo "Executing cleanup scripts now." | |
execute_hooks "$HOOKS_EXIT" | |
} | |
trap on_exit EXIT | |
NB_POMODORO=0 | |
while NB_POMODORO=$(($NB_POMODORO+1)); do | |
echo "Work!" | |
execute_hooks "$HOOKS_WORK" | |
notify-send -i "$ICON_WORK" -t $LONG_NOTIFICATION_TIME "Start working!" | |
i=0 | |
while [ $i -lt $POMODORO ]; do | |
notify-send -i "$ICON_WORK" -t $SHORT_NOTIFICATION_TIME "$(($POMODORO-$i)) minute(s) left before the pause" | |
sleep $UNIT | |
i=$((1+$i)) | |
echo "Work: $i/$POMODORO" | |
done | |
echo "Pause!"; | |
execute_hooks "$HOOKS_PAUSE" | |
if [ $(($NB_POMODORO%$NB_POMODORO_BEFORE_PAUSE)) -eq 0 ]; then | |
notify-send -i "$ICON_LONG_PAUSE" -t $LONG_NOTIFICATION_TIME "Long pause :D" | |
pause=$LONG_PAUSE | |
execute_hooks "$HOOKS_PAUSE_LONG" | |
else | |
notify-send -i "$ICON_SHORT_PAUSE" -t $LONG_NOTIFICATION_TIME "Short pause :)" | |
pause=$SHORT_PAUSE | |
execute_hooks "$HOOKS_PAUSE_SHORT" | |
fi | |
i=0 | |
while [ $i -lt $pause ]; do | |
if [ $pause -gt $SHORT_PAUSE -a $(($pause-$i)) -ge $SHORT_PAUSE ]; then | |
icon="$ICON_LONG_PAUSE" | |
else | |
icon="$ICON_SHORT_PAUSE" | |
fi | |
notify-send -i "$icon" -t $SHORT_NOTIFICATION_TIME "$(($pause-$i)) minutes left in this pause" | |
sleep $UNIT | |
i=$(($i+1)) | |
echo "Pause: $i/$pause" | |
done | |
done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment