I am going to use this post to document 31 workflows for feeling good about day to day work at the computer, one for each day of October, hopefully! Most of this will be in the context of macOS, but hopefully the principles are adataptable to the platforms and tools of your choice.
Turns out I am terrible with remembering keyboard shorcuts, so in an ideal world I’d like to have things triggered by single key presses that are awfully predictably related to whatever I want. For example, hit the “b” key to type out a 🟦. Now this is not tenable of course: there are multiple things vying for the “b” trigger, including, well, the letter b wanting to be typed out.
A natural solution is to have a keystroke sequence for disambiguation. So in principle something like “e” followed by “b”, where the first “e” signals that they keyboard is to prepare itself for an emoji-based trigger, and the “b” does the blue square thing. However, pure key sequences are also going to get in your way, because most of them will be substrings of naturally typed text.
So you’d want a hot key trigger to say you’re going into shortcut mode first: something like Cmd+K → e → b
. BTT supports such sequences out of the box, but Keyboard Maestro, my default tool for such matters, does not with the following explanation in their FAQ:
But Keyboard Maestro does not directly support assigning a two-keystroke hot key to a trigger. The problem with multiple keystroke triggers like Option-F R is what to do if you type Option-F A?
Logic dictates that the Option-F A should go through to the system unimpeded, but Option-F R should be swallowed entirely. But this is impossible. The only way to do it would be to swallow the Option-F key, and then swallow the second key and then resubmit the Option F and the second key unless it matches Option-F R.
However, that is fraught with peril and cannot work robustly in the presence of other applications placing things on the keyboard event queue (or even a sufficiently fast typist).
For example, suppose you quickly typed Option-F A B. Keyboard Maestro would have swallowed the Option F and then the A, and then resubmitted it to the event queue, resulting in the stream of characters B, Option-F, A. There is no way to avoid this race condition, and as such Keyboard Maestro does not support any such mechanism.
As described above, Keyboard Maestro has a variety of ways you can use Option-F as a hot key that allows a second key to be used to select a macro. However in all cases it is clear that the Option-F has been used and there is no concept that the Option-F might come back later to do something else.
However, as a tip from the same FAQ suggests, you can more or less achieve the desired effect by using macro grouping and group activation triggers. So I have a macro group that triggers the square emojis by single keystrokes like so:
…but this macro group is only activated for one action at a time, and its activation is triggered by another KM macro - whose only job is to activate this macro group for a single action, like so:
You might notice that this trigger is also a single keypress (in this example, “U”). This entire macro group is activated for one action with the Cmd+Alt+K
keystroke. So effectively I only remember the Cmd+Alt+K
keystroke, which activates this collection of macros for one action:
…and from here I just have to press “U” followed by “B” to get my 🟦. Just this two-level triggering gives access to potentially 500+ triggers that mneomically efficient, and potentially many more actions (for example, you could map “B” to a bunch of different emojis that share blue as the predominant color, and KM will display a pallette for you to do the final disamiguiation).
IRL I use Rocket by Matthew Palmer to pick out emojis quickly (thanks to a tip from Wes Bos), or just the built-in macOS picker. But I do find the setup described above handy for some unicode symbols that I frequently use.
I should mention God Mode as another popular way to reduce clutter in the keyboard shortcut mindspace, but I never really got used to Karabiner and am too used to the left CAPS key being mapped to Ctrl for me to give that up to the hyper key.
To open a file, I simply open up Alfred and press the spacebar or the '
symbol and start typing out a filename. This is enabled by going in to Alfred preferences and making sure that Quick Search: Enable Quick File Search mode
is enabled:
Most launchers have some kind of file search enabled, so look out for it even if you are on, say, Raycast, or Launchbar, or something else.
I use StaticMarks to track key locations across the web and my filesystem. Typically, any project that I am working on has some subset of the following key links:
- A Drive/Dropbox or local Folder
- A Notes Folder within my PKM system of choice (Obsidian/Quarto)
- A Notion or Things page that tracks tasks
- A Zoom/Meet URL if meetings/classes are online
- Other External URLs (spreadsheets, grading pages, pages on Overleaf/Github, key email threads, and so forth)
I now dump most of this in a YAML file (using Hookmark for local folders, so that the links persist even if I move things around) now, and have a few HTML pages that give me a quick overview of all my major projects. I typically restrict myself to the first three or four links, because that covers 90% of what I need quickly, and the other associated external URLs go into the notes page that I have for the project in my whatever-system, so they do end up being at most one hop away from the static marks page.
Previously I used to try to maintain everything within Arc folders but that got somewhat out of hand, so I swept it all clean and only have more or less top level folders in Arc now representing major themes that I can categorize my efforts into, and each such theme has its own static marks file that I can use to get a nice, searchable big picture.
One thing that I do find annoying in general is the fact that reference material is often common to multiple efforts (e.g, the same papers relevant to multiple research projects). Since I access my files by search, I am perhaps more sensitive than usual to any kind of redundancy — it clutters up the search results (besides, I prefer a single source of truth on, say PDFs, because I am typically annotating them). These days, I keep my reference material separate from projects, and link them to projects using either a PKM system, or more casually, using Hookmark.
Related: Bunch by Brett Terpstra is a handy plaintext automation tool: the website has some really indicative use cases, go check it out! I don’t use this myself but am looking forward to incorporating it into my workflow once my life is sorted enough for me to figure out what I typically do in the context of a specific project, and for said things to be sufficiently distinguishable from complete chaos :)
If you’ve used Cmd+K
on Google docs, you may have noticed — and even been spoiled by — how Google can figure out your links for you based on the content of the selected text:
If you want something similar while editing Markdown files, look no further than the Search Links service by Brett Terpstra. It basically has the same effect: my experience is that I select some text and press a shortcut to invoke Search Links, which then does its thing in the background, and then my selected text is replaced by a markdown-formatted link. The results may not be always what you are looking for (I usually try to keep the text descriptive, and potentially edit later if required), but it works most of the time, and saves me the back and forth of having to open a browser, look for the link, copy it over, paste it back and format it in a markdown-appropriate manner. Great for when you don’t want to leave your editor!
When something is selected (a bunch of text, or a file or a folder), I can double-tap the Alt
key to “send” the material to Alfred, and to process it further from there. This is very handy: for example, if I want some text switched to title case, it’s a few quick keystrokes: double-tap Alt
on selected text, then Ctrl+A
to move to the start of text, type out “case”, and then Cmd + 3
: this replaces the selected text with the same text but in title case. This works because I have the case switch Alfred workflow enabled. I also use this often to open a folder from Finder in VSCode: select folder → send to Alfred → Open With...
→ choose VSCode.
Note: I am yet to find something equivalent to this on Raycast, if anyone has a pointer, please let me know!