Hammerspoon Updates

I’ve been slowly rewriting many of the automations I’ve already featured on the Hammerspoon tag. Originally they were tightly coupled both to each other and to a complicated configuration table that ran my whole system. I’ve slowly detached them, transformed them into Spoons, implemented the bindHotKeys API, and documented them. Now you can install them into your own configuration without adopting all of mine! 🙌

Hyper

Hyper has been drastically simplified. Realizing that it’s basically a push-to-toggle hs.hotkey.modal, I have rewritten it to overload hs.hotkey.modal with a couple additional features.

I chiefly use it to launch applications quickly from a single press, although I also use it to create “universal” local bindings inspired by Shawn Blanc’s OopsieThings.

It is by far the fastest and simplest version of the Hyper Key setup that I’ve yet used, and I’m very happy with it.

Hyper.spoon

MoveWindow

MoveWindow is the oldest lua that I’ve maintained, originally coming from my friend Tom. It’s now idempotent of the other plugins, and fully documented. You can set different hotkeys, customize the layouts and grids, and use it in conjunction with Hyper.spoon.

MoveWindow.spoon

AutoLayout

AutoLayout is the most recently abstracted, and probably the least stable. It merely maintains a stack of hs.layout tables that you can push and pop from to create modal layouts. This lets you set a default set of window layouts, move into a different mode, and return to your defaults.

I use it in Headspace.spoon to enter and leave custom layouts like the ones I have for planning vs. review.

There’s some speed issues and the hs.window.watcher needs to be refactored, but I’m happy with it at the moment.

AutoLayout.spoon

All the spoons have their own repos now, and Github Actions auto build a .zip release on each tagged release, or you can submodule them into your configuration like I’m doing here.

If you looked at my crazy configuration and wanted to give some of the functionality a try, but didn’t want to use the whole thing… there’s never been a better time to dive in. If you get stuck, shoot me a message and I’ll be happy to help.