I ditched my favorite to-do app for a Linux terminal—here’s what surprised me

I learned about TickTick from MKBHD’s 2020 What’s on My Phone video. Since then, it’s been my go-to task manager, and I’ve used it on Linux, Windows, and Android. I like its UI, especially its Windows desktop widget, solid task management features, and well-thought-out notification system.

After 6 solid years of using it daily, I recently did a week-long experiment where I replaced TickTick’s polished graphical interface with a terminal to-do list manager. The goal was to try terminal-based task management, compare it to the graphical experience, and note down key upsides or frustrations. Here’s what I learned, what frustrated me, and a few things you should consider if you’re thinking about doing something similar.

First things first: Setting up a terminal to-do list on Linux

The truth is that there are many good terminal to-do list managers for Linux. Some popular options include Taskwarrior, Taskbook, Todo.txt, and Todolist, to mention just a few. Unsurprisingly, installing a terminal to-do list on Linux was easy. For this experiment, I installed and experimented with Taskwarrior on Ubuntu 24.04 LTS. I liked Taskwarrior because of how easy and readable its commands are. The first step was installing and setting it up, which was easy enough through these Ubuntu package manager commands.

sudo apt update -y
sudo apt install taskwarrior -y

One thing worth noting is that you need to initialize Taskwarrior before you can start adding tasks. Initializing creates a database and configuration file. The command for that is ‘task.’ The first time you initialize Taskwarrior, you’ll get a “configuration file is missing” response and a message asking you to create it by typing yes.

task
Taskwarrior copnfiguration file not found message

The surprising and rewarding thing(s) about terminal-based to-do list management

The most rewarding thing that immediately stood out and surprised me about using a terminal to-do list manager was the ease of adding new tasks using verbs, descriptions, and parameters. To add a new task on Taskwarrior, you just type ‘task add + “the task you want to add”.’ For example, the first test task I wanted to add was completing a feature, which I did with this command:

task add “complete CLI to-do list article”

Unsurprisingly, most to-do list managers are straightforward and easy to use within the terminal.

Dell XPS 17 set up on a table with a notebook.

You Can Build a Simple To-Do List App in Python, Here’s How

Writing Python code is easy. Here’s how to develop a basic, Python-based to-do list app.

The other surprising thing was the ease of prioritizing tasks and assigning due dates. For due dates, Taskwarrior uses specific dates or natural language like ‘tomorrow.’ Taskwarrior has three task priority options: H for High, M for Medium, and L for Low. So, for example, if I wanted to prioritize a task called ‘Finish a backup script,’ the command for that would be like this:

task add priority:H “Finish backup script”

When attaching specific dates to tasks, use the correct format, which is Y-M-D; for example, ‘2026-01-10. Otherwise, you’ll get a ‘not a valid date format error.’

Obviously, after adding tasks, the next step is managing them. The ease of managing tasks was the other thing that surprised me: The default Taskwarrior command to show tasks is ‘task’ or ‘task list.’ You can also use the command ‘task next’ to get it to show high-priority tasks first. Modifying a task is also easy using the ‘modify’ parameter.

task
task list
task next
The most common Taskwarrior task management commands

For instance, I wanted to modify the description of task 5 on my list and change its due date. For that, I used the default syntax with a ‘modify’ option, then changed the task’s description. This immediately modified the task.

task 5 modify due:+2d “Pitch new articles”

In Taskwarrior and most command-line task managers, the task ID is crucial. You need it for everything: from modifying tasks to adding notes and marking tasks as complete. Let’s say I want to start task 1 and then mark it as complete. I need to specify that task, then use ‘start’ to start it and ‘done’ to mark it as complete.

task 1 start
task 1 done

Here is a cheat sheet of a few Taskwarrior commands used to manage tasks from the terminal. Remember to use ‘task’ before every parameter and to specify the task ID.

Command

What it does

task add

Adds a new task

task delete

Deletes a task

task all

Shows all tasks

task active

Shows all started tasks

task duplicate

Duplicates an existing task

task annotate

Adds an annotation to a task

task denote

Deletes a note or annotation from a task

task oldest

Shows the oldest tasks first

task overdue

Shows overdue tasks

Be sure to check Taskwarrior’s command docs for all command options.

The frustrations of using a CLI to-do list manager

The first and most frustrating thing was the lack of built-in desktop notifications. Yes, I could create a script, automate it as a cron job, and use a command-line tool like notify-send to schedule Taskwarrior desktop notifications at specific intervals. However, for this experiment, I chose not to do the extra work.

A screenshot of a desktop notification from TickTick

The next frustration is borderline nitpicking, but worth mentioning. Although most terminal to-do list managers have easy-to-remember commands, command fatigue can be frustrating, especially if you’re used to managing tasks on a graphical tool. Consider the example of changing a task’s due date. On a graphical task manager like TickTick, you simply click the task and edit it.

Editing tasks on a graphical interface

In Taskwarrior and other terminal task managers, you need to know the basic commands used to interact with the tool. You also have to type the command correctly; otherwise, you’ll get an error message.

All in all, using a terminal to-do list manager is extremely efficient, especially if you spend a lot of time in the terminal. However, there are trade-offs, which means it’s not for everyone.

Thinking about switching to a terminal to-do list manager?

My one-week experiment with a terminal to-do list manager gave me a few insights that could help you if you’re thinking about trying something similar.

  1. Choose a tool that supports your work and fits into your life/work. A terminal task manager is not for everyone. If you must use one, choose a tool that can handle your task management needs.
  2. Don’t immediately go all-in. Instead, migrate a few tasks, experiment with the main management commands, then gradually migrate your to-do list as you get used to it.
  3. Expect to trade off some GUI features and use those trade-offs to determine if managing a to-do list from the terminal is for you!

You’re probably wondering whether I’ll permanently switch to Taskwarrior now that I’ve experienced what it’s like to manage a to-do list from the terminal. The answer is no: I won’t permanently switch to terminal-based task management. Instead, I’ll continue managing some of my tasks from the terminal and using TickTick’s desktop graphical interface. That way, I can experience the best of both worlds.

Share this post:

Leave a Reply

Your email address will not be published. Required fields are marked *

From the latest gadgets to expert reviews and unbeatable deals — dive into our handpicked content across all things tech.