Taskwarrior – A Command line TODO Task Manager Application

Taskwarrior - Command line TODO Task Manager Application

The most common mistake we often do is “I don’t need to take notes. I will remember it”. Isn’t it? Indeed, it is. I am not an exception too. I have done this mistake so many times. Not anymore! Today, I found an useful command line TODO task manager application called “Taskwarrior”. It is a free and Open Source utility that manages your TODO list from the command line. It is efficient, flexible, fast, and unobtrusive tool. You can add all sorts of tasks, such as daily, weekly, monthly chores, personal goals, official-related works, family events, and manage them like a pro from the command line.

Of course, there are many GUI-based task managers, web applications available. The reason I chose this utility is I used to work on command line mostly. It helps me to get things done as quickly as possible and it keeps me organized at work and home. To put this simply, It does its job then gets out of your way. In this tutorial, I will show you how to manage your tasks effectively using Taskwarrior in Unix-like operating systems. Read on.

Taskwarrior – A command line TODO Task Manager in Linux

Installation

Taskwarrior is available in the default repositories of most modern Linux operating systems.

In Arch Linux and its derivatives like Antergos, Manjaro Linux, run the following command to install it.

sudo pacman -S task

On RPM based systems such as Fedora, install it as shown below.

sudo dnf install task

On SUSE/openSUSE:

sudo zypper in task

On Debian, Ubuntu, Linux Mint:

sudo apt-get install task

In case it doesn’t available in the default repositories, you can install using Linuxbrew package manager like below.

brew install task

Usage

Taskwarrior usage is not a big deal. You can learn all commands within couple days. I am going to cover only the most-frequently used commands.

Before start using it, run task command to create a file ~/.taskrc. This file keeps all settings of the Taskwarrior.

task

Sample output:

A configuration file could not be found in

Would you like a sample /home/sk/.taskrc created, so Taskwarrior can proceed? (yes/no) y
[task next]
No matches.

Adding tasks

Let us now populate Taskwarrior with some tasks.

To add a task, simply run:

task add Write a guide about Taskwarrior

Sample output would be:

Created task 1.

Let us add more tasks.

task add Fix Laptop OS problem
task add Clean living room
task add Pay Internet bill
task add Recharge mobile

Similarly, you can add as many task you want to manage.

Viewing Tasks

To view the list of available tasks, run:

task list

Or,

task ls

Sample output:

ID Description 
 3 Clean living room
 2 Fix Laptop OS problem 
 4 Pay Internet bill
 5 Recharge mobile 
 1 Write a guide about Taskwarrior

5 tasks

As you see above, we have totally five tasks.

It gives you a quick overview of each task, including its ID, priority, and description. You can also view the detailed information of each task by running the following command:

task long

Sample output:

ID Created Mod Description 
 5 2017-04-06 1min Recharge mobile
 4 2017-04-06 1min Pay Internet bill 
 3 2017-04-06 1min Clean living room
 2 2017-04-06 1min Fix Laptop OS problem 
 1 2017-04-06 1min Write a guide about Taskwarrior

The above command gives you the countdown, age, and tags for each task.

To view a particular task, you can use the task ID with the following command:

task <Task-ID-Number> info

Example:

task 5 info

Sample output:

Name Value 
ID   5
Description Recharge mobile 
Status Pending
Entered 2017-04-06 17:45:59 (2min) 
Last modified 2017-04-06 17:45:59 (2min)
Virtual tags PENDING READY UNBLOCKED LATEST 
UUID 8c4ab173-df08-4b61-b813-f5eb0042b930
Urgency 0

Adding priority to tasks

Some times we need to do important tasks first. So, we can add priority to certain tasks. Taskwarrior priority parameter has three values as mentioned below.

  • H – High priority
  • M – Medium
  • L – Low.

You can add priority to tasks depending upon the importance of a task.

task add priority:H Buy Groceries

To create tasks with medium and low priority, use ‘M’ and ‘L’ flags respectively.

Adding tags to tasks

Sometimes, it is very good practice to add tags to the tasks, so you can quickly find a single or group tasks.

See the following example.

task add +household Buy Groceries

To list the tasks containing certain tags, run:

task list +household

Sample output:

ID Age Tags Description Urg 
 7 43s household Buy Groceries 0.8

1 task

You can also add multiple tags to a single task like below.

task add +tamil +language Learn Tamil Language

Adding notes to tasks

Taskwarrior also allows you to add notes to tasks.

task 8 annotate Start learning Tamil alphabets

Sample output:

Annotating task 8 'Learn Tamil Language'.
Annotated 1 task.

Group tasks into a single project

