Skip to content

Hammerspoon

Dennis Lee edited this page May 27, 2026 · 1 revision

title: Hammerspoon radar_quadrant: Tools radar_ring: Assess radar_position: inner created: 2026-05-22 last_updated: 2026-05-22 related: ["MacOSCLIDistribution"]

Hammerspoon

Hammerspoon is a macOS automation tool that exposes system APIs to Lua scripts, enabling programmatic control of windows, applications, hotkeys, network events, the clipboard, and USB devices. It replaces a combination of paid tools (Moom, Keyboard Maestro, BetterTouchTool) with free, version-controlled Lua scripts.

Key Capabilities

  • Window management: Move, resize, tile, and snap windows to grid positions; create custom layouts triggered by hotkeys or display change events
  • Application control: Watch for app launch and quit events; auto-configure window layouts when specific apps open
  • Global hotkeys: Bind any key combination system-wide, including hyper-key setups (Caps Lock remapped to Ctrl+Cmd+Alt+Shift)
  • Network events: Run scripts when joining or leaving specific WiFi networks (e.g. auto-connect VPN on public networks)
  • Clipboard: Watch clipboard changes and transform content programmatically
  • USB events: Trigger scripts when devices connect or disconnect
  • Menubar and alerts: Custom menubar items and on-screen notifications

Configuration

Hammerspoon configuration lives in ~/.hammerspoon/init.lua and can be version-controlled in a dotfiles repository. Most common automation scripts are 5-30 lines of Lua.

Radar Assessment

Hammerspoon sits at Tools → Assess inner. It is free, open-source, and actively maintained (17,000+ stars). For any macOS power user with repetitive window management or app-switching tasks, it provides capabilities unavailable through native macOS tools without paid software. Inner position reflects minimal installation friction (one brew install --cask hammerspoon command), a well-documented API, and version-controllable configuration. The remaining gate before Trial is a completed dotfile-managed Hammerspoon config that replaces at least one recurring manual macOS workflow.

Clone this wiki locally