Tracking Pomodoros In Emacs With Org-Mode

I’ve been using the Pomodoro Technique for over a year now. The Pomodoro Technique is a way to divide your day into a several sets of time and (try) to focus on one task at a time without distractions. It has worked great for me with a graph paper notebook.

This morning though, I was wondering if there was a way to do the planning digitally in Emacs. I didn’t want a timer, just a simple way to allocate my pomodoros (chunks of time). Asking on Twitter, I had two people suggest using org-mode. So I dug into the org-mode manual and hacked something simple together using it’s tables.

Example day planned in orgmode
Example day planned in orgmode

The screenshot is a perfect example of a single day:

  • using org-mode’s folding I can hide all of the other days except for today (2011-05-05 is hidden). I also have a section for Help where I’m keeping my notes
  • the columns in the table are
    • category – G(eneral), M(arketing), C(lient), E(mail), O(SS).
    • name of the todo item from my other todo list
    • the number of pomodoros I’ve allocated (empty [ ]), spent ([X]), and ones I didn’t need ([-])
  • completed todo items are crossed out the as I go

So I’ve finished everything I wanted to do today except for “Write about pomodoro in org mode” and I still have one pomodoro left for it. I also set aside 2 pomodoros for the Redmine Tip today but only need to use one.

To make it easy to add a new table and allocate pomodoros, I recorded a few simple macros:

;; Emacs macro to add a pomodoro item
(fset 'pomodoro
   "[ ]")
;; Emacs macro to add a pomodoro table
;; | G | Organization | [ ] |
;; |   |              |     |
(fset 'pomodoro-table
   [?| ?  ?G ?  ?| ?  ?O ?r ?g ?a ?n ?i ?z ?a ?t ?i ?o ?n ?  ?| ?  ?\[ ?  ?\] ?  ?| tab])

This lets me add a block of pomodoros with something like C-u 5 M-x pomodoro. I also set up a macro to add the entire table, M-x pomodoro-table which should save me time each morning.

Playing with org-mode and it’s tables was really useful. I really like how you can tab through a table and let it auto-format the column width. Finding this out will save me a bunch of time editing some of the wiki pages in ChiliProject.


  1. jxy says:

    Another option would be to use column view mode with properties. That way, it would be more integrated with the default TODO entries.

    • edavis10 says:

      Don’t get interrupted…. ;)

      I was never able to track them that good (might start). I work from home so my main interruption is from checking Twitter or chat. I was thinking about adding a quote next to the task when interrupted (e.g. webinar | [X][X] ‘ ‘ )

  2. Ashish says:

    By the way, do you have any scheme for tracking internal and external interruptions as per the original Pomodoro Book by Francesco Cirillo. For example, he uses ‘ to mark internal interruptions and – to mark external interruptions?

    • edavis10 says:

      I was thinking about using quotes and backquotes to track interruptions (‘ or `). Check the comment I made to Seth Mason below too.

Comments are closed.