docwhat's avatardocwhat's blog

GTD and Mutt

I found this article about Getting things done with mutt. It talks about using the techniques from David Allen’s productivity book ”Getting Things Done: The Art of Stress-Free Productivity. I’ve been reading GTD for a week now (taking my time, you know) and think it’s pretty interesting.

Since Mutt is my favorite email client, I spent a little playing with it and making changes. I’m using a different editlabel script and my way doesn’t require patching and recompiling mutt.

Here are my muttrc changes:

set editor='emacs'
set move=yes
set mbox='=archive'

unignore X-Label:  # make sure to display X-Label on each message
color header red default '^X-Label:'
mailboxes =ACTION
mailboxes =RESPOND
mailboxes =WAITFOR
mbox-hook =ACTION  =archive
mbox-hook =RESPOND =archive
macro pager \Ct  "<exit><tag -entry></tag><tag -prefix><mark -as-new><tag -prefix><save -message>=ACTION<enter>"  "Mark message as ACTION"
macro pager \Cr  "<exit><tag -entry></tag><tag -prefix><mark -as-new><tag -prefix><save -message>=RESPOND<enter>" "Mark message as RESPOND"
macro pager \Cw  "<exit><tag -entry></tag><tag -prefix><mark -as-new><tag -prefix><save -message>=WAITFOR<enter>" "Mark message as WAITFOR"
macro index y "</enter><enter -command>set editor=\"~/comp/editlabel\"\n\
<edit><enter -command>set editor=\"emacs -nw\"\n\
<sync -mailbox><next -undeleted>" "Edit Label"
macro pager y "<enter -command>set editor=\"~/.mutt/editlabel\"\n\
<edit><sync -mailbox><next -undeleted>\
<enter -command>set editor=emacs\n" "Edit Label"
macro index \Cy "<limit>~y " "Limit view to label"

set index_format="%4C %Z %{%b %d} %-15.15L %?M?(#%03M)&(%4l)? %?y?{%.20Y} ?%s"
#### END GTD ###

editlabel also has full readline editing and history, which is nice. I haven’t added tab-completion from the history; I’m not sure if I will or not.

My editlabel also has the advantage that you can delete a label just by deleting the line; ^a ^k if you use emacs.

Note that if you use the above, you’ll have to replace the occurrences of “emacs” with whatever editor you use.

I just found a similar post: GTD with Mutt

I like my editlabel better, even if I’m using Python’s evil os.system(). But that narrow-wide trick is neat.


  1. UPDATE 2007-10-08: Added mark-as-new when saving, so that they will attract my notice via the mailbox changing.
  2. UPDATE 2007-10-09: Fixed the mark-as-new stuff…had to use tagging to make it work.
  3. UPDATE 2010-03-01: Updated ‘y’ macro based on feedback from Mark Fardal.
  4. UPDATE 2014-08-11: Fixed broken formatting due to age. Fixed some minor typos.
Edit on GitHub