dijo is a habit tracker. It is curses-based, it runs in
your terminal. dijo is scriptable, hook it up with external programs
to track events without moving a finger. dijo is modal,
much like a certain text editor.
- Vim like motions: navigate
dijowithhjkl! dijois modal: different modes to view different stats!- Vim like command mode: add with
:add, delete with:deleteand above all, quit with:q!. - Fully scriptable
To get the latest release of dijo, prefer installing it
via cargo. Unofficial packages exist for some package
managers as well. You can also browse the
Releases
page for prebuilt binaries.
# dijo requires rustc >= v1.42
$ rustup update
$ cargo install dijodijo has a detailed
wiki, here are
some good places to start out:
habit:
type: bit/count
stats:
year:
month:
bit:
|-- dates - array
count:
|-- dates - k,v pairs
habit:
-type: bit/count
-stats: k,v (dates, bit/count)
Cycle habit type:
nstates- cycles through states on
prevnextevents - represent by symbol/char
sertousize?
Modes:
- Day mode - shows all days of 1 month
- shift months on Previous/Next
- Week mode?
- Aggregate stats for 1 week
- show 4 weeks per view
- bar graph for count and bit
Command mode:
- Add command
add <name> <type> <goal>add <name> --type <type> [--goal <goal>]- Interactive add command via questionnaire?
- Edit command?
edit <name> <new-type> <new-goal>edit <name> --goal <new-goal>edit <name> --type <new-type>- Interactive edit command via questionnaire?
- Delete command
delete <name>delete _ (deletes focused?)
- Chronological nav:
month-prevmprevmonth-nextmnext
Interface:
- Move view port if focused view goes outside bounds
- Tab completion for command mode? Requires Lex table
- Move command window to bottom, styling
- Prefix command window with
:
Undo-tree:
- Store app states in memory
- Should store diffs? Or entire state?
- Ideal undo depth limit?
