Learn the basics of Taskwarrior to schedule and manage your to-do list.


Taskwarrior is a very common program that's available on every major distribution.


A working Linux install with root privileges.




  • # - requires given command to be executed with root privileges either directly as a root user or by use of sudo command
  • $ - given command to be executed as a regular non-privileged user


Taskwarrior is an simple but powerful command line tool for managing tasks and objectives. Taskwarrior has been around for a while, and it's still in active development and going strong. As of today, Taskwarrior is probably the best command line task management utility available.

Install Taskwarrior

Taskwarrior is available in every major distribution's repositories as task, except for OpenSUSE, which calls it taskwarrior. You can use your package manager to install it.

Create Tasks

Creating a basic task is very easy. Type in the command, task add, followed by the task that you want to add.
$ task add Learn Taskwarrior
There isn't a whole lot of syntax required. Again, simplicity is at the heart of this.
$ task add Remember to update server

Due Date

It'd be pretty bad if you couldn't keep track of when these tasks need to be complete by. After all, a task that's due a week from now is much different than one that needs to be done by the end of the day. Taskwarrior has you covered there too.
$ task add Remember to update server due:today
By using due: you can specify a due date. Taskwarrior is pretty intuitive. You can use the regular names of days instead of explicit dates in many situations.
$ task add Write backup script due:thurs
Taskwarrior knows that you're referring to the next upcoming Thursday and will find and add the date for that day. If something is further into the future, or you want to explicitly set a date, you can do that too.
$ task add Install Gentoo due:2017-07-24


Some things are much more important than others. Taskwarrior has a priority system that allows you to specify the priority of task. It has three options, "L," "M," and "H." You can probably guess what they stand for. Add priority to your task with priority:.
$ task add Get Overwatch working in Wine priority:H
You can obviously add priority and a due date together too.
$ task add Install Rails update due:mon priority:H

List Tasks

Having a list isn't any good if you can see it. Listing out your tasks is easy.
$ task list
You can specify which tasks to list by certain criteria too.
$ task list due:today
That works with other dates too.
$ task list due:tomorrow
You can also combine them here too.
$ task list due:tomorrow priority:H

Complete Tasks

Obviously, you're going to be able to mark tasks off, once you've completed them. That too is easy. In order to mark a task as complete, you need to now which ID number Taskwarrior has assigned it. You can find them easily by listing out your tasks. The ID column is first. Once you have it, you can tell Taskwarrior that it's done.
$ task 1 done

Modify Tasks

You can also use those ID numbers to change your tasks after they're already been created.
$ task 2 modify priority:M
That would change the task with an ID of 2 to have a medium priority level. You can actually modify the text of the task too.
$ task 3 modify Install Arch in production
There's no reason you can't change multiple things at once too.
$ task 4 modify Update Django priority:H due:tues

Delete Tasks

If, for some reason, you no longer need to complete a task, you can remove it altogether from your list with the delete option. Like the others before it, delete uses the ID number of a task to select it.
$ task 3 delete
Taskwarrior will ask you if you're sure before deleting the task. It'll also print out the text associated with the text, in case you accidentally gave it the wrong number.

Closing Thoughts

There are plenty more features in Taskwarrior to explore, but now, you should feel confident with the core of this feature-rich program. Taskwarrior can seriously help you keep track of what you need to do. Plus, it's available from the command line, so it's totally scriptable too.