Todo.txt terminal frontend
- Colored output, respecting native terminal colors
- Better default sorting (deprioritizes tasks before threshold date, etc.)
- FZF like menu with auto reload
- Task recurrence, propagated to both
t
anddue
attributes, at 'do' time...- ...and after it if task was marked as done from another device
- Auto archival of done tasks...
- ...with compression for old tasks
- Automatic backup
- Undo
- Report of tasks created/completed in the last N days
- Task dependencies
- Completely independant of
todo.sh
I have been a heavy Taskwarrior user for several years, but have been dissatisfied mostly with the inability to reliably share task handling between devices.
Strengths:
- the data model does no force a way to manage tasks
- ability to customize the formula that computes the priority values, and consequently the sorting of tasks
Weaknesses:
- recurrence is not usable with more than one device without risking data loss or duplicate task creation
- recurrence model is limited: next task is always created regardless if the previous one is still pending
- no usable Android app
- the command line tool
task
, has many bugs (breaking unicode strings, inconsistent option handling or formatting...) - the sync daemon is of proof of concept quality, and is terribly lacking both in its design and implementation
Strengths:
- has a very simple and flexible file format, which allows editing tasks by hand
- consequently, syncing the file across devices is trivial (ie. with Syncthing) and merging modifications from devices also is
- has several usable Android apps
Weaknesses:
- no support for recurrence, waiting tasks, or dependencies out of the box, although this is for the most part commonly done with addons and custom attributes
- none of the Android apps fully handle both
rec
andt
- no smart task sorting the way taskwarrior does
The goals of this project is to improve the weaknesses of Todo.txt for my use cases, while keeping the flexibility, ease of sync, and existing ecosystem compatibility of the original text format.
You need a Rust build environment for example from rustup.
cargo build --release
install -Dm 755 -t /usr/local/bin target/release/todo