Jethro Kuan


Org-mode Workflow Part 1: Capturing in the Inbox

(Previous Post: Org-mode Workflow: A Preview)

Have you ever sat down with nothing but a pen and a piece of paper, writing down everything you need to do? Recall how you felt right after. Did you feel more in control? Isn’t it strange that you feel better looking at the long list of work, knowing that your little exercise accomplished nothing on the list? What pushed you to do this little exercise?

The list made you feel more in control because it freed yourself from having to remember to do these things. With every task on paper, you can utilize the full capacity of your brain to do the actual hard work of accomplishing tasks.

Your brain is for having ideas, not storing them – David Allen

Filling up the inbox is equivalent of doing this exercise, systematically and consistently. The inbox is where everything begins. Every article, thought and assignment starts from the inbox. Because the inbox is so crucial to the workflow, the process of adding and processing items is as frictionless as possible. The inbox is all about trust. Trust that you everything you will need to think about is captured somewhere. This allows you to give your 100% for the current task.

Tasks pile up quickly, and arrive whenever they please, more often than not while we are in the middle of something. The inbox is designed such that I am able to file these tasks away in a snap, and keep my attention on the current task.

Filling up the inbox should be fun! If you feel dread when you do this, you’re probably doing this wrong.

Capturing Items Manually

Org-mode ships with a feature called org-capture, which allows for quick storage of notes, from anywhere. I use this to quickly add anything to my inbox.

Figure 1: Capturing items manually

Figure 1: Capturing items manually

Capturing Articles

Org-mode has a neat feature called org-protocol, which ties in neatly with org-capture. Here, I use a Javascript bookmarklet to automatically add webpages and PDFs to my inbox.

Figure 2: Capturing articles with a bookmarklet

Figure 2: Capturing articles with a bookmarklet

The bookmarklet is uses the new org-protocol syntax which isn’t very well documented. This also requires you to setup org-protocol appropriately.

javascript:location.href ='org-protocol://capture?template=c&url='+
  encodeURIComponent(location.href) +
  '&title=' + encodeURIComponent(document.title) +
  '&body=' + encodeURIComponent(window.getSelection())

Capturing Email

I use an email system called notmuch. I have 3 important email accounts to keep up with, so I use isync to periodically fetch my email and save them for offline use, and the Emacs notmuch interface gives me access to mail from all accounts at the same time:

Figure 3: The notmuch main interface

Figure 3: The notmuch main interface

Figure 4: notmuch sample mail view

Figure 4: notmuch sample mail view

Capturing an email is also a key away. It creates an entry in my inbox with a link to the email.

Figure 5: Email Capture

Figure 5: Email Capture

What’s Next?

Here are the capture templates I use:

(setq jethro/org-agenda-directory "~/.org/gtd/")
(setq org-capture-templates
      `(("i" "inbox" entry (file ,(concat jethro/org-agenda-directory "inbox.org"))
         "* TODO %?")
        ("e" "email" entry (file+headline ,(concat jethro/org-agenda-directory "emails.org") "Emails")
         "* TODO [#A] Reply: %a :@home:@school:" :immediate-finish t)
        ("l" "link" entry (file ,(concat jethro/org-agenda-directory "inbox.org"))
         "* TODO %(org-cliplink-capture)" :immediate-finish t)
        ("c" "org-protocol-capture" entry (file ,(concat jethro/org-agenda-directory "inbox.org"))
         "* TODO [[%:link][%:description]]\n\n %i" :immediate-finish t)))

I’ve shown that org-mode provides great tooling to capture items. With this, we have completed probably the most impactful step in the workflow. In the next part of the series, I will explain how I process these items.