
Getting Things Done with Emacs: Manage your life with Org Mode

Peter Prevos |
3217 words | 16 minutes
Share this content
The market for productivity applications is saturated with apps and other complex systems to manage your actions. While these systems provide great functionality, the main problem is that you have to use them the way the designer intended instead of how you like to work. This article shows how to use Org mode to get things done with Emacs and configure a bespoke productivity system.
The approach in the article roughly follows the concepts of David Allen's Getting Things Done (GTD) system. This is, however, not the only method to manage your affairs. Whatever your preferred workflow looks like, you can configure Emacs to help you with that.
Emacs Writing Studio
A comprehensive guide for writers seeking to streamline their workflow using Emacs. The book covers everything from organising ideas and writing distraction-free to publishing in multiple formats. It’s perfect for both beginners and experienced Emacs users, offering practical tips and a tailored configuration to enhance your writing process.
The source files of the book and EWS configuration are also freely available on GitHub.
The productivity quest
The quest to become more productive has become a popular past time. Millions of people around the world struggle with the demands of life in the twenty-first century and they constantly look for ways to cram more activities into their day. Self-proclaimed productivity gurus have published piles of popular books about methods to get more done in your limited available time.
All these methods boil down to three basic phases: set a goal, define the actions to achieve that goal and undertake these actions. These principles might sound simplistic, but it is the basic truth. The plethora of methods merely discuss different ways on how to manage these three steps effectively and efficiently. A central theme of these methods are means to process the enormous amount of information that people are exposed to every day.
In the slipstream of the productivity gurus, software developers have released many apps to manage the information stream of our daily lives. The internet contains many stories about people who moved from one application to the next, in search of the perfect way to manage their projects and tasks. I was one of those people, until I started using Emacs.
Org mode is an ideal system to help you getting things done. The Org mode package not only allows you to write prose, it is also helps you to manage actions and projects. As with any other Emacs package, it provides virtually unlimited freedom to implement your favourite method to get stuff done.
This chapter shows how to use Org Mode to manage your projects and tasks, loosely based on David Allen's Getting Things Done (GTD) method. David Allen describes iterative five steps to become more productive:
- Capture: Empty your mind
- Clarify: Describe what it all means
- Organise Place it where it belongs
- Reflect: Reflect on your progress
- Engage: Take action
Capture: empty your head
One of the reasons we are often not as productive as we like is because our minds are filled with issues. When our brain is full of thoughts about what we should be doing, we start to worry about how busy we are instead of doing the thing we need to do. David Allen says that "Our minds are for having ideas, not for holding them".
The first step to getting things done is to empty your mind. This is not a Buddhism-inspired quest for enlightenment, but a simple technique to help you focus. A brain only has a limited capacity as we can only have one thought at a time. When your brain is full of thoughts about what you should be doing, creative and productive thoughts are suppressed.
The other problem with keeping ideas in your head is the risk that they will disappear in the fog of your brain. I am sure you all recognise the experience of having the most wonderful idea when enjoying your morning shower, but half an hour later you are unable to recall your gem.
Open a new Org Mode file with the find-file
command (C-x c-f
). You can call it something like inbox.org
, or whatever you fancy. For the next fifteen minutes, write down everything that is floating around in your head. Dump the contents of your brain into this virgin Org Mode file. Try not to multitask when you empty your mind, but fully focus your attention on the list.
Start every new idea with an asterisk so that they become headlines. Your list will contain a jumble of random things. From minor household tasks to big future projects you want to do one day. Don't filter your thoughts. Just write them down.
For the next twenty-five minutes, focus only on this task and write down everything that is in your head. Don't multitask and give this activity your undivided attention. Multitasking is the enemy of productivity because our brains can only focus on one intellectual activity at a time. The fact that magicians can so easily fool people illustrates why multitasking is a fool's errand. Perhaps listen to some music with the Emacs EMMS package to keep you focused.
Don't spend any time thinking about these tasks. Don't worry about when you'll need to do it or in what order they need to be done just yet. Ensure that your mind is empty by the time you complete your list. If the list only has about a dozen items, then your list is not complete. For most people, fifty actionable items, projects and fuzzy goals are not unusual. If you are overwhelmed by the list then don't shoot the messenger as it merely reflects your life. If it takes you longer than twenty five minutes to empty your mind, then take a five minute break and start again.
You now have a long list of all the stuff you need to get done. But that is only the starting point. Org mode also has functions that can capture tasks as they come up in random moments of the day.
* Mow the lawn
* Clean up the backyard
* Improve my job skills
* Learn how to use Emacs
* Write an ebook about ... (fill in your speciality)
* Empty your e-mail inbox
* Prepare presentation for the quarterly meeting next week
* And so on, and so on ...
Clarify: Describe what it all means
Did you notice that most things on the list above, apart from items 6 and 7, are more work than just one action?
In GTD-speak, they are projects, which are desired outcomes that take more than one action to complete.
Your list will be a mess of tasks, projects, goals and vague ideas. Your next task is to organise them. Firstly you can add some order and hierarchy to the list with the ALT
and arrow keys. M-up
and M-down
will move a heading up or down, while M-right
and M-left
will promote or demote your entry.
With these four keystrokes, you can organise your list so that projects and tasks go together and create some order in the chaos that came from your mind. So the garden becomes a project with two tasks:
* Gardening
** Clean up the backyard
** Mow the lawn
If you like a bit more clarity on your list, you can collapse a heading with the TAB
key. Using S-TAB
will collapse the whole document to only the first-level headlines. Repeatedly using S-TAB
will cycle through the full content, only the first headlines and all headlines.
You can also add notes or link images below any heading to provide some context to the task by hitting enter at the end of the headline and typing.
Your list is starting to take shape now. The following steps will add more context to your tasks. If you like do some more finessing, then read my article on writing prose with Org mode.
Organise: Place it where it belongs
After a week or so, your inbox will start filling with stuff. Your inbox is not just one location, but a collection of places where you gather information. Emacs Writing Studio uses the Org mode capture mechanism as an inbox, but it can also be a physical inbox to collect papers. A digital notebook on your phone or a physical diary to collect notes are also viable options.
My personal inbox consists of my Org mode inbox file, my email inbox, a cloud-based notes application in my phone a physical inbox and my physical diary. As part of my weekly review I promise myself to empty these locations and process them into my system using this flowchart, which is based on the classic GTD model.

