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.
2 Replies to “The Eisenhower Matrix in TaskWarrior”