aboutsummaryrefslogtreecommitdiff
path: root/gromo
diff options
context:
space:
mode:
Diffstat (limited to 'gromo')
-rwxr-xr-xgromo39
1 files changed, 29 insertions, 10 deletions
diff --git a/gromo b/gromo
index 9c39937..f4a65bf 100755
--- a/gromo
+++ b/gromo
@@ -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))