#cli #todo #todo-list

app clido

A tool for creating and maintaining a todo-list on the command line

5 unstable releases

0.3.1 Nov 30, 2022
0.3.0 Nov 29, 2022
0.2.0 Mar 24, 2021
0.1.1 Mar 21, 2021
0.1.0 Mar 21, 2021

#1521 in Command line utilities

Download history 6/week @ 2023-11-09 2/week @ 2023-11-16 5/week @ 2023-11-23 22/week @ 2023-11-30 5/week @ 2023-12-14 10/week @ 2023-12-21 1/week @ 2023-12-28 5/week @ 2024-01-04 8/week @ 2024-01-18 10/week @ 2024-01-25 10/week @ 2024-02-01 14/week @ 2024-02-08 52/week @ 2024-02-15

86 downloads per month


562 lines


A tool for creating and maintaining a todo-list on the command line

Table of Contents


After wasting tons of sticky notes in an attempt to keep myself organized, I decided I would benefit from a CLI as I do spend a lot of my time on my computer / in the terminal.

I decided to write a Rust alternative to the well known Task Warrior.


 clido add "Write more examples for people" # Adds with no priority

 clido add -p low "Do more things"          # Adds a new todo with low priority

 clido list                                 # Outputs a table will all of the todos

 clido mark 0                               # Marks the 0th task as complete

 clido del 0                                # Deletes the 0th task

Installation and Usage


Currently, the only way to install clido is using cargo:

  • cargo install clido


Clido's commands follow the following format:

clido [Subcommand] [Flags] [Options] [Input]

clido has the following functionalities:

Goal Command Options Input
Add an item clido add -s --start
-d --due
-p --priority
-t --tags
"Put the task you want here"
Delete an item clido del The ID number of the task you
want to delete.
Mark an item as
clido mark The ID number of the task you
want to mark complete.
List items clido list -f --filter
-c --complete
-p --pending
Filters that an item must have
to be shown

Formatting Rules

Dates (--start / --due) can be input in the following ways:

  • Long name of day (e.g. Monday, Tuesday, ... )
  • Abbreviation of the day (e.g. Mon, Tue, ...)

Tags (--tags) must be separated by a comma if using multiple tags. Examples:

  • clido add -t school,math,homework "Page 45. Logarithms 10-23"
  • clido add -t home,chores,dishes "Run the dishwasher"
  • clido add -t no-tag

Environment Variables

    • Specifies the directory in which clido should store its database.

    • The default value varies across OSes:

      OS Path Example
      Linux / BSD $XDG_DATA_HOME or $HOME/.local/share /home/alice/.local/share
      macOS $HOME/Library/Application Support /Users/Alice/Library/Application Support
      Windows {FOLDERID_RoamingAppData} C:\Users\Alice\AppData\Roaming


Clido is still lacking many of the features I would like, such as:

  • Groups (tags)
  • Filters
  • Named Dates
  • End Dates (via date)
  • Recurring Tasks (Marks self as pending every specified interval)
  • Colors
  • Color Themes
  • Interactive marking / deleting using fzf
  • Configurable output

I plan to be adding these in as I go, although I can't promise any dates. Feel free to leave suggestions for any other features that you would like to see on the list.


A good portion of the code that I use was possible thanks to a GitHub user ajeetdsouza, and their work on Zoxide. Clido is using many of the same features to Zoxide in order to make things work efficiently and quickly. I found their use of temp files worthwhile, and wanted to make sure that it would be similarly implemented for my program as well.


~206K SLoC