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