Hammerspoon free download for Mac


09 October 2019

Powerful automation tool using the Lua scripting engine.


Hammerspoon is a tool for powerful automation of OS X. At its core, it is just a bridge between the operating system and a Lua scripting engine. What gives Hammerspoon its power is a set of extensions that expose specific pieces of system functionality, to the user.

This is very hard to describe succinctly. You can write Lua code that interacts with OS X APIs for applications, windows, mouse pointers, filesystem objects, audio devices, batteries, screens, low-level keyboard/mouse events, clipboards, location services, wifi, and more.

Typically you would write a configuration file in Lua that connects events to actions. You might want to bind a keyboard shortcut to a series of window operations, or an applescript. You might want to run a series of commands when your wifi interface connects to your home network. You might want to display an alert when your battery drops below a certain percentage. You might want to do something crazy like have iTunes automatically start playing when your Mac detects you are in Paris.

If you want to explore the options Hammerspoon offers, check out the Getting Started Guide and the full API documentation.

What's new in Hammerspoon

Version 0.9.76:
  • The minimum supported version of macOS is now 10.12.
  • Hammerspoon is now Notarized to satisfy macOS Catalina requirements. Please report any issues you run into.
  • Removed: hs.drawing has been removed. Its API remains available via an emulation layer built on hs.canvas
  • Fixed: A potential crash in js.json is now guarded against
  • Fixed: A potential crash in hs.application:getMenus() is now guarded against
  • Fixed: hs.http POST calls now work better with raw binary data
  • Added: hs.hid.led
  • Added: hs.bonjour
  • Added: hs.window:isMaximizable()
  • Added: hs.eventtap.event:getUnicodeString()/setUnicodeString()
  • Added: hs.screen:getUUID()
  • Added: hs.fs.pathToBookmark()
  • Added: hs.webview.toolbar.uniqueName()
  • Added: hs.webview:isVisible()
  • Added: hs.mouse.count() and hs.mouse.names()
  • Added: hs.host.locale.localizedString()
  • Added: hs.microphoneState() and hs.cameraState()
  • Added: hs.json.read() and hs.json.write()
  • Changed: hs.chooser’s UI has been updated and should now correctly return input focus to the previous app when it is dismissed
  • Changed: hs.caffeinate.lockScreen() has been replaced with a new implementation that works more correctly. The old implementation is now available as hs.caffeinate.fastUserSwitch()
  • Changed: hs.screen.find() can now search for screens by UUID
  • Changed: hs.fs.getPathFromBookmark() is now hs.fs.pathFromBookmark()
  • Changed: hs.eventtap.event.newMouseEvent() now accepts mouseMoved events
  • Changed: hs.updateAvailable() now also returns the build number of an available version

Join over 500,000 subscribers.

Subscribe for our newsletter with best Mac offers from MacUpdate.

0 Hammerspoon Reviews

Rate this app: