Initially, the terminal can feel daunting; however, once you become accustomed to it, many find it more rewarding than using a graphical user interface. My experimentation with the terminal on both Linux and Mac systems has significantly enhanced my productivity. Recently, I’ve transitioned to using Taskwarrior in place of various graphical productivity applications, and I am likely to continue using it.
Understanding Taskwarrior
Taskwarrior functions as a terminal-based task manager, resembling a to-do list that you manage via command input. Despite its straightforward appearance, it is a robust and adaptable tool that avoids distractions from elaborate graphics or enforcing specific productivity methods.
All tasks are stored as human-readable text (in JSON format) directly on your device. You have the freedom to tag tasks or assign project names without limitations. Taskwarrior also introduces virtual tags like +OVERDUE or +TODAY, which are automatically applied according to the task’s status.

With capabilities for due dates, recurring tasks, and priority levels, you can input these details in the same command while creating a task. For example, Taskwarrior computes an “urgency” score that highlights what tasks require immediate attention. It also supports setting dependencies between tasks and recurring tasks.
Additionally, Taskwarrior can generate various reports. While the default view presents all pending tasks, you can also access summaries, calendars, or even a burndown chart. Custom reports and queries allow for tailored inspections of your tasks.
The tool excels at extensibility and scripting, featuring a hooks API for executing custom scripts during task modifications. It supports User Defined Attributes (UDA), allowing you to associate custom fields with tasks (e.g., estimate:2hr for expected duration).Importing or exporting tasks in standard JSON format simplifies integration with other tools.
How to Set Up Taskwarrior
Setting up Taskwarrior is straightforward across different platforms.
On Linux, Taskwarrior is typically included in most distribution repositories. For users of Debian or Ubuntu, installation is performed using:
sudo apt-get install taskwarrior
For Fedora or CentOS, the command is:
sudo dnf install task
On Arch Linux, you would run:
sudo pacman -S task
Generally, the package is listed as either taskwarrior or simply task, and it has been widely available for years.
On macOS, if you utilize Homebrew, the installation can be accomplished with:
brew install task
For users on Windows, Taskwarrior can be utilized through the Windows Subsystem for Linux (WSL).The recommended approach involves installing WSL, setting up a Linux environment (like Ubuntu), and executing:
sudo apt-get install taskwarrior
The first time you execute any Taskwarrior command, it will create a configuration file along with a data directory in your home folder.
Simple Usage of Taskwarrior
Once Taskwarrior is installed, getting started is easy. The primary command for creating a new task is:
task add "Finish writing blog post"
This command registers a task with the specified description and returns a confirmation message like “Created task 1.” Each task is assigned a unique ID, which you will use for future updates or completions. Quotes around the description are optional, except when special characters are involved.
If you wish to view your added tasks, the command is:
task list

The output displays a table of pending tasks, including columns for ID, age, due date, description, and urgency. Even without custom configurations, this default view offers a clear outline of tasks that require your attention.
To complete a task, refer to its ID. For instance, completing task ID 1 can be done with the following command:
task 1 done
Taskwarrior will note the task as completed, removing it from the pending list, while providing a confirmation. The foundation of Taskwarrior’s workflow is built on three essential commands: add, list, and done. While these commands can enhance productivity, the tool’s full potential is unlocked by integrating more details.
Additional details such as deadlines, priorities, and project associations can all be included directly during task creation. For example:
task add "Pay electricity bill" due:2025-11-30

This example incorporates a due date, helping Taskwarrior gauge urgency. You can similarly assign projects or priority levels:
task add "Prepare slides for demo" project:Work priority:H
This command signifies the task’s affiliation with the “Work”project and indicates a high priority level. You can also tag tasks directly in the description:
task add "Buy groceries" +errand

It’s possible to combine all these features into one command. For instance:
task add "Finish quarterly report" project:Work +finance due:2025-12-31 priority:M
This command creates a task under the “Work”project with “finance”as a tag, specifies a due date, and sets a medium priority. Taskwarrior stores this comprehensive information, displaying it appropriately when the task list command is executed.
After task creation, you can modify any task at any point. Taskwarrior provides simple commands to change descriptions, append more details, or adjust deadlines.
To alter the description of an existing task, the modify command is employed:
task 3 modify "Finalize presentation for Monday"
This command substitutes the previous description with a new one. You can also add other attributes similarly, for instance:
task 3 modify due:2025-12-01 priority:H
Taskwarrior only updates the specified parameters, allowing safe alterations without affecting the remainder of the task.
If you want to retain the original description while adding additional information, the append command can be used. This appends text to the existing description or notes:
task 5 append "Include budget estimates"
This method proves helpful for adding context or reminders without rewriting the entire task entry.
In instances where a task needs to be removed—possibly because it is outdated or was created mistakenly—you can delete a task using:
task 7 delete
Taskwarrior will prompt you for confirmation to avert unintended deletions. Once affirmed, the task is erased from your active list.
If a mistake occurs, Taskwarrior features an undo command that reverses the most recent change. This functionality is beneficial for reverting accidental deletions, incorrect modifications, or mistakenly marking tasks as complete.
For instance, if you mistakenly deleted a task, executing:
task undo
will restore the previous state immediately. The undo option works step-by-step, making it particularly useful during your initial learning phase or while experimenting with commands and settings.
Personal Experience with Taskwarrior
Initially, I was doubtful that a command-line application could effectively rival the sleek productivity apps I was accustomed to. At that time, I had various tools, including Todoist for daily tasks, Trello for project management, and Notion for note-taking and planning. While these apps were valuable, I often felt disorganized navigating between them. In an effort to streamline my workflow, I decided to immerse myself in the terminal with Taskwarrior, ultimately replacing all those applications with it and a few lightweight complementary tools.

Transitioning to Taskwarrior did necessitate adjustments in my daily task management routine. I developed the habit of opening a terminal window solely dedicated to Taskwarrior, particularly in my work environment. Keeping a live task list or utilizing the next task report (to highlight the most pressing tasks) has become common for me. This is akin to keeping a Trello board open in a browser throughout the day, where my “board”is simply a constantly updating text list that refreshes with every command I execute.
One notable challenge with Taskwarrior is its lack of native reminder functionality. Unlike apps like Todoist or a traditional calendar, it won’t issue reminders unless you set up an external notification system or a cron job to email you task reminders, which some users do.
Conversely, Taskwarrior’s text-focused approach introduced new capabilities that previous applications did not offer. Bulk editing tasks is accessible and efficient. I can filter tasks and adjust multiple items simultaneously with a single command.
Mastering the terminal can be smoother than expected. If you’re unsure where to begin, consider exploring useful terminal functions for Linux, or investigate tools that enhance the terminal experience for a more enjoyable workflow.
Leave a Reply