Managing tasks from the terminal with Taskwarrior
=================================================

Adam Thompson <[email protected]>
2021-04-16 19:02:38

-------------------------------------------------

If you've read my previous post you'll know that I signed off with a
statement about working through my todo list.  Well...  that hasn't really
happened yet.  However, as part of starting my new job I've been trying to
better organise things so it might.

One of the things I've been thinking about for a while is how to manage a
todo list.  I've tried a text file before, even hooking it up to my shell
profile so that it printed my todo items when I logged in.  Unfortunately,
this became annoying and got ignored and, eventually, abandoned.  Then the
day job and life in general got in the way and, like a lot of people, my
todo list ended up as just a set of things I'd mention in conversations and
then forget about.

As part of starting a new job etc I decided it was time to finally look into
a proper solution.  I contemplated writing something but thought that I
should first see if something existed.  It turns out that there're a number
of pieces of software out there to do this, some of which work from the
command line.  One of the most popular, and most mature, of these is
Taskwarrior [1].  This is a very powerful open source program which is also relatively
simple to use.

It's available for a wide variety of systems which is nice since it means I
can have the same utility on Mac, Linux and NetBSD.  In addition, as well as
basic task management it supports synchronising task lists between devices
(via a specially designed server) as well as a host of other useful
features.

Creating a task is as simple as running:
`task add 'Do important thing'`
This will also create a default ~/.taskrc file which will configure
Taskwarrior to store tasks in the ~/.task directory.

To view the most urgent (next) tasks you can either run:
`task next`
or just:
`task`

You can also add tags to tasks and filter based on these as well as putting
tasks into projects and defining dependencies between tasks.  All of this is
well documented in the manual and on the website.

[1]: https://taskwarrior.org/