Skip to main content
  1. Posts/

The Beautiful Simplicity of Org Mode

·1411 words·7 mins·
Emacs Workflow
Joshua Blais
Author
Joshua Blais
Table of Contents

The thing that really became the killer app for me in emacs (and for many people I have come across) is org mode. It was the reason that I could not leave the emacs world completely, and what drove me back to using it full time.

For those that don't know about org - it is one of the most definitive ways that nerds like me live their digital lives in plaintext. There is no other project management/note-taking/organizational/calendaring/all-in-one system that can compete with it.

Org mode is the definition of endgame, because it is as simple or complex as you want it to be; it is massively productive when just getting started with it, but so too rises to the occasion as one learns the intricacies and depths that it is capable of going. I thought that markdown could replace it, I was wrong.

It is in the beautiful simplicity of org that one comes to find its immense power.

In this piece, I will touch on my own org-mode daily workflow, showing you how I use the file structure, capturing functionality, refiling, how I GTD (Get things Done), write, document, and much more. The purpose is to get your noodle noodling and seeing what the potential of org is, and how it could potentially work into your own workflows, habits, and productivity.

My org workflow

I wrote a piece on this a few years back, so consider this my update to that post!

On my computer, there lives a directory for all org files, kept at ~/org. The tree for this directory appears as follows:

./org-tree.png

Each of these files and directories plays a role in the system.

  • bookmarks.html: My browser bookmarks exported daily from firefox. Not actually part of org system.
  • calendar.org: Any event or deadline that has a specific time that it needs to be performed/performed by.
  • contacts.org: All contacts for personal and business formatted with emails/phone/birthday/last contacted/notes
  • done.org: tracks all done tasks/events etc for review and seeing accomplishments over the days/weeks/months/years
  • ideas.org: ideas for projects, work, videos, etc. go here.
  • inbox.org: This is the inbox of all of my system. Where all things are captured.
  • journal: Inside is a year/week of year structure that tracks everyday what I have done/habits/metrics. I am working on a dashboard that this exports to.
  • notes.org: Notes that are parsable and don't fit into the roam structure.
  • projects.org: All work/personal/home/social projects on the go.
  • roam: Directory where all my writing, documentation, etc. lives.

We will discuss how this works, but know that if any .org file lives in the root of this directory, it is important and part of the capture/organization/management structure I use daily.

Capture

All things are captured into the system via a global hotkey Ctrl shift c. This works everywhere on my system, so I can capture notes, urls, text, anything from anywhere. The command to make this happen is

emacsclient -n -e '(progn (select-frame-set-input-focus (selected-frame)) (org-capture))'

You can bind that to whatever hotkey you want in your WM/DE/system settings.

In your running emacs window, you will see the capture template:

./capture.png
  • t: This will capture to inbox.org and is a global default for incoming tasks etc.
  • e and d: This will capture to calendar.org and allows inputting of time/date for events/tasks/deadlines.
  • p: Creates a project in projects.org.
  • i: Captures to ideas.org for ideas and things to look at in the future.
  • c: Inserts a new contact into contact.org and prompts for the specific information to create a structured/standalone contact.
  • n: Creates a note with the date in notes.org.
  • q: Aborts the capture.

The goal here is to reduce friction of thought to text to essentially zero. You think of something, you hit the hotkey, capture it, and return to what you were doing. This becomes a habit as you do it more, and on a daily basis I am capturing dozens of things. I try to put things where they belong, but if I don't know or don't have the time to think about it, I default to "t" and go back to this file every evening to refile.

Refiling

Every evening, I go into my inbox.org file and refile items using Doom emacs' SPC m r r (org-refile) command. They will either be filed to projects.org, ideas.org, calendar.org (seldom, I generally capture these immediately), or moved to my Journal to tomorrow's org file for completion during work. If the task doesn't need to get done immediately or doesn't fit into those files, it will stay in my inbox until completed.

The Journal and Weekly/Daily files

./tree-journal.png

In my journal directory, I include the year and then break down a year into 52 weeks. In each week, I include the days of the week and a weekly.org file.

Each daily file contains various metrics I track daily (water intake, sleep tracking, habits, learning) as well as a journal about the days tasks, work, highlights, gratuities, and what I can improve upon. I have this all in plain text, available for formatting and parsing to a dashboard in the future, showing habits that have been accomplished/missed/etc. allowing for a [[data driven life]].

The weekly file includes a ledger of what I spent my days on and where the time was invested.

Time Tracking

In the daily file, I include my work tasks for the day, each with tracking using org-clock. I change the status of the task I am working on from TODO to STRT, and a hook in my emacs configuration automatically clocks me into whatever it is. I proceed to work on the task, then either change the status to DONE (which stops the clock), or back to TODO (which also stops the clock with a running cumulative log of time spent.) If the task is accomplished, I then copy it (while leaving the DONE task in the daily file for daily time tracking) to my done.org file, which is a totality of things that I have done since starting to use this system about 6 months ago.

The weekly file then takes in the time tracked from each daily file and displays it in a report for me to use for prioritization and seeing where time is going.

One can setup a clock-table in any org file using org-clock-report and dictating how far down the subtree one wants to track.

The Done.org file

In my done.org file as previously mentioned, I log all done tasks under their respective dates. This then permits me to…

CYA (cover your behind)

The benefit of this is in one file (parsable via ripgrep of course!) I can cover my behind and show when things were done/accomplished. So, if I ever need to review or someone questions if something was done, there it is in one file!

The calendar.org file

This is a file dedicated to the events and deadlines I have set. The reason I keep it in a separate file is that I can link Google calendar via org-gcal andd sync the one file for events and dedicated scheduling. This allows me to use my mobile phone for notifications and reminders that I would otherwise not be able to use with org mode (I know orgzly etc. exist, but they aren't full featured as emacs is)

When events are completed from calendar.org, I refile them to the done.org file to show past events when reviewing.

The flow:

Capture > inbox.org/calendar.org/projects.org > refile to where task needs to go > choose tasks for day, insert into my journal-daily.org file > work on task with time tracking > mark as finished > copy to done.org

Conclusion

I have barely scratched the surface as to the power of org mode and emacs. I will write further parts in the future about how I write, literate program, create tables, etc. in future posts. The capture system I have described should get one started in creating a file structure and tracking methodology that makes sense. I will not say this is the final form of my org structure, but after a few years of using org mode, it seems to match my workflow and be suitable/manageable for the numerous projects I have on the go.

Truthfully, without org mode, I would be entirely lost as to what I need to do at any given time/place, and it is all thanks to this rabbit hole of a software that I can keep the balls in the air as I do.

As always, God bless, and until next time.