It is always a good practice to group tasks into categories or projects. It makes you lot easier to start a group tasks or complete a group of tasks.

Look at the following example to know how to group tasks into projects.

task add "Buy Groceries" project:personal +household

Sample output:

Created task 10.
The project 'personal' has changed. Project 'personal' is 0% complete (1 task remaining).

Add another task.

task add "Clean living room" project:personal +household

Sample output:

Created task 11.
The project 'personal' has changed. Project 'personal' is 0% complete (2 of 2 tasks remaining).

As you see in the above example, I have added two tasks into single project labeled “personal”, and tagged them with “household”. Now, we can easily filter tasks by project name like below.

task burndown.daily project:personal

Sample output:

We can also break down the task progress by weekly as shown below.

task burndown.weekly project:personal

This will help to know how you perform at work.

Assigning due dates to tasks

Some tasks needs to be done immediately, and some can wait. Taskwarrior comes with built-in keywords such as tomorrow, today, someday.

To set a due to a certain task, run:

task add Fix Laptop OS problem due:today

The above task needs to be completed today. Similarly, you can set next week as due date as shown below.

task add Fix Laptop OS problem due:'1week'

Due 1 month from now:

task add Fix Laptop OS problem due:'1month'

Due at specific date:

task add Fix Laptop OS problem due:due:2017-04-30

Once the due date passes, the task is tagged with the READY virtual tag.

You can check those tasks using command:

task ready

To remove a due date from a specific task, run:

task 1 modify due:

The above command removes the due date of task ID 1. For more details about due dates, check this link.

Edit and modify tasks

To edit a task’s properties, run:

task 1 edit

This command will open the specified task in the default editor. So, you can manually edit the properties of that task.

Instead of editing tasks, you can use task <ID> modify command to modify a certain property of a specific task.

To modify a task, run:

task 2 modify priority:L

The above command will modify priority of the task 2 to LOW.

Also, you can change the due date of specific task as shown below.

task 1 modify due:5d

This command sets the due date of the task 1 to 5 days from now.

Starting tasks

Taskwarrior helps to find the tasks you are currently working on. To keep track of tasks you are currently working on, just mark them as active like below.

task 1 start
task 2 start

The above commands will start the tasks. You can view the list of active tasks by running ‘task list’ command.

task list

Sample output:

As you see in the above output, all active tasks are highlighted, which makes it easier to identify them.

To stop an active task, just run:

task 1 stop

This stops the task ID 1. You can stop all tasks once they are completed.

Searching tasks

You can search for specific task using regular expression.

Say for example, the following command displays the task that contains the word “Tamil”.

task '/.* Tamil/' list

Sample output:

ID Age Tags Description Urg 
 8 56min language tamil Learn Tamil Language [1] 1.7

1 task

Completing tasks

To mark a task as completed, run:

task 1 done

Sample output:

Completed task 1 'Write a guide about Taskwarrior'.
Completed 1 task.

Now, you can view the list remaining tasks, using command:

task next

Deleting tasks

I don’t need a particular, what to do? Just delete it.

To delete a task, run:

task 10 delete

Confirm to delete the specified task.

Delete task 10 'Fix Laptop OS problem'? (yes/no) yes
Deleting task 10 'Fix Laptop OS problem'.
Deleted 1 task.

I need to know how many tasks did I completed so far. No problem! Use this command to display the timesheet.

task timesheet

Sample output:

2017-04-02 - 2017-04-08
 Completed (2 tasks)
 Project Due Description 
 Write a guide about Taskwarrior
 Fix Laptop OS problem

Started (0 tasks)

Recurring tasks

Some tasks needs to be done everyday or every week. Say for example, this command will remind me to clean the living room on Friday to be done by Saturday and Taskwarrior will remind me to do it each week

task add Clean living room due:'Saturday' wait:'Friday' recur:'1week'

And, the following command will remind me to pay the Internet bill at the end of each month, every month.

task add due:eom recur:monthly Pay Internet bill

The commands cobered so far is just enough to get you started with Taskwarrior. However, there is more. I recommended you to refer the man pages for more details about Taskwarior.

man task

Also, check the Taskwarrior documentation page to learn more tips.

Conclusion

You know now how to add, view, manage and delete tasks from command line using Taskwarrior. As far as I tested this utility, Taskwarrior is the perfect TODO task manager for those who spends most of their time in command line. It is light weight, fast, and flawless command line utility to get things done effectively and keep you organized personally and professionally. Give it a try, you won’t be disappointed.

Cheers!

Resource:

Thanks for stopping by!

Help us to help you:

Have a Good day!!

You may also like...