GridTile Hammerspoon Spoon (ujwalnk/GridTile) — a Tactile-inspired macOS window tiler — has a key binding accumulation bug: obj.gridMode:bind() is called inside start() on every activation, so modal bindings pile up and are never cleaned. Also has a duplicate 'I' in the default letters table (missing a cell), requires Karabiner-Elements unnecessarily (Hammerspoon can bind hotkeys directly), and only works on the primary monitor (uses hs.screen.mainScreen() instead of the focused window's screen).
Build your own Spoon (~200 lines). Recreate the hs.hotkey.modal on each start() invocation to avoid binding leaks. Use win:screen() from hs.window.focusedWindow() for multi-monitor support. Bind your trigger hotkey directly via hs.hotkey.bind() — no Karabiner needed. Externalize grid config (columnWeights, rowWeights, letters) to a :configure() method called from the user's init.lua rather than hardcoding in the Spoon. Add visual highlight on first cell selection via canvas:appendElements() for spatial feedback.