Rodo
Rodo is terminal-based todo manager written in Ruby with a inbox-zero mentality. It takes inspiration from bullet journalling.
Screenshot
Detail Description
Rodo is a todo/task manager with a terminal-based user interface (TUI). It uses markdown
as the underlying file format, which allows you to also edit the resulting todo files with any other text editor. Rodo structures your todos primarily using dates ("What do I need to do today?") and only then using sub-sections for projects.
Rodo is a text editor, but with a rich command vocabulary which perform actions related to todo and task management. It is similar to vi
in that by default you are not in a mode where you can edit
, but in a command mode where keystroke are interpreted as commands. For examples, pressing A will append a todo to the currently selected day and enter single line edit mode
.
Rodo suggests that every day you start at a blank page and take over the relevant entries from the previous days. This idea originates from bullet journalling (e.g. https://bulletjournal.com/pages/learn), but gets software support in Rodo:
- You can either press T (today) to create a new entry for the current date and copy all tasks which are unfinished over automatically.
- Or you can move individual entries over to the next day by pressing P (postpone).
Rodo is programmed in Ruby and uses ncurses
under the hood.
Features
Rodo is work in progress but can already be used for basic todo tracking. Currently the following features are supported:
- Command mode, single line edit mode, journalling mode.
- Append, Insert, Edit, Kill, ⭾TAB and ⇧Shift+⭾TAB to indent and unindent, Save+Quit Q
- CTRL+C will exit without saving
- Bracketed paste support allows to paste from the clipboard without seeing indentation artifacts.
- Backup before save (stored to
_bak\
)
Things not working currently
Rodo comes with no warranty and is still rough. The most notable things missing in the release 0.1.0:
- No undo/redo
- No autosave
- No scrolling
- No mouse interaction
- No special handling for any markdown except unordered lists, headings and todos.
Installation & First Run
Install the rodo
gem locally
$ gem install rodo
Then run it:
$ rodo
Starting rodo without arguments will use '~/plan.md' as the markdown file.
Note: Rodo requires Ruby 2.7 and higher due to using the pattern matching case
statement.
Note: When running with rbenv
you need to rbenv rehash
after you installed the gem for the command line wrapper to become visible on the path.
Usage
To run:
$ rodo [file]
By default rodo is in scroll
mode, with the following keys supported:
- cursor keys Up/Down select particular line, Left/Right go to previous/next day
- Q Quit with Save
- CTRL+C Quit without Save
- A Append new todo below with same indent as current line
- I Insert new todo before the current lien with same indent as current line
- K Kill current line
- P Postpone current line to tomorrow
- W Mark current todo as waiting for reply/other person (put a reminder in 7 days)
- T Create a new entry for today's date and move all unfinished todos over.
- X Toggle current line as Complete/Incomplete
- ⭾TAB and ⇧Shift+⭾TAB to indent and unindent
- ENTER Start editing the current line. Finish editing with another
ENTER
. - E Enter editing mode. ENTER will create a new line in this mode.
- F1 See a command palette.
In editing
mode most keys will just create resulting in typing, except:
- CTRL+A, CTRL+E Put cursor at start of line, end of line.
- ⭾TAB and CTRL+RIGHT Move to beginning/end of next/previous word.
Development
After checking out the repo, run bin/setup
to install dependencies. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and the created tag, and push the .gem
file to rubygems.org.
License
Rodo is licensed under GPL-v3 or later.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/coezbek/rodo.