0.9.33 - 01 Jul 2015

This is primarily a brown-bag release to fix a crashing bug that 0.9.32 introduced into hs.hints. Apologies for the regression.


  • None


  • Fixed: hs.host crash in garbage collection
  • Added: HTML entity decoding helpers to hs.http
  • Added: vmStat and cpuUsage to hs.host
  • Added: Information about system settings for keyboard repeat and mouse doubleclick

0.9.32 - 30 Jun 2015


This release of Hammerspoon may break your existing config.

In particular, please pay attention to the following items:

  • Lua has been updated to 5.3.1, so some core Lua library functions may behave slightly differently, or no longer exist. See the Lua website for the specific changes
  • Many hs.window API methods have changed their return type. They no longer report success/failure, but instead return the window object (allowing the calls to be chained)
  • hs.utf8_53 has been renamed to hs.utf8 and its API changed now that we no longer need to provide backports of Lua 5.3.x UTF8 functions

If you run into any problems, please reach out to us on GitHub or IRC!


  • Lua has been updated to 5.3.1
  • We now detect the use of older Mjolnir modules, and display a message suggesting the user update their config, iff they have had a crash
  • The text input field in the Console window will now grow/shrink vertically (use Option-Enter to add a line without submitting the Lua code, and Option-Arrows to navigate)
  • Lua header files are now included in the Hammerspoon.app bundle, if you need them to build extensions


  • Fixed: Fixed a crash bug in hs.application
  • Fixed: Fixed a crash bug in hs.http
  • Fixed: hs.eventtap is now more robust when Accessibility access is denied
  • Fixed: hs.ipc is now more robust on disk volumes with spaces in their names
  • Fixed: hs.hints objects are now correctly destroyed if init.lua is reloaded while the hints are displayed
  • Fixed: Various assertion bugs
  • Changed: Many methods in hs.window have changed their return type. They now return the window object being operated on, allowing the calls to be chained
  • Changed: hs.window animations now happen asynchronously
  • Changed: hs.utf8_53 has been renamed to hs.utf8. It was providing Lua 5.3 unicode functionality backports, and now houses generally useful unicode functions
  • Changed: hs.drawing objects can now be configured to be clickable and have a click callback function
  • Changed: hs.drawing.bringToFront() can now optionally bring drawing objects in front of the dock/menubar
  • Changed: hs.menubar objects can now have their title/icon removed
  • Changed: hs.fs.attributes() now includes file creation date (“birthtime”)
  • Added: hs.screen:shotAsPNG() and hs.screen:shotAsJPG() for taking screenshots
  • Added: hs.drawing:setFrame(), hs.drawing:setTopLeft(), hs.drawing:setSize() for moving/resizing hs.drawing objects
  • Added: hs.drawing.fontNames() and hs.drawing.fontNamesWithTraits() for inspecting system fonts
  • Added: hs.drawing.appImage() for easily rendering application icons
  • Added: hs.spaces.watcher for detecting space changes
  • Added: hs.eventtap.checkKeyboardModifiers() and hs.eventtap.checkMouseButtons() for inspecting the current state of user input
  • Added: hs.execute() for running shell commands
  • Added: hs.fnutils.every(), hs.fnutils.some(), hs.fnutils.sortByKeys(), hs.fnutils.sortByKeyValues() and hs.fsutils.split()
  • Added: hs.processInfo() for inspecting the current Hammerspoon instance
  • Added: hs.logger for easy logging to the Console window