It happened again. I have a couple dozen great ideas for the blog. Loads of other things I need to get at as well. So yeah. I got myself a little overwhelmed, and I need to stop and get a solid idea of the top tasks: the ones I want to be working on now or soon.
I’ve been dutifully adding everything to Taskwarrior, assigning priorities as I go.
In case you forgot, or haven’t been following from the
beginning, I use Taskwarrior’s
field to show how soon I want to work on a task.
Priority:M? I want to
work on it soon.
Priority:H? Either I am working on it right now or I
really want to be.
Taskwarrior lets you assign due
Tasks that are due or that block something else get higher
and bubble to the top of reports. For some folks, that works great.
For me? They mostly lead to heartbreak and self-recrimination. I refer you to these words of wisdom from a greater mind:
I love deadlines. I love the whooshing noise they make as they go by.
— Douglas Adams
I get more done quicker by flagging a few tasks as important, a few more tasks as less important, and the rest as “whatever.”
I still use
remember what I’m doing right now though. I’m not completely weird.
Time for me to figure out
or in Taskwarrior.
Filters already have an implied
and. It looks like this.
How many active tasks do I have?
$ task +PENDING count 198
How many active tasks do I want to work on soon?
$ task +PENDING priority:M count 28
That’s filtering tasks to those for which
How many active tasks do I want to be working on now?
$ task +PENDING priority:H count 6
That’s a bit much. It should be more like four or five.
How many active tasks do I want to work on now or soon? That is, which
+PENDING and have either
We can use
or to join two filters. If either of them is true for the
task, that task is included. Use parentheses to build more complex
$ task +PENDING (priority:H or priority:M) count zsh: unknown file attribute: i
Tada — oops. Hang on. This stuff goes through the shell before it reaches Taskwarrior. Let’s put the filter in a string.
$ task '+PENDING (priority:H or priority:M)' count 34
Okay, it works, but I just know there will be more typos using this filter from memory. How can I avoid typing it in every time?
Use a context
I could add that priority filter to my “focused” context, used when I need to ignore distracting ideas.
context.focused=-idea -shelved (priority:H or priority:M)
Now every report skips low priority tasks.
$ task context focused Context 'focused' set. Use 'task context none' to remove. $ task +PENDING count 34
This is great, but I want to know my top tasks even when I’m not in focused context.
Plus it’s easy to forget which context you’re in. I once spent 15
minutes trying to find a
+work task before remembering I was still in
offwork context. Which reminds me —
$ task context blog
Use a shell alias
Part of Taskwarrior’s charm is the fact that we use
task from the
command line. I could take advantage of that with a shell alias for
task using the preface filter.
alias ttop='task +PENDING "(priority:H or priority:M)"'
This gives me sort of an on-the-fly context.
$ ttop count 34
I could use
ttop with any Taskwarrior command, so
ttop next would be
a fine way to look at my important tasks.
But I’d kind of like to have a custom report for reviewing tasks I’ve
set as important. Something with a little more information than
task minimal but a bit less than
Use a custom report
Might be easier to show than tell. For more of a “tell” approach, check
the “REPORTS” section of
man taskrc. Here’s my custom “top” report,
loosely based on Taskwarrior’s
# Almost-minimal view of tasks I want to work on most report.top.columns=id,priority,project,tags,description.count report.top.description='Minimal details of tasks' report.top.filter=status:pending (priority:H or priority:M) report.top.labels=ID,Pri,Project,Tags,Description report.top.sort=priority-/,project-,description+
description.countuses this column for the description text and the number of annotations for the task.
sortspecifies columns to sort by, in descending or ascending order.
priority-/means “descending, dividing each block of priorities with a blank row.”
And here’s what my
top report looks like.
I can apply additional filters just like with any other report.
➜ rgb-hugo (master) task project:OrgConfig top ID Pri Project Tags Description 197 M OrgConfig ops add awesomewm settings 1 task Filter: ( status = pending and ( priority = H or priority = M ) ) and ( project = OrgConfig )
So that’s pretty handy. But clearly I need to clean this up a bit. Some
of those aren’t really things I want to work on soon. But at least now I
have one less
You can see Taskwarrior’s settings for the
minimal report, or any
$ task show report.minimal Config Variable Value report.minimal.columns id,project,tags.count,description.count report.minimal.description Minimal details of tasks report.minimal.filter status:pending or status:waiting report.minimal.labels ID,Project,Tags,Description report.minimal.sort project+/,description+