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(-)
(limited to 'gromo')
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