“A nearly impenetrable thicket of geekitude…”

OmniFocus Automation

I’ve been using The Omni Group’s OmniFocus personal task manager for a decade or so now. Every few years I get the sense that I’ve strayed too far from principles and rebuild my system from scratch; 2019 has been one of those years for me. As a result I’ve been spending a lot of time with Tim Stringer’s Learn OmniFocus site, and in particular looking at how other people tailor this very flexible software to their particular needs.

A recent Learn OmniFocus workflows interview with Jason Atwood reminded me that one of the coolest features of the Mac version of OmniFocus is the ability to select a subset of the folders and projects in your database and focus in on them: if you do this, you can apply various perspectives to just those selected areas as if the others didn’t exist. I used to do this, but over time I ended up with too many folders for it to be practical. It’s an error-prone pain to select several items and then the focus action. I could reorganise my database so that I only have a couple of top-level folders, but I don’t have a perfectly hierarchical life. I want to be able to slice things up in several different ways.

Pain leads to automation, and one recent evolution of OmniFocus is towards a cross-platform automation system based on JavaScript. With a bit of help from Sal in the Omni Group Slack’s #automation channel, it turned out to be pretty easy to make plugins to select arbitrary groups of projects and folders and focus them. I’ve pushed a repository to GitHub if you’re interested in the code.

Here’s what my Automation menu looks like in OmniFocus now:

Automation Menu

So, it’s pretty easy to focus in on specific clients, or on “Work” in general, or on “Home” (defined as “not Work”).

I could bind each of those actions to a different shortcut key using the system keyboard preferences (as you can see I’ve done with the “Promote/demote” action). I have a problem remembering lots of bindings, though, so I turned to Keyboard Maestro. This is another piece of Mac software I’ve been using to some extent for ages but to which I’ve been reintroducing myself this year through David Sparks“field guide”. Amongst other things, David taught me about conflict palettes.

Here’s my OmniFocus group in Keyboard Maestro:

Keyboard Maestro "OmniFocus" Group

You can see that I have a number of macros, each bound to the same Control+F shortcut key (the group is also set to be active only when OmniFocus is the current application). Each of those macros simply invokes the appropriate menu item in OmniFocus. This is what pops up if you use a conflicted binding like Control+F:

Conflict Palette

Pressing one of the highlighted letters (‘D’, ‘H’, or ‘W’ in this example) after Control+F dismisses the conflict palette and invokes the identified macro, which in turn invokes the relevant plugin.

I find using a couple of keystrokes like this really smooth, by comparison with manually selecting multiple items with the mouse or even selecting a menu item. I often find that moving complexity out of the user interface into automation means I’ll actually use something, where it was previously too much hassle to bother with. I feel more focused already.