Note
I consider Todui to be mostly feature complete at this point. Future development will be slow and mostly consist of minor quality-of-life improvements or fixing little annoyances and bugs that come up.
A filesystem based TUI app for managing todo lists.
The .todo
file specification was created to fit this specific implementation.
The TUI is fully mouse aware so you can use both the keybindings listed below or the mouse to navigate the TUI.
You can find the planned list of future tasks, including details where applicable, in the todo directory.
View the list of tasks by running todui .
from the root of the repo for the best experience viewing those.
The tags and releases have binaries available for macOS (arm64 and x86_64), Linux (arm64 and x86_64), and Windows (x86_64). You can download a pre-built binary for your system from there. The binaries are static so you can store them wherever you like and run them from there.
- Clone this repository or download the source some other way.
- Run
zig build -Doptimize=ReleaseSafe --prefix=~/.local
and thetodui
executable will be installed in~/.local/bin/todui
.- If you build without the
--prefix=~/.local
parameter the binary will be in./zig-out/bin/todui
. It's static so you can move it wherever you want.
- If you build without the
$ todui --help
Usage: todui [storage_folder]
Positional options:
[storage_folder] The path to where todui data should be stored.
Defaults to ~/.local/share/todo/ when no path is provided.
General options:
-h, --help Print todui help
-v, --version Print todui version
The storage_folder
positional argument can be used to change where tasks are stored.
The default path is ~/.local/share/
and tasks will be saved in ~/.local/share/todo/
.
If you'd like to, for example, have the tasks stored in ~/.config
you can run todui ~/.config
.
If you do, tasks will be saved in ~/.config/todo/
.
This is very helpful for testing, but also if you'd like to maintain distinct lists for different purposes. For example, a complete separation between work and personal lists. You could do the same with tags, but in that case the storage is the same for both.
Key | Action |
---|---|
j / down | Move selection down |
k / up | Move selection up |
g | Move selection to top |
G | Move selection to bottom |
J / shift+down | Move selected task down |
K / shift+up | Move selected task up |
l / enter | Open task details view for the selected task |
A | Create new task, appended to the bottom of the list |
e | Edit selected task |
c | Complete selected task |
r | Reload task list |
f | Open filter view |
H | Hide the tags column |
tab | Open completed task list view |
Key | Action |
---|---|
j / down | Move selection down |
k / up | Move selection up |
g | Move selection to top |
G | Move selection to bottom |
l / enter | Open task details view for the selected task |
r | Reload task list |
f | Open filter view |
H | Hide the tags column |
tab | Open task list view |
Key | Action |
---|---|
h / esc | Go back to previous view |
e | Edit task |
c | Complete task |
Key | Action |
---|---|
enter | Save filter. Empty filter results in no filtering being applied |
This app is written in Zig and libvaxis and uses the Zig Build system.
To build, simply download Zig and run zig build run
.
Dependencies will automatically be fetched and built for your system.
To make a release build run zig build -Doptimize=ReleaseSafe
.
You'll find the built release executable in ./zig-out/bin/todui
.