diff options
Diffstat (limited to 'gromo')
-rwxr-xr-x | gromo | 39 |
1 files changed, 29 insertions, 10 deletions
@@ -10,35 +10,54 @@ GROMO_SECONDS=$((60 * 20)) STOP_SECONDS=20 DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gromo -TODAY_FILE=$DATA_DIR/$(date -I) -DING_FILE=${XDG_CACHE_HOME:-$HOME/.cache}/gromo/ding.opus -WORKING_FILE=$DATA_DIR/working +CACHE_DIR=${XDG_CACHE_HOME:-$HOME/.cache}/gromo +STATE_DIR=${XDG_STATE_HOME:-$HOME/.local/state}/gromo -mkdir -p "$DATA_DIR" +TODAY_FILE=$DATA_DIR/$(date -I) +DING_FILE=$CACHE_DIR/ding.opus +STATE_FILE=$STATE_DIR/state gromos=0 [ -f "$TODAY_FILE" ] && read -r gromos < "$TODAY_FILE" if [ "$1" = "--xmobar-status" ]; then - if [ -f "$WORKING_FILE" ]; then - echo "<fc=red>working</fc> ($gromos)" + if [ -f "$STATE_FILE" ]; then + echo "<fc=red>$(cat $STATE_FILE)</fc> ($gromos)" else echo "<fc=green>idle</fc> ($gromos)" fi 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") + " + exit 0 +elif [ "$#" -ge 1 ]; then + task=$1 +else + task=work fi +mkdir -p "$DATA_DIR" "$STATE_DIR" + [ -f "$DING_FILE" ] || curl $DEFAULT_DING --create-dirs -so "$DING_FILE" -trap "rm -f $WORKING_FILE; exit" INT TERM EXIT -rm -f $WORKING_FILE +if [ -f $STATE_FILE ]; then + echo "Another instance is currently running; exiting (remove $STATE_FILE to override)" + exit 1 +fi +echo idle > "$STATE_FILE" +trap "rm -f $STATE_FILE; exit" INT TERM EXIT while true; do read -rn1 -p "Press any key to start gromo > " echo -ne "\r\033[K" - touch $WORKING_FILE + echo $task > "$STATE_FILE" sleep $GROMO_SECONDS - rm -f $WORKING_FILE + echo idle > "$STATE_FILE" gromos=$((gromos+1)) seconds=$((gromos * GROMO_SECONDS)) |