a tool created to display current progress in couch-to-5k style workout schedules either by printing to terminal or using polybar.
first, you transcribe your schedule into an easy yaml format.
then, you can use scheddy for:
- updates in polybar about what today's workout looks like
- a pretty table printed to terminal detailing your schedule and scheddy will update hourly without need for refreshing
this yaml file:
start_date: "06-26-2022"
start_dow: "sun"
week_1:
dw1: "5W, 1J/1.5W -> 20min"
dw2: "stretch or core"
dw3: "5W, 1J/1.5W -> 20min"
dw4: "stretch or core"
dw5: "5W, 1J/1.5W -> 20min"
dw6: "stretch or core"
dw7: "stretch"
week_2:
dw1: "5W, 1.5J/2W -> 20min"
dw2: "stretch or core"
dw3: "5W, 1.5J/2W -> 20min"
dw4: "stretch or core"
dw5: "5W, 1.5J/2W -> 20min"
dw6: "stretch or core"
dw7: "stretch"
might yield this polybar output:
sunday's workout: 5w, 1j/1.5w -> 20min
or this polybar scrolling output:
sunday, june 26: day 1 of week 1
today's workout: 5W, 1J/1.5W -> 20min
or this table (depends on your terminals color scheme):
manually:
git clone https://github.com/okosuno/scheddy.git
cd scheddy
pip install -r requirements.txt
simplest usage:
python scheddy [commands]
or
chmod +x scheddy
./scheddy [commands]
unless you specify a --config
path, scheddy will create one at:
$HOME/.config/scheddy/
and if you don't have a scheddy.yaml
in your config folder,
scheddy will make one for you.
now you can add scheddy's binary to anywhere you like your binaries.
for me it was ~/.local/bin/
with my other python programs.
help:
usage: scheddy [-h] [-m {poly,polym,table}] [-i INTERVAL] [-n] [-c CONFIG] [-s STRING] [-l]
options:
-h, --help show this help message and exit
-m {poly,polym,table}, --mode {poly,polym,table}
choose output style
-i INTERVAL, --interval INTERVAL
time in seconds between lines in polym mode (default:10)
-n, --no-date do not show date in tables
-c CONFIG, --config CONFIG
specify alternative path for config
-s STRING, --string STRING
customize the string for polybar, takes strftime for dates
-l, --lower forces given string to be all lowercase
use -i, -s, -l
flags with poly
or polym
modes.
use -n
flag with table
mode.
e.g. scheddy -m poly -s '%A's workout:' -l
here is my polybar module:
[module/scheddy]
type = custom/script
exec = /usr/bin/python /home/oko/.local/bin/scheddy -m poly
tail = true
label = " %output% "
label-foreground = ${color.background}
label-background = ${color.shade2}
in no particular order:
- more scrolling output options (tomorrow's workout, days elapsed)
- custom theme/formatting options
- configure new schedule through commands
- add tests
- remove need for "start_dow"
- infinite schedule mode -> repeat final week indefinitely
- print hypothetical schedules (dateless)