An open API service indexing awesome lists of open source software.

https://github.com/reykjalin/todui

Task management and note taking TUI powered by plaintext with full mouse support. Built with Zig.
https://github.com/reykjalin/todui

notes task-manager todo tui zig

Last synced: about 1 year ago
JSON representation

Task management and note taking TUI powered by plaintext with full mouse support. Built with Zig.

Awesome Lists containing this project

README

          

# Todui

> **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](./SPECIFICATION.md) 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](./todo/) directory.
View the list of tasks by running `todui .` from the root of the repo for the best experience viewing those.

![Todui task list at commit hash `2d2f133904a97292c5ac50917e7ed175fb71a569`](./screenshots/task-list-2d2f133904a97292c5ac50917e7ed175fb71a569.webp)

## Installation instructions

### Download binaries

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.

### Build from source

1. Clone this repository or download the source some other way.
2. Run `zig build -Doptimize=ReleaseSafe --prefix=~/.local` and the `todui` 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.

## CLI Help

```sh
$ 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.

## Keybindings

### Task List

| 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 |

### Completed Task List

| 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 |

### Task Details

| Key | Action |
|:---:|:---:|
| h / esc | Go back to previous view |
| e | Edit task |
| c | Complete task |

### Task Filter

| Key | Action |
|:---:|:---:|
| enter | Save filter. Empty filter results in no filtering being applied |

## Dev build instructions

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`.

## Screenshots

![Todui task list at commit hash `2d2f133904a97292c5ac50917e7ed175fb71a569`](./screenshots/task-list-2d2f133904a97292c5ac50917e7ed175fb71a569.webp)
![Todui completed tasks at commit hash `2d2f133904a97292c5ac50917e7ed175fb71a569`](./screenshots/completed-tasks-2d2f133904a97292c5ac50917e7ed175fb71a569.webp)
![Todui task details at commit hash `2d2f133904a97292c5ac50917e7ed175fb71a569`](./screenshots/task-details-2d2f133904a97292c5ac50917e7ed175fb71a569.webp)