During your regular review, you assess each bit of information you collected. If it is not actionable, the you either ditch it, otherwise capture it in Denote as a permanent note.
If the new item is actionable and it only takes a few minutes to do, then just go ahead and do it; don't waste your time formally registering the action.
Lastly, if the inbox item is actionable, bur requires some time, you can add it as an action to your agenda file. The status of each action depends on external circumstances.
Action Status
The problem with most todo-lists is that you get overwhelmed by the amount of stuff to be done. But in reality, most actions don't need or can't be progressed. You can be more precise in your records and mark items as the next action to be undertaken, or mark the ones where you are waiting for somebody else.
- Next: The next action to be taken.
- Todo: Something to be done in the future (either scheduled or as yet undetermined)
- Waiting: If you are waiting for somebody to do something, then mark it as such.
Org mode can associate each headline in a document with a workflow state. By default, there are only two states, TODO
or DONE
. You can change the state of a heading with the shift and arrow keys. Org mode will cycle between the two states. The keywords are commonly written in all caps, but that is not necessary.
You can define workflow states any way you like. Adding the following Lisp lines to your init file will set your workflow states. The states after the vertical bar will be marked as completed, usually coloured green.
If you have many states, cycling through them can be tedious. The C-c C-t
command provides a popup menu to quickly select your option. You add the menu letter between parentheses after the keyword like this:
(setq-defualt org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "WAITING(w)" "|" "DONE(d)" "CANCELLED(c)")))
Emacs Writing Studio roughly follows the GTD approach and have a status for next actions, waiting for others or future actions. When an action is completed, it is either done or cancelled. There are, in principle, no limitations to how you use this functionality.
The basic principle of the GTD approach is not to have massive lists of items that you like to do one day but that you define the next action that needs to be done to achieve your goal, or schedule activities in your diary. This method ensures that only a subset of activities is in your consciousness and you don't get overwhelmed by your inactivity as action lists tend to be long list of promises to our future selves.
You can set different keywords can for each Org file. When, for example, you are writing a book, you could set specific keywords for each heading with the following line in your header:
#+TODO: TODO(t) DRAFT(d) | DONE(c) EDITED(e)
Adding dates and deadlines
Now that your list is nicely organised in the stuff you need to do, add dates to some of the tasks. Scheduling a task to a specific date is to commit your recalcitrant future self to the action.
You can add the date that the task is scheduled or a deadline by which is should be completed. A scheduled date indicates the date or period you plan to work on the task. A deadline is the time the task needs to be completed.
To add a scheduled date, use C-c C-s
when on a headline. Emacs will pop up a calendar that you can use to select a date. The shift and arrow buttons move the timestamp by day or week. The <
and >
symbols move you a month in time. Press enter when done, and the date appears below the headline. You can add a deadline in a similar way but with the C-c C-a
keystroke.
Timestamps use the ISO 8601 format: year, month, day. This format avoids any confusion between American formats and the rest of the world. Editing a timestamp is easy. Place your cursor on either the year, month or date and use the arrow keys to move it up or down.
Scheduled dates can also set a regular schedule. For example, suppose you add, for instance, +7d
at the end of the date. In that case, Org mode recalculates the date every time you complete the task and resets the status to TODO
. You can also use the letters w
, m
and y
for scheduling a job weekly, monthly or yearly. Some actions have to be undertaken weekly on the same day, but in some instances it is better to restart the clock every time it is completed.
In the example below, I have planned to complete the Org mode article on 8 May. My tax return has a deadline of 30 September and appears annually on that date. It is a deadline instead of a schedule because the date is enforced on me externally. The last action is my weekly review of the inboxes. In this case, the seven days are recalculated every time I complete the action. So if I complete the review on 13 May instead of 11 May, the new date will become 20 May.
* TODO Complete Org-Mode article
SCHEDULED: <2021-05-08 Sat>
* TODO Submit tax return
DEADLINE: <2021-09-30 Mon +1y>
* TODO Weekly review
SCHEDULED: <2021-05-11 Sun ++7d>
Only add a scheduled date if this is the time that you plan to do the action. Try not to add too many self-imposed schedules because you will over commit your day. A deadline is only helpful if there is an external expectation that you need to complete something by a specific day, for example, get travel insurance before your flight leaves.
Checklists
Not every action needs to be a headline todo item. Org mode allows you to add checkbox items anywhere in your document by adding [ ]
after the list indicator. Using M-S enter
after a tick box item will create a new box. You could use this functionality as a checklist for a larger action.
The snippet below is an example of a todo item with a deadline, some notes and a checklist.
* TODO Submit tax return
DEADLINE: <2021-09-30 Mon +1y>
Tax accountant: 0407 555 283
- [X] Collect records
- [ ] Prepare overview
- [ ] Set appointment with accountant
Ticking and unticking any items is as simple as hitting C-c C-c
. You can convert a plain list item to a todo item, or vice versa, with C-u C-c c
.
You can also convert list items to headings and back again. The org-ctrl-c-star
function (C-c C-*
) converts a paragraph to a heading. If the line contains a tick box, it becomes a TODO item. Using C-c C--
(org-ctrl-c-minus
) converts a paragraph to a list item.
Reflect: Review your progress
The key of any productivity workflow is to regularly review your list of actions, your priorities and goals. The central tool in Org mode to look at your list of registered actions is the agenda.
The agenda provides a summary of all your headings with an action status. Firstly, it is common practice to bind C-c a
to the agenda menu. You can assign one or more Org mode files that contain your actions. Org mode will read these files and present the todo items as an agenda.
The Org files used to construct the agenda are stored in org-agenda-files
. You can figure this variable with some keystrokes.To add a file with actions to the agenda use org-agenda-file-to-front
(C-c [
) and remove it with C-c ]
(org-remove-file
).
When you evaluate the org-agenda
function with C-c a
, Org mode reads all agenda files and constructs an agenda, listing actions by date.
You can change the status of items from within the agenda or jump to the file that contains the action, so you can ready any context or maintain checklist items.
The agenda starts with a self-explanatory menu screen which you can explore. Org mode has extensive capabilities to configure how the agenda is presented, which are outside the scope of this article (See chapter 11 of the Org mode manual).
Engage: Take action
Unfortunately, Emacs cannot help you with mowing the lawn, go shopping or other physical tasks on your lists. Emacs can help you with any task that involves creating written content, but it can't mow the lawn for you.
In the end, there is no productivity system in the world that does the tasks for you, no matter what the gurus promise. However, bringing order into your tasks keeps you focussed on your goals.
Org mode configuration
This code snippet provides a basic configuration for managing actions and projects in Org mode. You can of course modify the sequence of your action statuses to whatever you please.
(use-package org
:custom
(org-todo-keywords
'((sequence "TODO(t)" "NEXT(n)" "WAITING(w)" "|" "DONE(d)" "CANCELLED(c)")))
:bind
(("C-c a" . org-agenda)))
Learning More
Getting Things Done is just one of many methods to manage your busy life. This article shows how to implement the principles of David Allan's method with Org mode. The beauty of Emacs is that you have the freedom to implement whatever method you prefer.
You can find the Org manual on TODO items with C-h R org RET g todo RET
.
Bavarian Org mode guru Rainer König has developed a comprehensive series of YouTube videos that explain using Org for managing actions and projects in great detail. I also recommend following his Getting Yourself Organized with Org mode course on Udemy.
Emacs Writing Studio
If you like to support my work, then please purchase the Emacs Writing Studio book.
Emacs Writing Studio
A comprehensive guide for writers seeking to streamline their workflow using Emacs. The book covers everything from organising ideas and writing distraction-free to publishing in multiple formats. It’s perfect for both beginners and experienced Emacs users, offering practical tips and a tailored configuration to enhance your writing process.
You can find the source files for the book and the latest configuration files on GitHub:
Emacs is a malleable system, so everybody will have their personal preferences. Any article on how to use Emacs is thus opinionated. If you have a different way of doing things, please complete the contact form to send me an email or contact me on social media.
The next article discusses how to manage your files with Emacs dired.
Share this content