home
posts

taskwarrior

I had seen the CLI personal task management tool Taskwarrior pop up a while ago. I liked the idea of doing task management solely from the keyboard. I've been in and out of the Getting Things Done (GTD) method for a few years using tools like Nirvana HQ and Microsoft To Do (yuck). It was promising to see they've mentioned GTD on their website. For this machine I've brought back to life I'm going to try Taskwarrior. It'll be a good way to familiarise myself further with the CLI.

Some info from the website:

* It is free and open source, using the MIT license
* It uses SQLite database files for storage, which are easily readable. Direct modification is possible but not recommended due to internal consistency requirements.
* It imports and exports JSON, so your data is never held captive
* There is DOM access and a Hook script API
* There are many available free and open extension scripts
* There is Vit, a curses-based UI
* There is BugWarrior, so you can import your bug issues from a dozen different bug systems

To install I typed:

$ sudo apt-get install taskwarrior

Running it for the first time by checking the version creates the config file .taskrc:

$ task version

Let's make a couple of tasks:

$ task add Draft smol.pub post on Taskmanager
Created task 1.
$ task add Create project list for linux machine
Created task 2.

I then defined a context called 'lin' to work in a project called 'Linux projects' then proceeded to add a bunch of tasks (these will be projects in themselves, but they'll do here for now.

$ task context define lin "project:'Linux projects'"
$ task context lin
$ task add Set up Taskwarrior
$ task add Write a bash script
$ task add Make a website in HTML and CSS
$ task add Research what gemini and gopher are
$ task add Create a media library
$ task list

Given I'm still in the lis context it will show me only tasks within the 'Linux projects' project:

ID Age   Project        Description                             Urg 
 3 25min Linux projects Set up Taskwarrior                         1
 4 14min Linux projects Write a bash script                        1
 5 12min Linux projects Make a website in HTML and CSS             1
 6 11min Linux projects Research what gemini and gopher are        1
 7 11min Linux projects Create a media library                     1

Now, lets return back out of this context and mark a task complete.

$ task context none
Context unset.
$ task list
ID Age   Project        Description                               Urg 
 1  1h                  Draft smol.pub post on Taskmanager           0
 2 57min                Create project list for linux machine        0
 3 42min Linux projects Set up Taskwarrior                           1
 4 31min Linux projects Write a bash script                          1
 5 30min Linux projects Make a website in HTML and CSS               1
 6 28min Linux projects Research what gemini and gopher are          1
 7 28min Linux projects Create a media library                       1
$ task 2 done
Completed task 2 'Create project list for linux machine'.
Completed 1 task.
$ task list
ID Age   Project        Description                             Urg 
 1  1h                  Draft smol.pub post on Taskmanager         0
 2 44min Linux projects Set up Taskwarrior                         1
 3 32min Linux projects Write a bash script                        1
 4 31min Linux projects Make a website in HTML and CSS             1
 5 29min Linux projects Research what gemini and gopher are        1
 6 29min Linux projects Create a media library                     1

And check tasks completed:

$ task completed
ID UUID     Created    Completed  Age   Description                          
 - 0684d417 2024-07-25 2024-07-25 59min Create project list for linux machine

So far so good. I've played with tasks, projects, tags, prioritisation, and context shifting, and all are working smoothly. If I keep using it for a while I'll remember all the necessary commands. Really cool.

Resources

Taskwarrior.org
Taskwarrior's massive Tools/Extensions list
Getting Things Done (GTD)
Nirvana HQ

________________________________

email: zkbro@proton.me