|
|
Subscribe / Log in / New account

Taskwarrior 2.0: A command-line task list manager

Please consider subscribing to LWN

Subscriptions are the lifeblood of LWN.net. If you appreciate this content and would like to see more of it, your subscription will help to ensure that LWN continues to thrive. Please visit this page to join up and keep LWN on the net.

March 28, 2012

This article was contributed by Koen Vervloesem

Until a few months ago, I hadn't found a good tool to handle a task list and track my time. Several were tried, but none of them could handle all the requirements to my satisfaction: the tool should be usable on the command line with straightforward commands that are easy to memorize, it should be able to use the same task data on different machines without having to install and maintain a dynamic website, the tool should be able to track the time I spend on tasks and projects, and it shouldn't force me to follow a specific time management philosophy such as Getting Things Done or the Pomodoro Technique.

[Overview]

At the beginning of this year, during my annual and always unsuccessful New Year's resolution to manage my time more efficiently, I tried a beta version of Taskwarrior 2.0. While it isn't perfect, it turns out that Taskwarrior is right for my use case. This command-line task list manager maintains a list of tasks that you can add, remove and annotate at will. It has a rich list of sub-commands to do advanced things with your tasks, including reports, charts, time tracking, and so on, and it is extensible with Lua scripts. After a year of development, version 2.0.0 has now been released.

Version 2.0 still has to trickle down to the repositories of various Linux distributions, but you can download the source and compile it (it has been tested on various Linux distributions, the BSDs, Solaris, Mac OS X, and Cygwin) or use the binary packages for i386 Debian 6, Ubuntu 11.10, or Fedora 16. Older versions are available in many repositories, but Taskwarrior 2.0 has added significant changes and changed the command-line syntax, so it's probably worthwhile to temporarily use a 2.0 downloaded from the project's web site until your distribution's repository updates its Taskwarrior package to 2.0.

Easy to learn

[Task list]

The first time you enter task in a terminal, it prompts to create an initial ~/.taskrc file, which has default settings and comments. After that, a task help command gives you a daunting list of sub-commands, syntax, and examples, but despite this apparent complexity the basics of Taskwarrior are quite easy to grasp if you follow the project's excellent documentation. The place to start is the 30-second tutorial which teaches you how how to add, list and delete tasks, set a specific priority to a task, and to mark it as done. These are easily memorizable commands like task add, task ls, task <ID> delete, and task <ID> done.

While the 30-second tutorial teaches you the most important Taskwarrior sub-commands, there's a lot more to the program, which would be difficult to find out on your own only from reading the man pages. Luckily, there's a long tutorial as well. After the basic usage, it explains projects, priorities, tags, undo and delete, information about tasks, statistics, annotations, due dates, calendars, and so on. For instance, when your tasks have due dates, you can see them highlighted on a calendar with task calendar. The program even provides sample holiday files for a couple of countries. If you include the holiday file in your ~/.taskrc, holidays are shown in another color on your calendar.

Advanced functionality

The second part of the tutorial handles some advanced uses of Taskwarrior. Some of the topics are tasks that are recurring weekly, monthly, or yearly, waiting tasks (tasks with a due date far out into the future that remain hidden until a certain date to not clutter your task list), dependencies between tasks, reports and time sheets, monthly and yearly charts, a summary showing your progress in all projects and sub-projects, filters, and import and export in CSV, YAML, vCalendar, or JSON format. It pays to follow both tutorials and try their examples before you start using Taskwarrior, and you should probably read them again after having used Taskwarrior for a while. There's also a gallery with some video tutorials, as well as some HOWTOs about specific functionality.

One particular interesting feature of Taskwarrior is the built-in synchronization functionality, which lets you backup, restore and synchronize task lists using ssh or rsync to share the same task list on multiple machines. So you can backup your local task list to a remote machine with a task push command, restore it with a task pull command, and merge a local and remote task list with task merge. Of course you can configure Taskwarrior to store its data (by default in the directory ~/.task/) in a Dropbox folder or any other directory that is synchronized between your machines, but the advantage of Taskwarrior's built-in synchronization feature is that it doesn't require you to install any third-party synchronization software; ssh access to a remote machine is enough. Note that the ~/.taskrc configuration file isn't synchronized by this method, just the data in ~/.task/.

Configurable and extensible

Taskwarrior is highly configurable. A task show command shows more than 200 configuration variables you can set in the ~/.taskrc file with their current value. Variables that you have changed from the default values are highlighted in color. The colors for many types of information can also be changed in the configuration file, or you can use one of the several standard color themes.

You can also add your own variables to the configuration file, for instance to create custom reports with specific columns, labels, sorting order, and filters. The custom reports you add even show up in the help output of the task command and you can run it as a sub-command, just like the default reports. Taskwarrior 2.0 also adds the possibility of extending the program's functionality with Lua scripts, but unfortunately this is not documented yet.

Development

Beginning with version 2.0, Taskwarrior has been re-licensed from GPLv2+ to the more permissive MIT license. One of the reasons the developers cite is that using the MIT license won't require that all plugins that ship with Taskwarrior be GPL compatible, which had to be done in the past. Another reason they cite is that "certain app stores don't accept GPL licensed software".

The developers welcome changes and give an overview of how you can contribute. There's a big issues list with feature requests and bug reports and the project has some big-picture architectural plans. For instance, they are working on a task server that will support synchronizing task data and later group collaboration. This task server will also be able to send out reminder notices for tasks that are due.

There's also a lot of development happening on Taskwarrior extensions and external scripts. One example is Taskhelm, a graphical interface for Taskwarrior. Other ones are VITtk, which is a vi-like interface for Taskwarrior, the web interface Taskwarrior-web, as well as some conversion tools.

As a nice illustration of the development activity, the development of Taskwarrior 2.0 has been visualized by the software version control visualization tool Gource. The data was extracted and visualized from the project's Git repository and converted to a YouTube video.

Polished and frictionless

Taskwarrior will not appeal to everyone, but if you're spending a lot of time at the command line, it offers a frictionless window to your task list. It's always available because you don't have to switch to another window or open a specific web site. With an alias t=task in your ~/.bashrc, a couple of key presses are enough to view your current tasks and track your time. Of course it requires some time to get to know the right commands, but they are straightforward and the documentation and man pages (task, taskrc, task-color, task-faq, task-sync and task-tutorial) are excellent and comprehensive.


Index entries for this article
GuestArticlesVervloesem, Koen


(Log in to post comments)

Taskwarrior 2.0: A command-line task list manager

Posted Mar 29, 2012 9:18 UTC (Thu) by ebirdie (guest, #512) [Link]

I found the video about development impressive or even stunning. Thank you pointing it out.

Taskwarrior 2.0: A command-line task list manager

Posted Apr 6, 2012 8:32 UTC (Fri) by fb (guest, #53265) [Link]

Thanks for the interesting article.

I've used a number of task list managers throughout the years, some graphical and some on the shell. Taskwarrior seems like a great tool (from the testing I just did on it).

I use Remember the Milk and will continue using it, as it works on desktops, tablets and phones, family members also use it, and we make heavy use of shared lists.

If issue http://taskwarrior.org/issues/129 is ever implemented, I might start using this as a shell back end for RTM (which would be awesome).


Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds