Hammerspoon en Mac: qué es y 5 automatizaciones para empezar
Hammerspoon es una herramienta gratuita que conecta Lua con las APIs internas de macOS. Aprende a instalarla con Homebrew y a montar cinco automatizaciones reales.
Llevas meses moviendo ventanas con el ratón, pegando texto con formato donde no toca y bloqueando el Mac a mano cada vez que te levantas. Todo eso se puede resolver con unas veinte líneas de Lua. Hammerspoon en Mac es eso: un puente entre el sistema operativo y un motor de scripts Lua que te deja controlar ventanas, wifi, batería, portapapeles o teclas con código propio. Es gratuito, de código abierto y, a fecha de julio de 2026, va por la versión 1.1.1 (publicada en febrero de 2026), compatible con macOS 13 Ventura en adelante, incluido macOS 26 Tahoe.
Qué es Hammerspoon exactamente
Según su propia documentación oficial, Hammerspoon es «un puente entre el sistema operativo y un motor de scripting Lua». En la práctica es una app que vive en la barra de menús, carga un fichero de configuración (~/.hammerspoon/init.lua) y expone las APIs internas de macOS como módulos Lua: hs.window para ventanas, hs.wifi para la red, hs.battery para la batería, hs.hotkey para atajos de teclado, hs.pasteboard para el portapapeles y decenas más.
El proyecto nació como sucesor de Mjolnir y acumula más de 15.000 estrellas en su repositorio de GitHub. A diferencia de la app Atajos de Apple —que cubrimos en la guía de automatización con Atajos—, aquí no hay bloques visuales: escribes código. Eso le da un techo muchísimo más alto, y también una curva de aprendizaje que conviene conocer antes de instalar nada.
Cómo instalar Hammerspoon en Mac con Homebrew
La forma más limpia de instalarlo es con Homebrew. Si aún no lo tienes, en la guía de Terminal y Homebrew en macOS tienes el proceso completo. Con Homebrew listo, un solo comando:
brew install --cask hammerspoon
Al abrirlo por primera vez pasan dos cosas importantes:
- Hammerspoon te pide el permiso de Accesibilidad (Ajustes del Sistema → Privacidad y seguridad → Accesibilidad). Sin él no puede mover ventanas ni simular teclas, que es justo lo que quieres que haga.
- Crea la carpeta
~/.hammerspoon/con uninit.luavacío. Todo lo que escribas ahí se ejecuta al arrancar la app o al recargar la configuración desde su icono en la barra de menús.
Consejo de arranque: añade estas dos líneas al principio del fichero. Te dan una recarga rápida con ⌃⌥⌘R y un aviso visual cada vez que la config se carga bien:
hs.hotkey.bind({"ctrl", "alt", "cmd"}, "R", function()
hs.reload()
end)
hs.alert.show("Configuración cargada")
5 ejemplos de Hammerspoon comentados
Cada ejemplo es independiente: copia el bloque que te interese en tu init.lua y recarga.
1. Mover ventanas a medias pantallas con el teclado
macOS 26 ya trae gestión de ventanas básica (lo vimos en cómo organizar ventanas en macOS), pero con Hammerspoon defines tus propios atajos y proporciones. Esto manda la ventana activa a la mitad izquierda con ⌃⌥⌘←:
hs.hotkey.bind({"ctrl", "alt", "cmd"}, "Left", function()
local win = hs.window.focusedWindow()
local f = win:frame()
local max = win:screen():frame()
f.x = max.x
f.y = max.y
f.w = max.w / 2
f.h = max.h
win:setFrame(f)
end)
Para la mitad derecha, duplica el bloque cambiando "Left" por "Right" y f.x = max.x por f.x = max.x + (max.w / 2). Mismo patrón para tercios o para mandar la ventana al otro monitor con win:moveToScreen().
2. Bloquear el Mac al desconectarte del wifi de casa
Un vigilante de red: cuando el portátil pierde tu SSID (te levantas y te lo llevas, o sale de cobertura), la pantalla se bloquea sola.
local ssidCasa = "MiCasa-5G"
local vigilante = hs.wifi.watcher.new(function()
if hs.wifi.currentNetwork() ~= ssidCasa then
hs.caffeinate.lockScreen()
end
end)
vigilante:start()
Cambia "MiCasa-5G" por el nombre de tu red (lo ves con ⌥ clic en el icono wifi). Si prefieres que se bloquee al perder cualquier red, compara contra nil.
3. Alerta de batería baja que no depende de macOS
El aviso nativo de batería llega cuando llega. Este vigilante salta exactamente al 20 % si no estás cargando:
hs.battery.watcher.new(function()
local carga = hs.battery.percentage()
if not hs.battery.isCharging() and carga <= 20 then
hs.alert.show("Batería al " .. carga .. " %: enchufa el cargador", 5)
end
end):start()
4. Una hipertecla para lanzar apps
La «hipertecla» convierte Bloq Mayús —una tecla que casi nadie usa— en un modificador global para lanzar aplicaciones sin colisionar con ningún atajo existente. Hay dos pasos:
- Con Karabiner-Elements (gratuito), reasigna Bloq Mayús a la tecla F18, que ninguna app utiliza.
- En Hammerspoon, usa F18 como disparador de un modo modal:
local hiper = hs.hotkey.modal.new()
hs.hotkey.bind({}, "F18",
function() hiper:enter() end,
function() hiper:exit() end)
hiper:bind({}, "T", function()
hs.application.launchOrFocus("Terminal")
hiper:exit()
end)
hiper:bind({}, "S", function()
hs.application.launchOrFocus("Safari")
hiper:exit()
end)
Resultado: mantienes Bloq Mayús y pulsas T para el terminal, S para Safari, y así con tantas apps como quieras. Es el truco que más engancha una vez lo pruebas.
5. Pegar siempre sin formato con ⇧⌘V
Copiar de una web y pegar estilos heredados en un documento es un clásico. Este atajo reemplaza el portapapeles por su versión en texto plano y pega:
hs.hotkey.bind({"cmd", "shift"}, "V", function()
local texto = hs.pasteboard.getContents()
if texto then
hs.pasteboard.setContents(texto)
hs.eventtap.keyStroke({"cmd"}, "V")
end
end)
Funciona en cualquier aplicación, sin extensiones de navegador ni utilidades de pago.
Lo que debes saber antes: curva de aprendizaje y permisos
Siendo honestos, Hammerspoon no es para todo el mundo:
- Hay que programar. Lua es un lenguaje sencillo, pero si nunca has escrito código, la app Atajos o las acciones rápidas del Finder resolverán el 80 % de tus necesidades con cero código.
- Los permisos son amplios. El de Accesibilidad da control total sobre la interfaz; algunos módulos (capturas,
hs.screen) piden además Grabación de pantalla. Es software auditado y open source, pero concede esos permisos sabiendo lo que implican. - Un error en el config puede dejar la automatización muda. Por suerte, la consola de Hammerspoon (icono de barra de menús → Console) muestra los errores de Lua con línea exacta, y recargar es instantáneo.
- No sustituye a copias de seguridad. Tu
init.luaes texto plano: mételo en tu flujo de copias con Time Machine o en un repositorio git y lo tendrás a salvo entre Macs.
Preguntas frecuentes
¿Hammerspoon es gratis? Sí. Es software libre publicado en GitHub, sin compras integradas ni versión «pro». Se instala gratis desde hammerspoon.org o con brew install --cask hammerspoon.
¿Hammerspoon funciona en macOS 26 Tahoe y Apple Silicon? Sí. La versión 1.1.1 (febrero de 2026) requiere macOS 13 o posterior y funciona de forma nativa en Macs con chips Apple, además de en Intel.
¿Hace falta saber programar para usar Hammerspoon? Hace falta sentirse cómodo editando código, aunque sea copiando ejemplos. Lua es de los lenguajes más fáciles de leer, y la comunidad publica configuraciones completas (los llamados Spoons) listas para adaptar.
¿Qué diferencia hay entre Hammerspoon y la app Atajos de macOS? Atajos es visual, oficial y suficiente para tareas con archivos, imágenes o apps; Hammerspoon es código y llega donde Atajos no puede: vigilantes de red o batería, rejillas de ventanas personalizadas, modos de teclado o control del portapapeles a bajo nivel.
Si ya dominas los atajos de teclado esenciales de macOS y buscas el siguiente nivel, Hammerspoon es probablemente la herramienta con mejor relación esfuerzo-resultado del ecosistema Mac: una tarde de configuración y años de pequeñas fricciones eliminadas.