Hammerspoon: Automatiza macOS con Lua – una herramienta poderosa de código abierto

Hammerspoon: Herramienta de automatización de macOS basada en Lua

Los usuarios de macOS suelen encontrar que repiten las mismas acciones de arrastrar y soltar o clics en menús cada día. Ya sea que seas un desarrollador, diseñador o simplemente un usuario avanzado, automatizar esos hábitos puede ahorrar horas de trabajo. Ahí es donde entra Hammerspoon: una aplicación ligera de código abierto que expone la API de macOS al lenguaje de scripting Lua. Con Hammerspoon puedes:

  • Crear combinaciones de teclas para lanzar aplicaciones, organizar ventanas o controlar medios.
  • Automatizar el historial del portapapeles, las notificaciones o la gestión de archivos.
  • Extender el sistema operativo con módulos personalizados escritos en Objective‑C o Swift.
  • Conectarte a eventos de hardware (p. ej., Bluetooth, LEDs del teclado, botones del Stream Deck).
  • Integrarte con servicios externos (Dropbox, GitHub, etc.) mediante bibliotecas HTTP de Lua.

Empezando

1. Instalar Hammerspoon

# Usando Homebrew Cask
brew install --cask hammerspoon

Alternativamente, descarga la versión más reciente desde la página de lanzamientos de GitHub y arrastra el archivo Hammerspoon.app a Aplicaciones.

2. Configurar tu primer script

Al iniciar por primera vez, Hammerspoon crea un directorio ~/.hammerspoon/. Dentro, coloca un archivo llamado init.lua – este es el archivo de configuración principal.

-- ~/.hammerspoon/init.lua
hs.loadSpoon("Window")

-- Ejemplo: Alternar la ventana de Finder con Cmd‑Shift‑F
hs.hotkey.bind({"cmd", "shift"}, "F", function()
  local f = hs.application.get("Finder")
  if f then
    f:activate()
    f:hide()
  else
    hs.osascript.applescript('tell application "Finder" to activate')
  end
end)

Guarda el archivo y pulsa Cmd‑Alt‑F (la combinación predeterminada para recargar). Tu asignación de teclas personalizada debería funcionar ahora.

Extender con Hooks y Módulos

Hammerspoon incluye una biblioteca de "extensiones" que exponen diversos servicios de macOS: hs.window, hs.pathmonitor, hs.audiodevice, etc. Otras extensiones se pueden encontrar en su repositorio dedicado de extensiones o escribirse directamente en C/Objective‑C y compilarse en tu build de Hammerspoon.

-- Ejemplo: Establecer una distribución dinámica de ventanas
hs.hotkey.bind({"cmd", "shift"}, "W", function()
  local win = hs.window.focusedWindow()
  if win then win:move({x=0, y=0, w=0.5, h=1}) end
end)

También puedes usar bibliotecas Lua de terceros mediante gestores de paquetes estándar (luarocks). El módulo hs.http de Hammerspoon resulta útil para crear webhooks simples.

Comunidad y Recursos

  • Documentación – La oficial Guía de inicio rápido y Documentación API son indispensables.
  • Ejemplos – Navega y copia configuraciones de muestra init.lua desde el directorio samples/ del repositorio.
  • Soporte – Únete al canal IRC #hammerspoon en Libera o al Grupo de Google.
  • Contribuir – Haz un fork del repositorio, ejecuta make test en la raíz y envía pull requests. El proyecto utiliza una pipeline estricta de linting/CI.

Consejos para Usuarios Avanzados

  1. Recarga eficiente – Pulsa Cmd‑Option‑F para recargar tu configuración sin reiniciar la aplicación.
  2. Usar Spoonhs.loadSpoon("<nombre>") carga librerías de terceros como Window o Desktop.
  3. Depurar con Consolahs.debug.disable() puede ocultar la salida de depuración, o utiliza sentencias print para rastrear la lógica.
  4. Automatizar al iniciar sesión – Añade el archivo ~/.hammerspoon/init.lua a tus elementos de inicio para que los scripts se ejecuten al arrancar.
  5. Crear módulos reutilizables – Coloca módulos Lua en ~/.hammerspoon/modules/ y usa require("modulo") desde init.lua.

Próximos Pasos

  • Construye tu propia caja de herramientas de automatización: agrega un controlador de medios personalizado, crea un gestor de mosaico de ventanas o automatiza tu flujo de trabajo de codificación.
  • Experimenta con la integración de Stream Deck o la barra táctil usando las extensiones de Hammerspoon.
  • Explora la Wiki de Extensiones de Hammerspoon para funciones avanzadas.

Al combinar la simplicidad de Lua con la profundidad de las API de macOS, Hammerspoon te permite programar tu escritorio en un entorno a medida y receptivo. Sumérgete, comienza a programar y observa cómo tu productividad dispara.

Artículo original: Ver original

Compartir este artículo