# toddi
Want to get things done? Pick a task, do it, and move on to the next one.
`toddi` will tell you exactly what to focus on, per project, based on your
`todo.txt` tasks.
## Why?
Why not?
I've been using `todo.txt` regularly for a few months, and I noticed that:
1. I get distracted by the list of tasks.
1. I can't be bothered to learn the various command line arguments to filter
out the output
1. I needed a way to _focus_ on _one_ task (the most important)
Hence, `toddi`. I'm building it to fit my purpose.
Which also turned out to be a good excuse to practice some Rust.
## Requirements
At this stage, `toddi` is meant to be used with `todo.txt`, unless you are
willing to spend time manually moving TODOs to `done.txt` with the correct
formatting.
By default, the program assumes the default `todo.txt` paths in the absence of
the relevant optional input:
* `~/.todo-txt/todo.txt`
* `~/.todo-txt/done.txt`
### Task line format specification
The format for a task line should conform to `todo.txt` documentation.
E.g.:
```
(PRIO) Task's short description +project @context
```
The priority `(PRIO)` field is a single capital letter enclosed within
parenthesis. Only one is allowed.
The task description field is a contiguous alphanumerical space-separated
multiple-word sentence. It tolerates the following special non-alphanumerical
characters: `. _ - '` (i.e. dot, underscore, dash and apostrophe). Any other
will invalidate the line.
The project field is an alphanumerical single word preceded by a `+` (plus)
sign. Only one is allowed.
The context field is an alphanumerical single word preceded by a `@` (at) sign.
Only one is allowed.
The context and project fields can switch place between each other.
The format for a done line looks like this:
### Done line format specification
```
x YYYY-MM-DD Task's short description +project @context
```
Note the `x` on the left.
## Usage
If you trust your planning and just need a way to focus on _the next task_,
use:
```sh
$ toddi
```
Display next `todo.txt` task for project `myproject` (i.e. `+myproject` on the
task line) and a progress bar indicating the project's level of completion.
```sh
$ toddi focus myproject
```
Use `--help` for more information:
```sh
$ toddi --help
```
## Configuration
A TOML configuration file is expected at the standard XDG_CONFIG_HOME location:
`$HOME/.config/toddi/config.toml`
If not present, it will be automatically created and populated with mandatory
default values on first use.
```toml
todo_file = "/home/user/.todo-txt/todo.txt"
done_file = "/home/user/.todo-txt/done.txt"
```
## License
source
: [GPL-3.0-or-later](https://spdx.org/licenses/GPL-3.0-or-later.html)