I Just Unlocked MacOS GOD MODE With Hammerspoon


I Just Unlocked MacOS GOD MODE With Hammerspoon

Ever felt like your Mac is an overprotective parent, constantly limiting what you can do?

Can't open any downloaded app, can't control your own notifications, can't do anything that isn't strictly within the boundaries dictated by Apple...

I just discovered a power tool that hands you the keys to the kingdom – Hammerspoon, a decade-old but criminally underrated Mac automation tool that lets you bend macOS to your will with simple Lua scripting.

Most Mac users wrestling with automation either resort to Apple's limited Shortcuts app or dive into complex AppleScript solutions.

While these tools work for basic tasks, they often fall short when you need deeper system control or want to create complex workflows. In my case, I desperately wanted a notification to pop with every upcoming meeting, without having a dedicated browser tab opened, working through Apple's "standby mode", AND clickable so that it takes me straight to the meeting link if it exists in the invitation!

As quoted in the official Hammerspoon documentation, it's

"just a bridge between the operating system and a Lua scripting engine"
- hammerspoon.org

But this simple description says everything about its power.
I spent the last few weeks exploring Hammerspoon's capabilities, and it's changed how I interact with my Mac.

Want to create custom keyboard shortcuts that launch apps and navigate to specific menu items? Done (I know what you're thinking... yes - another macOS app launcher, woo hoo).

Need smart calendar notifications that not only alert you about meetings but also extract and display the meeting link? Absolutely possible. The real game-changer is how Hammerspoon lets you write simple Lua code to control virtually any aspect of your system.

Here's the approach that worked for me: instead of fighting with Apple scripts (if you ever wrote one, you KNOW it's a fight), I started small with Hammerspoon.

First, I created basic keyboard shortcuts for app launching.

Then, I graduated to window management scripts.

Finally, I built a custom calendar notification system that pulls from Google Calendar and displays meeting alerts exactly how I want them.

But this is only scratching the surface, the list of APIs Hammerspoon covers is HUGE.

You can control custom alerts, audio devices, the battery, camera, drawing on screen, controlling the mouse, network, wifi and SO MUCH MORE!

The best part? Everything is customizable through straightforward Lua code.

Don't want to write Lua?

What makes this different from other automation tools is Hammerspoon's "spoons" – pre-built modules you can simply drop in and use.

Think of them as building blocks for your setup. Pick and choose, mix and match, do what works for you.

A word of warning: while spoons are extremely useful, some of them are a bit outdated. This is why I resorted to writing my own code when it came to more complex cusotmizations, so just keep this in mind.

Want to get started? Head to hammerspoon.org, install via Homebrew with a simple brew install hammerspoon, and you'll be writing your first automation script in minutes.

Feel free to respond with comments, questions and thoughts!

See ya next week.

ESPRESSO FRIDAYS

Every once in a while I send hand picked things I've learned. Kind of like your filter to the tech internet. No spam, I promise!

Read more from ESPRESSO FRIDAYS

Why I'm Ditching Nix Home ManagerAnd What I'm Using Instead This issue is brought to you by: Ready to Take Your Testing to the Next Level? Don’t let complex testing slow you down! With Squish, you can automate your entire UI testing process across multiple platforms, ensuring both speed and accuracy. Take a tour to see Squish for yourself! For the longest time, my dotfiles felt like a junk drawer: essential, but keeping them in order is a constant battle. Like many developers, I've been...

One Neovim Plugin, 10x Quality of Life This issue is brought to you by: Ready to Take Your Testing to the Next Level? Don’t let complex testing slow you down! With Squish, you can automate your entire UI testing process across multiple platforms, ensuring both speed and accuracy. Take a tour to see Squish for yourself! Ever found yourself drowning in a sea of Neovim plugins, each promising to solve one small problem but collectively creating a configuration nightmare? You're not alone. Today,...

I Was Wrong About Nushell (I Finally Get It Now) This issue is brought to you by: Ready to Take Your Testing to the Next Level? Don’t let complex testing slow you down! With Squish, you can automate your entire UI testing process across multiple platforms, ensuring both speed and accuracy. Take a tour to see Squish for yourself! There's a moment when you realize you've been looking at something all wrong. That happened to me with Nushell. I initially approached it as "just another shell,"...