Sunsetting my Hammerspoon emoji chooser
One of the things I love about writing software for myself is the very low risk of enshittification. The product will change only if I want it to change. I typically iterate on it early on and then simply enjoy using it when stable.
By having code for exactly what I need and nothing more, I can get away with minimal dependencies and moving parts. By building on opensource foundations, self-made software typically requires very little maintenance as well.
Then, one day I look back and discover that I have been using that software for almost a decade. That is certainly the case for my Hammerspoon emoji chooser on macOS, dated December 2016. I used it daily on countless chats and only occasionally updated it to support new Unicode symbols.
At the time, I built it because I could not find an alternative good enough for me: with keyboard only navigation, escape to dismiss, quick searching, hackable. I remember knowing that macOS shipped with an emoji picker, but I was not fond of it – it felt clumsy and had only partial keyboard application.
At some point, macOS’ emoji picker must have improved. Today, it feels good enough for my needs. It has a default keybinding to 🌐︎+E (using Apple’s relatively new “Globe” key), it focuses the search bar, and Enter accepts selection. That compares pretty nicely to how I set up my emoji chooser, bound to Hyper+E (with Hyper set to ⌃ Control + ⌥ Option + ⌘ Command).
Hello from the built-in macOS picker
That’s why it is (sad) time to sunset my own implementation. When possible, I strive for minimalism and try sticking to provided defaults. By using the built-in picker I can disable Hammerspoon’s accessibility access (required to type the emoji into the corresponding window) and remove one more service from my stack. If Apple ever messes it up, I can always get my self-made version back in no time. If you ever need it, you will find it archived at this permalink.