From b4f632e7415453d97ab2a5f5e16f723e0ca634c5 Mon Sep 17 00:00:00 2001 From: Guillermo Ramos Date: Fri, 30 Jul 2021 16:39:50 +0200 Subject: gromo: Allow several gromo types --- gromo | 65 +++++++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 28 deletions(-) diff --git a/gromo b/gromo index f4a65bf..7507a17 100755 --- a/gromo +++ b/gromo @@ -5,42 +5,52 @@ # Dependencies: curl and mpv for the 'ding' sound; slock to force you to rest :) ################################################################################ +shopt -s nullglob + DEFAULT_DING=https://gramos.me/ding.opus GROMO_SECONDS=$((60 * 20)) STOP_SECONDS=20 DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gromo CACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/gromo -STATE_DIR=${XDG_STATE_HOME:-$HOME/.local/state}/gromo -TODAY_FILE=$DATA_DIR/$(date -I) +TODAY_DIR=$DATA_DIR/$(date -I) DING_FILE=$CACHE_DIR/ding.opus -STATE_FILE=$STATE_DIR/state +STATE_FILE=${XDG_STATE_HOME:-$HOME/.local/state}/gromo -gromos=0 -[ -f "$TODAY_FILE" ] && read -r gromos < "$TODAY_FILE" if [ "$1" = "--xmobar-status" ]; then - if [ -f "$STATE_FILE" ]; then - echo "$(cat $STATE_FILE) ($gromos)" - else - echo "idle ($gromos)" + state=idle + [ -f "$STATE_FILE" ] && state=$(cat $STATE_FILE) + + color=red + [ "$state" = "idle" ] && color=green + + if [ -d "$TODAY_DIR" ]; then + declare -a today + for gromo in "$TODAY_DIR"/*; do + today+=("$(basename $gromo): $(cat $gromo)") + done + [ -n "$today" ] && today=" (${today[@]})" fi + echo "$state$today" exit 0 elif [ "$1" = "--help" ] || [ "$1" = "-h" ]; then cmd=$(basename $0) echo -e "Usage: $cmd --xmobar-status\tReturn state formatted for display in xmobar $cmd --help | -h \tShow this help - $cmd [task] \tStart counting (default task: "work") + $cmd [gromo] \tStart counting (default gromo: "work") " exit 0 elif [ "$#" -ge 1 ]; then - task=$1 + gromo="$1" else - task=work + gromo=work fi -mkdir -p "$DATA_DIR" "$STATE_DIR" +gromos=0 +gromo_file="$TODAY_DIR/$gromo" +mkdir -p "$DATA_DIR" "$TODAY_DIR" [ -f "$DING_FILE" ] || curl $DEFAULT_DING --create-dirs -so "$DING_FILE" @@ -49,23 +59,11 @@ if [ -f $STATE_FILE ]; then exit 1 fi echo idle > "$STATE_FILE" -trap "rm -f $STATE_FILE; exit" INT TERM EXIT +trap 'rm $STATE_FILE 2> /dev/null && echo -e "\n\nToday: $gromos \"$gromo\" gromos ($gromo_time)"; exit' INT TERM EXIT while true; do - read -rn1 -p "Press any key to start gromo > " - echo -ne "\r\033[K" - - echo $task > "$STATE_FILE" - sleep $GROMO_SECONDS - echo idle > "$STATE_FILE" - - gromos=$((gromos+1)) + [ -f "$gromo_file" ] && read -r gromos < "$gromo_file" seconds=$((gromos * GROMO_SECONDS)) - echo "$gromos" > "$TODAY_FILE" - - (sleep $STOP_SECONDS && mpv --no-terminal "$DING_FILE") & - slock - if [ $seconds -lt 60 ]; then gromo_time="$seconds seconds" elif [ $seconds -lt 3600 ]; then @@ -73,5 +71,16 @@ while true; do else gromo_time="$((seconds / 3600)) hours" fi - echo -ne "Completed $gromos gromos today ($gromo_time). " + + echo -ne "\r\033[K[** IN PROGRESS: $gromo **] " + + echo "$gromo" > "$STATE_FILE" + sleep $GROMO_SECONDS + echo idle > "$STATE_FILE" + + gromos=$((gromos+1)) + echo "$gromos" > "$gromo_file" + + (sleep $STOP_SECONDS && mpv --no-terminal "$DING_FILE") & + slock done -- cgit v1.2.3