- 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
- Justo después de instalarlo no hace nada por sí solo; el usuario debe crear manualmente el archivo
~/.hammerspoon/init.lua
- Recursos de referencia:
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
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
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
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
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
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
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
Toda mi configuración es una sola línea
Con
ctrl + Dabro una interfaz de cuadrícula para ajustar ventanas a la posición que quieraEs más simple e intuitivo que otros administradores de ventanas
hs.grid.setGrid('4x4')o ajustar el tamaño del texto conhs.grid.ui.textSizeCtrl+Den la terminalGracias 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