Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/darrikonn/td-cli

A todo command line todo manager ✔️
https://github.com/darrikonn/td-cli

td td-cli todo todolist

Last synced: 6 days ago
JSON representation

A todo command line todo manager ✔️

Awesome Lists containing this project

README

        


Icon






















td-cli is a command line todo manager,
where you can organize and manage your todos across multiple projects


gif



## Installation

[**td-cli**](https://pypi.org/project/td-cli/) only works for `python 3`, so it needs to be installed with `pip3`

```bash
pip3 install td-cli
```

### Windows 10

In order to use the interactive mode on Windows, you'll have to install [**windows-curses**](https://pypi.org/project/windows-curses/)

```bash
pip install windows-curses
```

In addition to that, [**Windows Terminal**](https://github.com/microsoft/terminal) is recommended for better UX.

## Getting started

Run `td --help` to see possible commands.

Here are some to get you started:

- Run `td` to list all your todos.

- Run `td add "my new awesome todo"` to add a new todo.

- Run `td complete` to complete your todo. You don't have to specify the whole `id`, a substring will do. It'll fetch the first one that it finds in the same order as when you list your todos.

Note that `global` is a preserved group name where you can list all your global groups. You can always set it as the default with:

```bash
td group global preset
```

## API

Check out the [`api`](https://github.com/darrikonn/td-cli/blob/master/API.md).

## Configuring

The location of your todos and your configuration will depend on these environment variables (in this order):

1. **TD_CLI_HOME**: determines where your `todo.db` and `todo.cfg` file will live
2. **XDG_CONFIG_HOME**: a fallback if `$TD_CLI_HOME` is not set
3. **HOME**: a fallback if `$XDG_CONFIG_HOME` is not set. If `$HOME` is used; all files will be transformed to a dotfile, i.e.`~/.todo.db` and `~/.todo.cfg`.

### Database name

Your database instance will be located in in the before-mentioned configuration directory.
By default the database will be named `todo`.

You can change your database name by specifying `database_name` in your `$TD_CLI_HOME/.todo.cfg` file:

```cfg
[settings]
database_name: something_else
```

This results in a database instance at `$TD_CLI_HOME/.something_else.db`

### Format

You can specify your preferred format of your todo's details via the format config keyword:

```cfg
format: md
```

This would result in the `.md` (Markdown) file extension when editing a todo. This allows you to use the power of your editor to e.g. syntax highlight the details, and etc.

### Editor

When editing a todo, `td edit`, you can both specify the todo's `name` and the todo's `details` via options (see `td edit --help`). If no option is specified, your todo will be opened in `vi` by default (your `environement EDITOR` will override this) where you can edit the todo's details. You can change the default editor by updating your config:

```cfg
[settings]
editor: nvim
```

### Only list uncompleted todos

When listing todos, by default td-cli will list both completed and uncompleted todos. If you want to only list uncompleted todos by default, then you can apply the completed config:

```cfg
[settings]
completed: 0
```

### Group

When listing todos, you have the option of specifying what group to list from:

```bash
td -g my-group
# or
td g my-group
```

If no group is provided, `td` will list from the current default group. You can globally set the default group with:

```bash
td g my-group preset
```

However, there's an option to set the default group per git project (this is not possible from the root config `$TD_CLI_HOME/.todo.cfg`).
In any root of your projects, you can create a `.td.cfg` config file to specify what group to default on (this will override the global default group):

```cfg
[settings]
group: my-group
```

If you run `td` within your git project, td will default to _my-group_.

I recommend globally ignoring `.td.cfg` in `~/.gitignore`.