| texercise_time.sh - exercise_time - announce workout exercises with notificatio… | |
| git clone git://src.adamsgaard.dk/exercise_time | |
| Log | |
| Files | |
| Refs | |
| LICENSE | |
| --- | |
| texercise_time.sh (3126B) | |
| --- | |
| 1 #!/bin/sh | |
| 2 | |
| 3 # IT'S EXERCISE TIME! | |
| 4 # Requires the `festival` speech synthesizer if on Linux and/or `libnoti… | |
| 5 # and a notification daemon such as `dunst`. On OS X `growl` can be used… | |
| 6 # notification daemon. | |
| 7 | |
| 8 ### I have the following entries in my user's cron tab (`crontab -e`) | |
| 9 # # m h dom mon dow command | |
| 10 # # Even days: Triceps and chest | |
| 11 # 55 */2 2-30/2 * * DISPLAY=:0 bash ~/code/exercise_time/exercise_… | |
| 12 # 55 1-23/2 2-30/2 * * DISPLAY=:0 bash ~/code/exercise_time/exercise_… | |
| 13 # | |
| 14 # # Odd days: Biceps and legs | |
| 15 # 55 */2 1-31/2 * * DISPLAY=:0 bash ~/code/exercise_time/exercise_… | |
| 16 # 55 1-23/2 1-31/2 * * DISPLAY=:0 bash ~/code/exercise_time/exercise_… | |
| 17 | |
| 18 # Wait time in seconds between sets | |
| 19 WAITSECS=120 | |
| 20 | |
| 21 # Announce via speech synth (0: No, 1: Yes) | |
| 22 SPEECHSYNTH=1 | |
| 23 | |
| 24 usage() { | |
| 25 echo "Usage: ${0##*/} <SETS> <EXERCISE>" | |
| 26 echo "Example: For three sets of ten pushups, use:" | |
| 27 echo " $0 3 'Do ten push ups'" | |
| 28 } | |
| 29 | |
| 30 if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then | |
| 31 usage | |
| 32 exit 0 | |
| 33 fi | |
| 34 | |
| 35 # stop mpd if it is running | |
| 36 #mpc pause > /dev/null 2>&1 | |
| 37 | |
| 38 UNAMESTR="$(uname)" | |
| 39 | |
| 40 # announce exercise the specified number of times | |
| 41 | |
| 42 # Only send notification at work | |
| 43 if [ "$UNAMESTR" = "Darwin" ]; then | |
| 44 IP=$(/sbin/ifconfig | grep 10.9.62) # Sayre Hall | |
| 45 else | |
| 46 IP=$(ip addr | grep 192.168.0) | |
| 47 fi | |
| 48 | |
| 49 for i in $(seq 1 "$1"); do | |
| 50 | |
| 51 announcement="It's exercise time! $2" | |
| 52 | |
| 53 # Send message to notification daemon if computer is plugged in at m… | |
| 54 # desk | |
| 55 if [ -n "$IP" ]; then | |
| 56 | |
| 57 # OS X | |
| 58 if [ "$UNAMESTR" = "Darwin" ]; then | |
| 59 osascript -e "display notification \"$2\" with title \"It's … | |
| 60 | |
| 61 # Linux | |
| 62 elif [ "$UNAMESTR" = "Linux" ]; then | |
| 63 notify-send "$announcement" | |
| 64 fi | |
| 65 fi | |
| 66 | |
| 67 # Use speech synthesis if the computer is plugged in at my office de… | |
| 68 if [ $SPEECHSYNTH -eq 1 ]; then | |
| 69 | |
| 70 # OS X | |
| 71 if [ "$UNAMESTR" = "Darwin" ]; then | |
| 72 if [ -n "$IP" ]; then | |
| 73 say "$announcement" | |
| 74 fi | |
| 75 | |
| 76 # Linux | |
| 77 elif [ "$UNAMESTR" = "Linux" ]; then | |
| 78 | |
| 79 playingmusic=0 | |
| 80 | |
| 81 if [ -n "$IP" ]; then | |
| 82 # if command -v mpc >/dev/null 2>&1; then | |
| 83 # if [ "$(mpc | grep playing)" ]; then | |
| 84 # mpc pause > /dev/null 2>&1 | |
| 85 # sleep 2 | |
| 86 # playingmusic=1 | |
| 87 # fi | |
| 88 # fi | |
| 89 if command -v festival >/dev/null 2>&1; then | |
| 90 echo "$announcement" | festival --tts | |
| 91 fi | |
| 92 if command -v mpc >/dev/null 2>&1; then | |
| 93 if [ $playingmusic -eq 1 ]; then | |
| 94 sleep 2 | |
| 95 mpc play > /dev/null 2>&1 | |
| 96 fi | |
| 97 fi | |
| 98 fi | |
| 99 fi | |
| 100 fi | |
| 101 | |
| 102 if [ "$i" -lt "$(echo "$1" | bc -l)" ]; then | |
| 103 sleep $WAITSECS | |
| 104 fi | |
| 105 done |