Learning Taskwarrior, one dream at a time

Tags: #<Tag:0x00007f21b20ca348>


I started using taskwarrior, an aggressively named task management system. Here are some notes and discussion about how that goes. :slight_smile:

Migrating from Ubuntu 16.04 to Fedora 28

To install taskwarrior on my main lappy running Fedora 28, I used:

sudo dnf install task

which installs

task 2.5.1 built for linux

which appears to be the latest stable. That’s great.


The taskwarrior website has pretty bad navigation between pages, but there are some gems to be found.

One is a wrapper script called tasksh, which is used for reviewing tasks. It basically uses a tagging and timestamping system to put your tasks in a review queue, so as you add things and push them off nothing gets lost or stays around longer than it needs.

I only have a few days of tasks, but I’ve already been wait-ing and setting due dates that put them in the future, and some are already done that I haven’t checked. So this is a useful utility!


Trying to create recurring, morning tasks to help me get my routines started. Here is a sample I’ve come up with:

task add due:2018-10-14T10:00 wait:2018-10-14T7:00 recur:daily Caffeine!

I couldn’t get due to work without the full datetime expression, but it works that way. I added wait because I don’t want to see them before 7am, and I want it to bug me if I haven’t done it by 10am.

One thing I am gonna do is add a priority:H, as that is a very important piece of my day:

$ task 27 mod priority:H
Modifying task 27 'Caffeine!'.
This is a recurring task.  Do you want to modify all pending recurrences of this same task? (yes/no) yes
Modified 1 task.

Now I should add one for breakfast, and any other thing I have to do on the regular. :slight_smile:



Treating todo like inbox zero, ftw.



Series of useful posts.


Why would I ever use calc? As explained in Taskwarrior - FAQ

That due-2days value is evaluated by Taskwarrior, using the value you specified for the due date and subtracting two days. You can also verify that date using the calc command:

$ task calc eom-2days 2018-01-30T00:00:00

That makes setting recurring waits, because I want them to show up when I am ready, not when they are due…

task add priority:L due:eod recur:daily wait:due-6h Log daily activities

That makes a low priority (still higher than default) due at the end of each day, and waits until 6PM to show it on my next list.

Daily... things

Some of the tasks weren’t popping for me, and I don’t like squinting. I do love solarized, but my terminal is set to default dark colors, and I don’t feel like customizing that. So after looking at the various themes I decided on dark-gray-256.theme:

A little plain, but that is the point, ne?

All the themes are listing in .taskrc:

# Color theme (uncomment one to use)
#include /usr//usr/share/task/light-16.theme
#include /usr//usr/share/task/light-256.theme
#include /usr//usr/share/task/dark-16.theme
#include /usr//usr/share/task/dark-256.theme
#include /usr//usr/share/task/dark-red-256.theme
#include /usr//usr/share/task/dark-green-256.theme
#include /usr//usr/share/task/dark-blue-256.theme
#include /usr//usr/share/task/dark-violets-256.theme
#include /usr//usr/share/task/dark-yellow-green.theme
include /usr/share/task/dark-gray-256.theme
#include /usr//usr/share/task/dark-gray-blue-256.theme
#include /usr/share/task/solarized-dark-256.theme
#include /usr/share/task/solarized-light-256.theme
#include /usr//usr/share/task/no-color.theme

Notice they have incorrect paths, so make sure to change it for your system.


Not bad for just a few days…

What is convergence?! :slight_smile:


I’ve used due and scheduled, but I think all I really need is wait.


I think it’s when your tasks are all done?

Current confidence levels: :confused: Uncertain


I don’t like seeing blocked items on my next list, which is also my default command (so when I use task on its own). I saw the example for “Joshua” that included this gem:

  • Which is your default report?
    Task next, with customized filter and sort order: rc.report.next.filter=status:pending,+UNBLOCKED

Using rc.report.next.filter=status:pending,+UNBLOCKED however broke my report. That reaaaaaaaly bugged me. I couldn’t even from rc.report.next.filter anywhere!

Then I found example at Taskwarrior - Filters to see which filter is showing for a command. That’s when I noticed by default my next was filtered as such:

[maiki@yuzu ~]$ task show next

