4 puntos por GN⁺ 2026-03-15 | 1 comentarios | Compartir por WhatsApp
  • Herramienta de automatización de código abierto que permite controlar el entorno macOS con scripts Lua y actúa como un puente entre el sistema operativo y el motor de scripting
  • Expone funciones del sistema mediante diversos módulos de extensión (extensions), que pueden combinarse para automatizar tareas complejas como la gestión de ventanas o el control de entrada
  • La instalación se admite mediante Homebrew o descarga manual, y solo funciona cuando el usuario escribe directamente el archivo de configuración ~/.hammerspoon/init.lua
  • El proyecto nació como un fork de Mjolnir para ofrecer una experiencia de usuario más integrada, y busca continuamente ampliar las API del sistema y reforzar la integración entre extensiones
  • Se ha consolidado como una plataforma avanzada de automatización que permite a desarrolladores y usuarios avanzados controlar macOS con gran nivel de detalle

Resumen de Hammerspoon

  • Hammerspoon es una potente herramienta de automatización para macOS (antes OS X) que funciona como un puente entre el sistema operativo y el motor de scripting Lua
    • Los usuarios pueden controlar diversas funciones del sistema mediante scripts Lua
  • Sus funciones principales se ofrecen a través de módulos de extensión (extensions), que exponen capacidades específicas del sistema
    • Con ellos es posible realizar distintas tareas de automatización, como gestión de ventanas, control de audio y configuración de dispositivos de entrada

Cómo instalarlo

  • Instalación manual
    • Descargar la última versión desde GitHub
    • Mover Hammerspoon.app a la carpeta Applications
  • Instalación con Homebrew
    • Comando: brew install hammerspoon --cask

Configuración inicial y uso

Historia del proyecto

  • Hammerspoon comenzó como un fork del proyecto Mjolnir
    • Mjolnir apuntaba a una estructura de aplicación mínima y administraba las extensiones como paquetes externos de Lua
    • Sobre esa base, Hammerspoon se desarrolló para ofrecer una experiencia de usuario más integrada

Dirección futura del proyecto

  • Ampliar el alcance de las API del sistema
  • Reforzar la integración entre módulos de extensión
  • Mejorar la experiencia de usuario

Stack técnico y estadísticas

  • Lenguajes principales: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
  • Estadísticas en GitHub: 14.9k stars, 678 forks, 133 contribuidores
  • Licencia: MIT License
  • Sitio web oficial: www.hammerspoon.org

Etiquetas principales

  • macOS, automation, lua, objective-c, osx, mjolnir, hammerspoon, irc

