td-cli is a command line todo manager,
where you can organize and manage your todos across multiple projects
td-cli only works for python 3, so it needs to be installed with pip3
pip3 install td-cliIn order to use the interactive mode on Windows, you'll have to install windows-curses
pip install windows-cursesIn addition to that, Windows Terminal is recommended for better UX.
Run td --help to see possible commands.
Here are some to get you started:
-
Run
tdto list all your todos. -
Run
td add "my new awesome todo"to add a new todo. -
Run
td <id> completeto complete your todo. You don't have to specify the wholeid, 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:
td group global presetCheck out the api.
The location of your todos and your configuration will depend on these environment variables (in this order):
- TD_CLI_HOME: determines where your
todo.dbandtodo.cfgfile will live - XDG_CONFIG_HOME: a fallback if
$TD_CLI_HOMEis not set - HOME: a fallback if
$XDG_CONFIG_HOMEis not set. If$HOMEis used; all files will be transformed to a dotfile, i.e.~/.todo.dband~/.todo.cfg.
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:
[settings]
database_name: something_elseThis results in a database instance at $TD_CLI_HOME/.something_else.db
You can specify your preferred format of your todo's details via the format config keyword:
format: mdThis 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.
When editing a todo, td <id> edit, you can both specify the todo's name and the todo's details via options (see td <id> 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:
[settings]
editor: nvimWhen 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:
[settings]
completed: 0When listing todos, you have the option of specifying what group to list from:
td -g my-group
# or
td g my-groupIf no group is provided, td will list from the current default group. You can globally set the default group with:
td g my-group presetHowever, 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):
[settings]
group: my-groupIf you run td within your git project, td will default to my-group.
I recommend globally ignoring .td.cfg in ~/.gitignore.


