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 <a href="http://en.wikipedia.org/wiki/Time_management#The_Eisenhower_Method">The Eisenhower Method with a picture of the "matrix" at Wikipedia</a>). The goal of this post is to implement it with <a href="http://taskwarrior.org/">TaskWarrior</a>. <span id="more-2189"></span>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. ```bash 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`. ```bash # 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,urgency,description,entry.age,tags report.q1.labels=A,ID,Proj,Urg,Description,Age,Tags # task Q2 report.q2.description=Quadrant 2: important and unurgent 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 # task Q3 report.q3.description=Quadrant 3: unimportant and urgent 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 # task Q4 report.q4.description=Quadrant 4: unimportant and unurgent 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 ;-) ): ```bash function func_q1 { if [ $# -ne 1 ]; then task q1 else task $1 mod prio:H +urg -unu task inbox fi } function func_q2 { if [ $# -ne 1 ]; then task q2 else task $1 mod prio:H +unu -urg task inbox fi } function func_q3 { if [ $# -ne 1 ]; then task q3 else task $1 mod prio:L +urg -unu task inbox fi } function func_q4 { if [ $# -ne 1 ]; then task q4 else task $1 mod prio:L +unu -urg task inbox 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. 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. 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

Leave a Reply

Your email address will not be published. Required fields are marked *