Home Linux Commandline Tools 6 Best To-Do List Managers for Linux Command Line

6 Best To-Do List Managers for Linux Command Line

As you grow your Linux operating system experience and become imprinted on its command-line environment, you start having more and more exciting tasks to do. With time, it might become impossible to keep track of what computing task or project milestone you have successfully accomplished.

Such a scenario might reduce your Linux OS productivity. However, with every problem associated with a Linux operating system, there is always a Linux-oriented solution. The best way of keeping track of your Linux OS activities/objectives is via a to-do list manager.

In this article guide, we will walk you through the analysis and installation of some recommended to-do list managers for your Linux command-line environment.

1. t Command-Line To-Do List Manager

t is a command-line to-do list manager that prioritizes the need to create a solution for users to finish tasks rather than organize them. Other list managers are attributed as feature-packed because their associated tasks can be prioritized, split, and tagged.

They also give users the opportunity to color-code tasks and order them if needed. As for t to-do list manager, it is simple and almost featureless. Its almost featureless attribute makes it faster to use than its mentioned nemesis such that you won’t spend too much time tagging tasks instead of finishing them. It is flexible and version-control-friendly.

To install t to-do list manager, you must have the latest Python3 (which comes preinstalled on most Linux distributions) and Git installed on your Linux system.

First, clone the repository and then create a directory for storing your to-do list:

$ git clone https://github.com/sjl/t.git
$ cd t
$ ls
$ mkdir ~/tasks
Create To Do List Directory
Create To-Do List Directory

Next, add an alias to t in the ~/.bashrc file.

alias t='python3 /path/to/t.py --task-dir ~/tasks --list tasks'

Reload the ~/.bashrc file.

$ source ~/.bashrc

To add, list, finish or edit a task, implement:

$ t [task description]         #add a task
$ t                            #list tasks 
$ t -f [task_ID]               #finish a task
$ t -e ID [edit description]   #edit a task
t Task Manager Commands
t Task Manager Commands

More usage of t is on its manual page:

$ t -h 

2. Yokadi To-Do List Manager

Yokadi is a command-line TO-DO list solution that is SQLITE-powered with the primary objective of aiding Linux users in organizing their workflow and ensuring they work on unfinished tasks.

Its functionality is characterized as efficient, intuitive, and simple. The tasks associated with this TO-DO list solution can have keywords, urgency, due date, and description.

To install Yokadi on Debian-based distributions using the apt package manager:

$ sudo apt install yokadi

On other Linux distributions, we can make use of the pip – Python package manager.

$ pip3 install yokadi

Open the following file:

$ sudo nano $HOME/.local/lib/python3.10/site-packages/sqlalchemy/sql/base.py

Replace all instances of collections.MutableMapping with collections.abc.MutableMapping to avoid running into the error message:

AttributeError: module 'collections' has no attribute 'MutableMapping'

To launch and know the usage of yokadi, use:

$ yokadi                 
> t_add virtualbox download and install virtualbox    #create a task
Create Task in Yokadi
Create Task in Yokadi

As you can see, the first portion of the command has been taken as the project name (virtualbox) and the remaining portion as a task (download and install virtualbox).

We can add more tasks in the following manner:

> t_add _ install Ubuntu 20.04 on virtualbox

The underscore links the task to the last used project:

> t_add _ install RHEL8 on virtualbox
> t_add _ install Arch Linux on virtualbox

To list the tasks associated with our project (virtualbox), we’ll run:

> t_list virtualbox

To mark a task as done, we will use its task ID e.g mark “install arch Linux on virtualbox” as done.

> t_mark_done 4
> t_list virtualbox

To list tasks accomplished today (present date):

> t_list virtualbox --done today

To associate a task with a due date, we will use the task ID:

> t_due 1 +2d
> t_due 3 21/08 11:00

Refer to the Yokadi manual page for more command usage and references.

3. Taskwarrior To-Do List Manager

Taskwarrior is a command line task list management tool that comes with a multitude of features. To install Taskwarrior, use:

$ git clone --recursive -b stable https://github.com/GothenburgBitFactory/taskwarrior.git
$ cd taskwarrior
$ cmake -DCMAKE_BUILD_TYPE=release .
$ make 
$ sudo make install 

To create a task or to-do list associated with a due date:

$ task add Pay Internet due:eom

To create a task without a due date and add a due date later:

$ task add Pay Water Bill
$ task 2 modify due:eom

To remove the due date from the specific task:

$ task 1 modify due:

If your task has multiple line description, you can create it in the following manner:

$ task add "Ten things to learn from LinuxShellTips before 2022 ends!"
Taskwarrior Command Usage
Taskwarrior Command Usage

To display a list of your created tasks, run:

$ task list

A complete user manual of this utility can be found by running the command:

$ task help

4. DevTodo To-Do List Manager

DevTodo utility is hierarchically organized such that it can track the creation and completion time of tasks. To install it, you need Homebrew installed on your machine.

$ brew install devtodo

To add a task:

$ todo -a Pay Monthly Internet 

We can also add a sub-task to the above task by specifying its index:

$ todo -ag 1 Vilcom Subscription 

To add another sub-task, we will reference the sub-task index 1.1 above:

$ todo -ag 1.1 Contact Ravi 
DevTodo Command Usage
DevTodo Command Usage

To list all your tasks:

$ todo -A

To mark a task as done:

$ todo -d 1.1.1

A complete user manual of this utility can be found by running the command:

$ man devtodo

5. Ultralist Task Management System

Ultralist is easy to use, powerful, and open-source task management system for the Linux command line. We can install it via Homebrew in the following manner:

$ brew install ultralist

The first step is to initialize an ultralist repo:

$ ultralist init 

The following screenshot reveals a summary of commands associated with using Ultralist as a to-do list manager.

$ ultralist help

For instance, to add, mark, or list tasks:

$ ultralist add task_name
$ ultralist complete task_name
$ ultralist list
Ultralist Command Usage
Ultralist Command Usage

6. topydo To-Do List Manager

Users can benefit from topydo utility’s due and start date features, and recurring to-do items. Its installation requires pip3 (Python3 package manager).

$ pip3 install topydo

To see all available commands associated with topydo, run:

$ topydo help 

For example, to add or list items:

$ topydo add item_1
$ topydo ls 
topydo Command Usage
topydo Command Usage

These solutions ensure that your TO-DO lists are purely command-line driven. Know of another TO-DO list manager for the Linux command line? Feel free to leave a comment or feedback.

Ravi Saive
I am an Experienced GNU/Linux expert and a full-stack software developer with over a decade in the field of Linux and Open Source technologies. Founder of TecMint.com, LinuxShellTips.com, and Fossmint.com. Over 150+ million people visited my websites.

Each tutorial at UbuntuMint is created by a team of experienced writers so that it meets our high-quality standards.

Was this article helpful? Please add a comment to show your appreciation and support.

1 thought on “6 Best To-Do List Managers for Linux Command Line”

  1. topydo includes a dependency manager, which I think is useful. A listing of tasks suppresses those for which the dependencies are not yet complete. This somehow makes me feel better, as I am not reminded of those tasks that cannot be started because some precursor task is still outstanding.


Got something to say? Join the discussion.

Thanks for choosing to leave a comment. Please keep in mind that all comments are moderated according to our comment policy, and your email address will NOT be published or shared. Please Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.