# The Eisenhower Matrix in TaskWarrior

The Eisenhower Method is based on the simple understanding that urgency and importance are not the same (see for example The Eisenhower Method with a picture of the "matrix" at Wikipedia). The goal of this post is to implement it with TaskWarrior. We have to model the two dimension "priority" and "urgency". TaskWarrior has a notion of urgency but this is something totally different (it is a real number that tries to indicate how urgent a task is and that is derived by a complicated algorithm from facts like priority, duedate and dependence on other tasks). So I decided to use tags to model urgency: +urg for urgent tasks and +unu for unurgent tasks. For the priorities "important" and "unimportant" I use the built in priority field with the value H for important and L for unimportant (I'm not sure what to do with the priority M yet). Everything that does not have a priority or that is leaking both the +urg and +unu tag will be placed on an "inbox report" meaning that it has not yet been categorized completely.
report.inbox.description=INBOX report
report.inbox.filter=limit:page dep: status:pending -maybe -idea -FU -activedept and '( ( prio.not:H and prio.not:L ) or (-urg and -unu))'
report.inbox.columns=id,project,description,entry.age,tags
report.inbox.labels=ID,Proj,Description,Age,Tags
report.inbox.sort=entry+

This report does the following: * It shows only one page full of entries * it only lists task that are not depending on some other tasks (if the blocking task is done, they will automatically appear in the INBOX) * it only lists tasks that are not tagged by +maybe (tasks that are very optional),+FU (tasks that I delegated and are now on the "follow-up" list), +idea (I also use TaskWarrior to make notes about ideas that may or may not become projects in the future) or +activedept (since I don't want to let active depts show up on my INBOX report) * it only lists tasks that do not have a priority of L or H and also tasks that are neither taged with +urg nor with +unu * and sorts by entry date descending - showing the oldest entry first We also need reports for the different quadrants of the Eisenhower Matrix. So lets add the report definitions above and below to our .taskrc.
# task Q1
report.q1.filter=limit:page status:pending and prio:H and +urg
report.q1.columns=start.active,id,project,urgency,description,entry.age,tags
report.q1.labels=A,ID,Proj,Urg,Description,Age,Tags

report.q2.filter=limit:page status:pending and prio:H and +unu
report.q2.columns=start.active,id,project,urgency,description,entry.age,tags
report.q2.labels=A,ID,Proj,Urg,Description,Age,Tags

report.q3.filter=limit:page status:pending and prio:L and +urg
report.q3.columns=start.active,id,project,urgency,description,entry.age,tags
report.q3.labels=A,ID,Proj,Urg,Description,Age,Tags

report.q4.filter=limit:page status:pending and prio:L and +unu
report.q4.columns=start.active,id,project,urgency,description,entry.age,tags
report.q4.labels=A,ID,Proj,Urg,Description,Age,Tags

For a faster workflow, I placed the following in my .bashrc to enable me to write something like q3 55 to move the task with id 55 to quadrant 3 (urgent but not important) or just q3 to display quadrant 3 (for whatevery reason ;-) ):
function func_q1 {
if [ $# -ne 1 ]; then task q1 else task$1 mod prio:H +urg -unu
fi
}
function func_q2 {
if [ $# -ne 1 ]; then task q2 else task$1 mod prio:H +unu -urg
fi
}
function func_q3 {
if [ $# -ne 1 ]; then task q3 else task$1 mod prio:L +urg -unu
fi
}
function func_q4 {
if [ $# -ne 1 ]; then task q4 else task$1 mod prio:L +unu -urg
fi
}
alias q1="func_q1"
alias q2="func_q2"
alias q3="func_q3"
alias q4="func_q4"

Since I ended up calling task inbox everytime after a call of q1, q2, q3 or q4 with an argument, I added the line task inbox in the else branch of all the four functions.

Tags:

## 2 Replies to “The Eisenhower Matrix in TaskWarrior”

1. Michael says:
Danke für den tollen Artikel! Ich habe aus den Reports die Urgency rausgenommen, da ich mit dem numerischen Wert in der Ansicht und auf Papier nicht viel anfangen kann. Stattdessen habe ich die Felder Priorität, Zieldatum (Due.Date) und Countdown mit aufgenommen. # task Q1 report.q1.description=Quadrant 1: important and urgent report.q1.filter=limit:page status:pending and prio:H and +urg report.q1.columns=start.active,id,project,description,entry.age,priority,due,due.countdown report.q1.labels=A,ID,Proj,Description,Age,Pri,Due,Countdown Michael
2. lub says:
Hi, I think you want to use -BLOCKED instead of dep: for the inbox filter, otherwise the unblocked tasks don't show up after completing the dependencies. So I personally use report.inbox.filter=((prio.not:H and prio.not:L) -or (-urg and -unu)) status:pending -BLOCKED Best, lub