Config Variable                   Value                                                                                                                          
color.tag.next                    bold white                                                                                                                     
  Default value                   rgb440                                                                                                                         
report.next.columns               id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency
report.next.description           Most urgent tasks
report.next.filter                status:pending +UNBLOCKED                                                                                                      
  Default value                   status:pending limit:page                                                                                                      
report.next.labels                ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg
report.next.sort                  urgency-
urgency.user.tag.next.coefficient 15.0

Some of your .taskrc variables differ from the default values.
  These are highlighted in color above.

status:pending limit:page! Aha, no comma. Sheesh, I’m not even sure of what all these things are called exactly, but it doesn’t help when the first example on the Workflow Examples page doesn’t work…

As you can see from the above output, my override is:

report.next.filter=status:pending +UNBLOCKED

That gets what I want. :slight_smile:


I’ve experimented with priority, project, due dates, and tags. They each have neat ways of modifying urgency and sorting tasks. However, I am gonna try using just tags for a bit.

Projects are neat, but I can track them with just tags right now. I don’t have another dimension to monitor, tags just work. It also goes a lot faster. Compate:

task add project:client Do the thing
task add Do the thing +client

Priority is neat, but really is just another way to divi up sorting on a subset of tasks, which I don’t need at hte moment… unless I keep them in recurring tasks. I’ve kinda created blocks of those, so when they show up I like them having a certain order. But maybe I can get by with +next…

Due dates… argh! Okay, my issue with due dates are, they make me anxious. Like, I need a due date to be soft, not hard. Because when a due date happens, it is basically too late… but this is because I’ve never had a review process for my tasks. It is possible that I could acclimate to this paradigm… but I might just use wait and freak out anyhow. Brave new world!

So tags, and depends. Because I love me some dependencies!


I’ve only converted to solely tags an hour ago, and already it is improving my context switching!

C is home sick, so while talking to em I can go over task +home, and it gives me the chores at home. Super handy!


I thought maybe later or someday were configurable special times, but from Taskwarrior - Date & Time :

later , someday
Local 2038-01-18, with time 00:00:00. A date far away, with semantically meaningful to GTD users.

Cool, now I know! Still useful, for waiting. I can shove stuff into a cache of future tasks, and catch them in review with tasksh.

I forget why that is meaningful to GTD users. Anyone know?


@greg said Year 2038 problem - Wikipedia, which is definitely a problem, because OMG we already in 2018?! Doesn’t Akira happen next year??

And some other nerds: maiki: "Why is 2038-01-18 semantically meaningful to GTD …" - Mastodon @ SDF

snowdusk will be a half cyborg, so that means I should get in close to have a powerful ally, but not so close as to be personally derailed by whatever horrific accident causes the tranformation… :wink:


30m = 30 months. 30min = 30 minutes.


Hey, check it out, there is a value, now:

   Net Fix Rate:         1.6/d
   Estimated completion: 2018-11-18 (4w)

I feel like I complete more than 2 a day, so I’ll have to check what the Fix Rate is. Maybe an estimation of how long everything is complete if I don’t increase the rate at which I generate tasks, over time?


I know this is less a taskwarrior tip and more a conceptual stance on repetition, but I’ve been experimenting with a recurrence system I think is both novel and silly: random amounts of days!

task add The oddly recurring thing due:eod wait:due recur:17d

That makes a task that recurs every 17 days. Because something I have things I need to do periodically, but not that often, and not on a clean date. I have a lot of things to do each weekend, beginning of the month, 15th, etc. This let’s me push tasks into a loop that is easier to break, because it just pops up outside the spikes of activity.


recur is useful for other tasks, as well, such as lists.

For instance, I’m moving a bunch of domains and sites from a hosting place to new homes. I’ve had a task for a while, “Create list to process hosting items” (yeah, that’s how I talk to myself, deal).

That was sitting there for 8 days, my brain didn’t want to start busy work. And then other, meta-tasks started showing up. Which was surprising, since I had other processes working. Then it clicked.

When I need to start a project, such as being in a meeting with the person, or getting paid, I just create a process recurrence, a ticket that says, “do an increment for the thing”.

So now I have a recur:2d for “Process a hosting asset”, and that works for me! I’ll get it done over time, and I don’t have to think about it. :slight_smile: