Doom Emacs: The Odyssey Begins
WARNING: The content herein may be disturbing for existing Vim and Emacs users. I intend no offense to either religious group, but advise that you turn back now if you’d like to avoid exposure to the musings of an Emacs noob.
Introduction
I’ve often flirted with the idea of moving into Vim or Emacs to do some or all of my text-based work. The workflows, the keyboard shortcuts, the extensibility, and the history all seem so appealing, and I’ve always had a love of terminal- and text-based applications.
In the past, I’ve made brief jaunts into the respective worlds of these extensible text editor heavyweights, but I always fell out of them for one reason or another. Once, I even attempted to use Spacemacs in place of Obsidian for a little while during my time crafting a slimmed-down BSPWM-Arch setup.
Unfortunately, I was never able to commit to the practice. The learning curve for either is extremely steep, the documentation is expansive, and the absurd wealth of options and customizations is daunting. Not only this, but it always felt wildly over-powered for my relatively simple use cases.
The Present Situation
As I’ve recently broadened my hobbies and returned to a few old ones, I’ve also had to dramatically increase my Zettelkasten input and begin using a wider array of software.
For my blog, I’m currently using Code-OSS. It’s integrated with my Gitlab, my local project, and I’ve set up a workspace that includes a terminal for running the Hugo server, a browser preview, and my main editor. I also use this for my Garuda contributions, although my setup for that is less well-developed.
For my Zettelkasten, I use Obsidian. It’s honestly an amazing program, and for now it does what I need it to do. It has a good search, works in one folder, provides nice markdown editing, performs decently, and a offers a good handful of plugins.
For the rest of my workflow, I’m split across a number of platforms and apps. A large majority of the other stuff I do - online writing, forum use, YouTube, and more - occurs across a genuinely unfortunate number of FireFox tabs split between 2-3 windows. Then, there’s Discord, Telegram, and Fractal for communication, Evince for PDF’s, LibreOffice for word documents, GNOME Terminal for my command line, etc.
I realize at this point that this sounds fine. I’ve certainly got the RAM to spare to have all these windows open at once, and GNOME is where I thrive as far as desktop productivity even scaled up to this program load.
However, I do have some gripes with this current state of things. Alone, each is probably very minor, but they’ve recently begun adding up to the point of bothering me.
For one, I have a semi-irrational hatred of Electron-based apps. While there are plenty of valid reasons for this, it’s mostly just been an intuitive development over the years. When I can, I avoid Electron like the plague. Unfortunately, I currently rely heavily on Obsidian and Code-OSS for much of my work.
I’ve also always had an inclination to work in text as much as possible, and time with the Zettelkasten method has only further cemented that. Dedicated use programs like IDE’s, markdown editors, and office suites each only do one subsection of text work well, and the differing file formats lead me to stash non-Zettel text elsewhere on my system.
This fragmentation of knowledge/work/storage has grown ever more annoying over the past few years. In Obsidian, I can search the body of all text in my entire vault, which makes it easy to find things I need and navigate my second brain with relative ease, but nothing like this applies well to the rest of the things I’ve worked on. This disparity in ease of use between my Zettelkasten and everything else hasn’t been enough of an issue in the past, but with my changing workload it’s begun to genuinely interfere.
Finally, there’s the issue of task and productivity management. While I know many use Obsidian or other similar programs to do so, the available implementations of calendars and to-do lists for it always felt wrong for me. Yet, having a separate application to list and organize my tasks (Planner/Todoist for now) also feels somewhat wrong, and places that reference outside of my working environments that usually occupy my entire screen.
Which brings us to now.
A New(Old) Horizon
A few days ago, a reference to Emacs popped up in something I was reading, and as often happens with me, I fell down the rabbit hole again.
As my open tabs grew and my research deepened, I began to glimpse the tip of a staggering iceberg, a tiny hint of the vast depths of Emacs I’d brushed before.
Of course I’d “used” Spacemacs, and I’m handy enough with Vim to get around a config file or two, but it grew on me that I had never actually realized the possibilities at play.
Emacs’ use for development has something like 50 years of history, and the handful of tools I actually use from Code-OSS could easily be replaced by seemingly better options in the form of plugins.
Something like org-mode
or even org-roam
seemed to be a shockingly powerful replacement for Obsidian, and could loop in to-do lists, other document work, exporting, and apparently literally anything you could imagine.
Hugo’s own website even references a plugin that offers full integration of Hugo into an Emacs workflow, and another plugin provides the ability to natively export .org
files into clean, Hugo-tailored markdown.
The more I read, the more it appeared that everything I needed could take place within Emacs. I’d long heard “Emacs is an operating system,” but now I believed it.
The Call of the Dark Side
First, I gave vanilla Emacs a shot. I trudged through a handful of guides on customizing it to my liking, looked into plugins, messed around with some configs, but ultimately I found the “key-chords” cumbersome and unintuitive (blasphemy, I know), and the generally enormous body of work it would take to get it to a pleasant and workable state seemed far too much.
Next, I tried Prelude, which aimed to offer enhanced defaults and quality-of-life improvements. It was better, but I still found it not quite to my liking.
I considered returning to Spacemacs more properly, but after a little poking around it began to feel somewhat unnecessary, and the “layers” system seemed odd to me.
Finally, I remembered Doom Emacs. I’d learned of it from DistroTube’s excellent channel, but brushed over it at the time because “why would I use Emacs?” So, I followed his tutorial, and found it running in front of me just a few minutes later.
The package management, while non-standard, seemed easily approachable. The user-side configuration setup felt neat and appealing, one folder, three files, well documented, and I didn’t have to touch anything else. For keybindings, SPC
as the leader key felt remarkable. Doom’s built-in binary, too, made setup and maintenance very simple.
Could it be that this was the answer I was looking for?
The Road Ahead
Obviously, I’m still terribly inept with Doom Emacs. A long journey faces me, and trying to learn enough to successfully migrate some of my workflows to the program is going to take a while.
This time, though, I feel somewhat more committed to giving this a proper chance. The possibilities are exciting, and the idea of someday having a consolidated working environment for every piece of information I’ve ever found, noted, or generated, is extremely appealing.
I’m going to take my standard approach first, keeping a log of my reading and plans, then consolidating that into a more functional document. Instead of doing so in Obsidian, however, I plan to begin working up an .org
document for hands-on learning.
Perhaps I am doomed to fail, and slink back to my GUI’s in shame, but for now I persevere. If all goes well, I’ll continue to update this blog with my progress. And who knows, maybe a few posts down the road I’ll be writing from within the depths of Doom.
Stay tuned, do good work, and be kind.
Thank you for reading.
~Sonar