Taskwarrior is arguably the most powerful command-line task manager. We show you how to use this application to manage tasks like a pro.
When it comes to command-line task managers, Linux users are spoiled for choice: Literally dozens of CLI-based tools have been built for keeping tabs on tasks and to-dos. Only a few of them, however, can rival Taskwarrior  in terms of functionality and flexibility. This task management tool boasts an impressive feature set that caters to power users. Although you can come to grips with Taskwarrior's functionality in a matter of minutes, mastering its more advanced features may require some time and effort. In this article, I will help you along the way.
Installing and Configuring Taskwarrior
As a mature and popular project, Taskwarrior has made it to the software repositories of many popular Linux distributions, which means you can install the application using your distro's default package manager. On Debian and Ubuntu, Taskwarrior can be installed by running the
apt-get install task
command as root.
The official software repositories often contain older version of Taskwarrior, and if you want to deploy the most recent release of the application, you have to compile it from source. Fortunately, the process is relatively simple. Grab the latest release of Taskwarrior from the project's website, unpack the downloaded tarball, open the terminal, and switch to the resulting directory. Before you can compile Taskwarrior, you need to install the required software. To do this on Debian and Ubuntu, use the following command:
apt-get install build-essential cmake
Now you can compile and install Taskwarrior:
cmake . make make install
Note that you need to run the last command as root. By default, Taskwarrior is installed in the
/usr/local/bin directory. If this directory is not in your path, you have to add it manually. Assuming that you are using Bash, open the
.bashrc file in a text editor and add the line:
Save the changes, restart the terminal, and run the command
which should return the version of Taskwarrior installed on your system.
Once Taskwarrior has been installed, you might want to tweak its basic settings. All Taskwarrior's settings are stored in the
~/.taskrc file, but you don't have to edit it directly. Instead, you can run the
task show command to view all available settings and then use the
task config command to modify a specific entry. For example, the
weekstart option in the default configuration is set to
sunday. To change it to
monday, run the
task config weekstart monday command. Taskwarrior relies on the vi editor for working with tasks. If you prefer to use another text editor, you should specify it by configuring the
editor setting. For example, you can use the
task config editor nano command to set nano as the default editor.
To get started with Taskwarrior, you just need to know a few simple commands. Obviously, the first thing to do is to populate Taskwarrior with tasks, and the
task add command lets you do just that. Type
task add, followed by a short description of the task, and then press Enter to add the task; for example:
task add Read a book
The next important action is to view the tasks added to Taskwarrior, and the application offers several commands for doing so. The
task ls command generates a concise list, which gives you a quick overview of the key aspects of each task, including its ID, priority, and description. For more detailed info, use the
task long command, which also shows the countdown, age, and tags for each task. To view the full info of a specific task, use
task <ID> info (replace
<ID> with the actual ID of the task).
As you might have figured out, Taskwarrior lets you assign a priority, tags, and a project to each task. The
priority parameter lets you specify a priority when adding a task:
task add priority:H Learn Japanese
The priority parameter accepts three values:
M (medium), and
L (low). To manage related tasks more efficiently, Taskwarrior lets you group them into projects. For example, if you are working on a book, you can add all book-related tasks to the Book project. To assign a project to a task, use the
project parameter as follows:
task add project:book Finish Chapter 1 task add project:book Proofread Chapter 2
To list all projects in Taskwarrior, use the
task projects command. The report displays the total number of tasks in each project along with the number of tasks for each priority level (Figure 1). You can also view all tasks in a specific project using the
task list pro command:
task list pro:Book
Tagging is a de rigueur feature of a task manager, and Taskwarrior provides an easy way to assign multiple tags to a task. When creating a task, append the desired tags to the
task add command as follows:
task add +japanese +language Learn Japanese
To view tasks containing a certain tag, use the
task list command followed by the tag:
task list +japanese
Taskwarrior also makes it possible to add notes to a task using the
task <ID> annotate command; for example:
task 1 annotate Start with learning basic phrases
You can append as many annotations to a task as you need. Taskwarrior lets you assign due dates to tasks using the
task due command. In addition to the standard date and time format, the command supports other ways to specify deadlines, such as
3days (3 days from now),
3wks (3 weeks from now),
monday (the coming Monday),
eow (end of the current week),
17th (the 17th of the current month),
eom (end of the current month).
Taskwarrior also lets you mark tasks as active. This feature can come in handy when you need to keep track of tasks you are currently working on. To mark a task as active, use
task <ID> start. Now, if you run any of the task reporting commands (e.g.,
task long), you will notice that all active tasks are highlighted, which makes it easier to identify them. Alternatively, you can use
task active to list only active tasks. The
task <ID> stop command stops a specific active task, whereas
task <ID> done marks the task as finished.
Taskwarrior provides commands for editing and deleting tasks, too. The
task <ID> edit command opens a task in the default text editor, so you can manually edit the task's properties. And if you want to completely remove a task, you can do this using the
task <ID> delete command.
Instead of editing tasks in the default editor, you can use
task <ID> modify to modify a certain property of a specific task. For example, to set a priority of task 5 to High, use the
task 5 modify priority:H command. If you need to assign the
travel tag to task 7, you can run the
task 7 modify +travel command. The
task 7 modify -travel command, in turn, removes the specified tag. The clever part is that Taskwarrior lets you modify multiple tasks in one go. For example, the
task 1-5 modify priority:L command sets the priority of tasks 1 to 5 to Low, whereas
task 1-5,7,9 modify +language adds the
language tag to tasks 1 through 5, as well as to tasks 7 and 9.
Other Useful Commands
The commands covered so far should be enough to get you started, but Taskwarrior offers other useful functionality, too. For example, the application can handle recurring tasks, and you can use the
recur parameters to specify recurrence; for example:
task add due:eom recur:monthly Pay bills
until parameter, you can also specify the end of the recurrence period:
task add due:eom recur:monthly until:eoy Renew magazine subscriptions
Taskwarrior also allows you to define dependencies between tasks, which can be rather useful for managing complex projects:
task add depends:1 Travel to Japan
The command above adds a new task that depends on task 1 (in this case, task 1 could be "Learn Japanese"), and the newly created task will be blocked until task 1 is marked as completed. To view a list of all blocked tasks, use the
task blocked command.
Buy this article as PDF
A major setback for the Linux desktop.
Improved support for GPU in virtualization.
News site for the openSUSE community falls victim to a Wordpress exploit.
The source code is available online.
One out of three virtual machines on Microsoft Azure Cloud run Linux.
The form factor of the board makes it a drop-in replacement for Raspberry Pi.
Makes it easier for customers to move workloads into container-centric applications.
SUSE’s answer to container-centric operating systems.
Linux 4.9 is the biggest release in terms of number of commits.
The latest version of the official RHEL clone is here.