All the APIs!
Learn about every API that Hammerspoon offers, and get inspired.
Next ChapterIn this final chapter, I’ll list every single Hammerspoon API along with some ideas of what you could use it for. You can combine any of these APIs for even more powerful scripts.
hs #
Core Hammerspoon functionality
hs.alert #
Simple on-screen alerts
hs.appfinder #
Easily find hs.application and hs.window objects
hs.applescript #
Execute AppleScript code
hs.application #
Manipulate running applications
hs.application.watcher #
Watch for application launch/terminate events
hs.audiodevice #
Manipulate the system’s audio devices
hs.audiodevice.datasource #
Inspect/manipulate the data sources of an audio device
hs.audiodevice.watcher #
Watch for system level audio hardware events
hs.axuielement #
This module allows you to access the accessibility objects of running applications, their windows, menus, and other user interface elements that support the OS X accessibility API.
hs.axuielement.axtextmarker #
This submodule allows hs.axuielement to support using AXTextMarker and AXTextMarkerRange objects as parameters for parameterized Accessibility attributes with applications that support them.
hs.axuielement.observer #
This submodule allows you to create observers for accessibility elements and be notified when they trigger notifications. Not all notifications are supported by all elements and not all elements support notifications, so some trial and error will be necessary, but for compliant applications, this can allow your code to be notified when an application’s user interface changes in some way.
hs.base64 #
Base64 encoding and decoding
hs.battery #
Battery/power information
hs.battery.watcher #
Watch for battery/power state changes
hs.bonjour #
Find and publish network services advertised by multicast DNS (Bonjour) with Hammerspoon.
hs.bonjour.service #
Represents the service records that are discovered or published by the hs.bonjour module.
hs.brightness #
Inspect/manipulate display brightness
hs.caffeinate #
Control system power states (sleeping, preventing sleep, screen locking, etc)
hs.caffeinate.watcher #
Watch for display and system sleep/wake/power events
hs.canvas #
A different approach to drawing in Hammerspoon
hs.canvas.matrix #
A sub module to hs.canvas which provides support for basic matrix manipulations which can be used as the values for transformation attributes in the hs.canvas module.
hs.chooser #
Graphical, interactive tool for choosing/searching data
hs.console #
Some functions for manipulating the Hammerspoon console.
hs.crash #
Various features/facilities for developers who are working on Hammerspoon itself, or writing extensions for it. It is extremely unlikely that you should need any part of this extension, in a normal user configuration.
hs.deezer #
Controls for Deezer music player.
hs.dialog #
A collection of useful dialog boxes, alerts and panels for user interaction.
hs.dialog.color #
A panel that allows users to select a color.
hs.distributednotifications #
Interact with NSDistributedNotificationCenter
hs.doc #
Create documentation objects for interactive help within Hammerspoon
hs.doc.builder #
Builds documentation support files. Still experimental.
hs.doc.hsdocs #
Manage the internal documentation web server.
hs.doc.markdown #
Markdown to HTML and plaintext conversion support used by hs.doc
hs.dockicon #
Control Hammerspoon’s dock icon
hs.drawing #
DEPRECATED. Primitives for drawing on the screen in various ways.
hs.drawing.color #
Provides ccess to the system color lists and a wider variety of ways to represent color within Hammerspoon.
hs.eventtap #
Tap into input events (mouse, keyboard, trackpad) for observation and possibly overriding them
hs.eventtap.event #
Create, modify and inspect events for hs.eventtap
hs.expose #
Keyboard-driven expose replacement/enhancement
hs.fnutils #
Functional programming utility functions
hs.fs #
Access/inspect the filesystem
hs.fs.volume #
Interact with OS X filesystem volumes
hs.fs.xattr #
Get and manipulate extended attributes for files and directories
hs.geometry #
Utility object to represent points, sizes and rects in a bidimensional plane
hs.grid #
Move/resize windows within a grid
hs.hash #
Various hashing algorithms
hs.hid #
HID interface for Hammerspoon, controls and queries caps lock state
hs.hid.led #
HID LED interface for Hammerspoon, controls the state of keyboard LEDs
hs.hints #
Switch focus with a transient per-application keyboard shortcut
hs.host #
Inspect information about the machine Hammerspoon is running on
hs.host.locale #
Retrieve information about the user’s Language and Region settings.
hs.hotkey #
Create and manage global keyboard shortcuts
hs.hotkey.modal #
Create/manage modal keyboard shortcut environments
hs.http #
Perform HTTP requests
hs.httpserver #
Simple HTTP server
hs.httpserver.hsminweb #
Minimalist Web Server for Hammerspoon
hs.httpserver.hsminweb.cgilua #
Provides support functions in the cgilua module for Hammerspoon Minimal Web Server Lua templates.
hs.httpserver.hsminweb.cgilua.lp #
Support functions for the CGILua compatibility module for including and translating Lua template pages into Lua code for execution within the Hammerspoon environment to provide dynamic content for http requests.
hs.httpserver.hsminweb.cgilua.urlcode #
Support functions for the CGILua compatibility module for encoding and decoding URL components in accordance with RFC 3986.
hs.image #
A module for capturing and manipulating image objects from other modules for use with hs.drawing.
hs.inspect #
Produce human-readable representations of Lua variables (particularly tables)
hs.ipc #
Provides Hammerspoon with the ability to create both local and remote message ports for inter-process communication.
hs.itunes #
Controls for iTunes music player
hs.javascript #
Execute JavaScript code
hs.json #
JSON encoding and decoding
hs.keycodes #
Convert between key-strings and key-codes. Also provides functionality for querying and changing keyboard layouts.
hs.layout #
Window layout manager
hs.location #
Determine the machine’s location and useful information about that location
hs.location.geocoder #
Converts between GPS coordinates and more user friendly representations like an address or points of interest.
hs.logger #
Simple logger for debugging purposes
hs.math #
Various helpful mathematical functions
hs.messages #
Send messages via iMessage and SMS Relay (note, SMS Relay requires OS X 10.10 and an established SMS Relay pairing between your Mac and an iPhone running iOS8)
hs.midi #
MIDI Extension for Hammerspoon.
hs.milight #
Simple controls for the MiLight LED WiFi bridge (also known as LimitlessLED and EasyBulb)
hs.mjomatic #
tmuxomatic-like window management
hs.mouse #
Inspect/manipulate the position of the mouse pointer
hs.network #
This module provides functions for inquiring about and monitoring changes to the network.
hs.network.configuration #
This sub-module provides access to the current location set configuration settings in the system’s dynamic store.
hs.network.host #
This sub-module provides functions for acquiring host information, such as hostnames, addresses, and reachability.
hs.network.ping #
This module provides a basic ping function which can test host availability. Ping is a network diagnostic tool commonly found in most operating systems which can be used to test if a route to a specified host exists and if that host is responding to network traffic.
hs.network.ping.echoRequest #
Provides lower-level access to the ICMP Echo Request infrastructure used by the hs.network.ping module. In general, you should not need to use this module directly unless you have specific requirements not met by the hs.network.ping module and the hs.network.ping object methods.
hs.network.reachability #
This sub-module can be used to determine the reachability of a target host. A remote host is considered reachable when a data packet, sent by an application into the network stack, can leave the local device. Reachability does not guarantee that the data packet will actually be received by the host.
hs.noises #
Contains two low latency audio recognizers for different mouth noises, which can be used to trigger actions like scrolling or clicking.
hs.notify #
This module allows you to create on screen notifications in the User Notification Center located at the right of the users screen.
hs.osascript #
Execute Open Scripting Architecture (OSA) code - AppleScript and JavaScript
hs.pasteboard #
Inspect/manipulate pasteboards (more commonly called clipboards). Both the system default pasteboard and custom named pasteboards can be interacted with.
hs.pasteboard.watcher #
Watch for Pasteboard Changes.
hs.pathwatcher #
Watch paths recursively for changes
hs.plist #
Read and write Property List files
hs.redshift #
Inverts and/or lowers the color temperature of the screen(s) on a schedule, for a more pleasant experience at night
hs.screen #
Manipulate screens (i.e. monitors)
hs.screen.watcher #
Watch for screen layout changes
hs.serial #
Communicate with external devices through a serial port (most commonly RS-232).
hs.settings #
Serialize simple Lua variables across Hammerspoon launches
hs.sharing #
Share items with the macOS Sharing Services under the control of Hammerspoon.
hs.socket #
Talk to custom protocols using asynchronous TCP sockets
hs.socket.udp #
Talk to custom protocols using asynchronous UDP sockets
hs.sound #
Load/play/manipulate sound files
hs.spaces #
Controls for macOS Spaces. Currenly only used by hs.spaces.watcher.
hs.spaces.watcher #
Watches for the current Space being changed
hs.speech #
This module provides access to the Speech Synthesizer component of OS X.
hs.speech.listener #
This module provides access to the Speech Recognizer component of OS X.
hs.spoons #
Utility and management functions for Spoons
hs.spotify #
Controls for Spotify music player
hs.spotlight #
This module allows Hammerspoon to preform Spotlight metadata queries.
hs.spotlight.group #
This sub-module is used to access results to a spotlightObject query which have been grouped by one or more attribute values.
hs.spotlight.item #
This sub-module is used to access the individual results of a spotlightObject or a spotlightGroupObject.
hs.sqlite3 #
Interact with SQLite databases
hs.streamdeck #
Configure/control an Elgato Stream Deck
hs.styledtext #
This module adds support for controlling the style of the text in Hammerspoon.
hs.tabs #
Place the windows of an application into tabs drawn on its titlebar
hs.tangent #
Tangent Control Surface Extension
hs.task #
Execute processes in the background and capture their output
hs.timer #
Execute functions with various timing rules
hs.timer.delayed #
Specialized timer objects to coalesce processing of unpredictable asynchronous events into a single callback
hs.uielement #
A generalized framework for working with OSX UI elements
hs.uielement.watcher #
Watch for events on certain UI elements (including windows and applications)
hs.urlevent #
Allows Hammerspoon to respond to URLs
hs.usb #
Inspect USB devices
hs.usb.watcher #
Watch for USB device connection/disconnection events
hs.utf8 #
Functions providing basic support for UTF-8 encodings
hs.vox #
Controls for VOX music player
hs.watchable #
A minimalistic Key-Value-Observer framework for Lua.
hs.websocket #
Simple websocket client.
hs.webview #
Display web content in a window from Hammerspoon
hs.webview.datastore #
Provides methods to list and purge the various types of data used by websites visited with hs.webview.
hs.webview.toolbar #
Create and manipulate toolbars which can be attached to the Hammerspoon console or hs.webview objects.
hs.webview.usercontent #
This module provides support for injecting custom JavaScript user content into your webviews and for JavaScript to post messages back to Hammerspoon.
hs.wifi #
Inspect WiFi networks
hs.wifi.watcher #
Watch for changes to the associated wifi network
hs.window #
Inspect/manipulate windows
hs.window.filter #
Filter windows by application, title, location on screen and more, and easily subscribe to events on these windows
hs.window.highlight #
Highlight the focused window
hs.window.layout #
WARNING: EXPERIMENTAL MODULE. DO NOT USE IN PRODUCTION.
hs.window.switcher #
Window-based cmd-tab replacement
hs.window.tiling #
WARNING: EXPERIMENTAL MODULE. DO NOT USE IN PRODUCTION.