diff options
Diffstat (limited to 'gromo')
-rwxr-xr-x | gromo | 65 |
1 files changed, 37 insertions, 28 deletions
@@ -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 "<fc=red>$(cat $STATE_FILE)</fc> ($gromos)" - else - echo "<fc=green>idle</fc> ($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 "<fc=$color>$state</fc>$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 |