1 comentarios

 
GN⁺ 2026-03-15
Comentarios de Hacker News
  • Hammerspoon es como el pegamento que mantiene unida toda mi Mac
    Vuelca pestañas de Safari en documentos de Obsidian, o abre apps clave como Safari, Finder, Terminal, VS Code y Notes en ventanas nuevas con la combinación de tecla Hyper (Ctrl+Opt+Cmd)
    También tiene varias automatizaciones configuradas junto con AeroSpace, como mover ventanas a otro monitor, poner dos ventanas lado a lado, intercambiarlas o reunir todas las ventanas en un solo workspace
    Además, reinicia automáticamente apps en segundo plano si se cierran, y muestra un aviso para desmontar imágenes de disco cuando se envían a la papelera
    También tiene una función que se integra con Skim para saltar a una sección específica de un PDF mediante un enlace de Markdown

    • Yo solo lo uso para dos cosas: revisar la lista de ventanas de Teams y, si estoy en una reunión, enviar un webhook a HomeAssistant para cambiar el preset de iluminación; además descarga el calendario de ical y, si hay una reunión en los próximos 15 minutos, cambia al preset “pending”
      Antes usaba un enlace compartido de Outlook, pero empezó a requerir autenticación, así que ahora paso por Apple Calendar. Aun así, sigue siendo un misterio por qué solo se sincroniza el 40% de los eventos
    • Me da curiosidad cómo vuelcas las pestañas de Safari a Obsidian. Quisiera saber si es una función simple o si hay algún script que valga la pena compartir
    • Qué impresionante ‘spooning’. Yo solo lo uso para administrar ventanas, pero aun así ha hecho que macOS sea mucho más usable
    • Me pregunto si podrías compartir tu archivo de configuración
    • Gracias a los ejemplos, a mí también ya se me ocurrieron ideas de cómo usarlo
  • Antes me gustaban los tiling window manager, pero en Mac uso muchas apps visualmente complejas, así que la distribución de la pantalla se volvió más importante
    Creo presets de tamaño de ventana para correo, IDE, navegador, terminal y app de chat, y cambio entre ellos con atajos de Hammerspoon
    Aunque el IDE esté compilando, puedo abrir el navegador y seguir viendo el log de abajo, y con atajos modales también cambio rápido entre apps
    El concepto de modos en varias etapas me parece interesante

  • Como maintainer de Hammerspoon, actualmente estoy desarrollando la v2, que cambiará de Lua a JavaScript

    • Me gusta Lua, así que Hammerspoon era prácticamente la única razón por la que seguía usándolo; me dará pena que cambie a JS, pero creo que es una decisión realista
    • Como usuario de hace mucho tiempo, me da curiosidad el motivo del cambio desde Lua, pero de cualquier forma gracias por una app tan excelente
    • Expresa en tono de broma su expectativa con un “¿sale en 18 días?”
    • Me interesa la visión de la v2, por qué cambia la arquitectura y el trasfondo de haber elegido JS
    • También me pregunto si podría haber sinergia con el soporte de JavaScript en AppleScript
  • Mi proyecto Spacehammer es un toolkit modal para Hammerspoon inspirado en Spacemacs/Doom
    Puedes abrir el navegador con “alt+spc a b”, ajustar el volumen con “alt+spc m j/k”, o editar en Emacs texto de cualquier app
    Está escrito en Fennel, permite desarrollo en tiempo real mediante REPL y también se integra bien con administradores de ventanas como Yabai

    • Hace la broma de “pero si ya tienes teclas para subir y bajar el volumen…”. Aunque entiende a quienes usan una Touch Bar Mac
  • Yo implementé con Hammerspoon un tiling window manager falso
    Reacomoda ventanas según proporciones de pantalla y también permite moverlas entre monitores con atajos

    • Recomienda AeroSpace. Funciona muy bien de una manera familiar para usuarios de i3
    • Yo también lo uso de forma parecida, pero además agregué posiciones izquierda, centro y derecha. Calcular el tamaño de las ventanas con matemáticas es raro pero genial
    • Uso hammerspoon-shiftit. Es un proyecto que recrea perfectamente el desaparecido ShiftIt
    • Yo también muevo ventanas con hyper+flechas y cambio a pantalla completa con hyper+enter. Me gusta la sensación natural al mover ventanas
    • Me gusta el plugin miro-windows-manager. Va muy bien para ir rotando entre disposiciones de media pantalla y en tercios
  • Hace poco probé Hammerspoon por primera vez y ChatGPT me escribió un script en AppleScript para asignar directamente atajos de teclado a opciones de una app de la barra de menú
    Está buenísimo, y pienso probar más automatizaciones en el futuro

  • Creé un script para ocultar los controles de compartir pantalla de Zoom, de modo que no vuelvan a aparecer aunque presiones ESC

    • Recibió la reacción de “solo por esto ya vale la pena instalarlo”
  • Toda mi configuración es una sola línea
    Con ctrl + D abro una interfaz de cuadrícula para ajustar ventanas a la posición que quiera
    Es más simple e intuitivo que otros administradores de ventanas

    • Se sorprende diciendo “no sabía que existía esta función”. También puedes cambiar el tamaño de la cuadrícula con hs.grid.setGrid('4x4') o ajustar el tamaño del texto con hs.grid.ui.textSize
    • Yo uso algo parecido, pero lo configuré con más flexibilidad, por ejemplo para redimensionar solo desde un lado
    • Sincronizar la configuración entre varios dispositivos puede convertirse en un infierno de dotfiles. Aun así, es una de las pocas herramientas modernas que te permiten controlar ventanas sin usar el mouse
    • Me pregunto si no entra en conflicto con Ctrl+D en la terminal
  • Gracias a Hammerspoon, yo también me liberé del estrés de cambiar entre ventanas
    Cambio entre ventanas de Chrome con Cmd+1~9 y abro un diálogo de selección con Cmd+0
    Si revisas mi archivo de configuración, recuerda los nombres de las ventanas y los conserva incluso después de reiniciar

  • Hammerspoon es más potente que Automator en Mac
    Así como Automator ahora soporta JavaScriptCore, si Hammerspoon también usara JS en lugar de Lua, podría aprovechar directamente paquetes de Node
    Si hubiera que reescribirlos otra vez en Lua, sería bastante pesado