blob: f4a65bf7547c0c3ea35ddf3aaf0844ca688f73d9 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
#!/bin/bash
#
# gromo - To count your daily gromodoros :thumbsup
#
# Dependencies: curl and mpv for the 'ding' sound; slock to force you to rest :)
################################################################################
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)
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 "$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"
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"
echo $task > "$STATE_FILE"
sleep $GROMO_SECONDS
echo idle > "$STATE_FILE"
gromos=$((gromos+1))
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
gromo_time="$((seconds / 60)) minutes"
else
gromo_time="$((seconds / 3600)) hours"
fi
echo -ne "Completed $gromos gromos today ($gromo_time). "
done
|