- Ferramenta de automação open source que permite controlar o ambiente macOS com scripts em Lua, atuando como uma ponte entre o sistema operacional e o mecanismo de scripting
- Expõe funções do sistema por meio de diversos módulos de extensão (extensions) e, ao combiná-los, permite automatizar tarefas complexas como gerenciamento de janelas e controle de entrada
- A instalação é compatível com Homebrew ou download manual, e só funciona após o usuário criar diretamente o arquivo de configuração
~/.hammerspoon/init.lua
- O projeto foi derivado do Mjolnir para oferecer uma experiência de usuário mais integrada, com foco contínuo em expandir as APIs do sistema e fortalecer a integração entre extensões
- Consolidou-se como uma plataforma avançada de automação para desenvolvedores e power users que querem controlar o macOS com precisão
Visão geral do Hammerspoon
- Hammerspoon é uma poderosa ferramenta de automação para macOS (antigo OS X), funcionando como uma ponte entre o sistema operacional e o mecanismo de scripting Lua
- Os usuários podem controlar vários recursos do sistema por meio de scripts em Lua
- Os recursos principais são fornecidos por módulos de extensão (extensions), que expõem funcionalidades específicas do sistema
- Com isso, é possível realizar diversas tarefas de automação, como gerenciamento de janelas, controle de áudio e configuração de dispositivos de entrada
Como instalar
- Instalação manual
- Instalação via Homebrew
- Comando:
brew install hammerspoon --cask
Configuração inicial e uso
- Logo após a instalação, nada acontece por padrão; o usuário precisa criar manualmente o arquivo
~/.hammerspoon/init.lua
- Recursos de referência:
História do projeto
- Hammerspoon começou como um fork do projeto Mjolnir
- O Mjolnir priorizava uma estrutura de aplicação mínima e gerenciava extensões como pacotes Lua externos
- O Hammerspoon foi desenvolvido com base nisso para oferecer uma experiência de usuário mais integrada
Direção futura do projeto
- Ampliação do escopo das APIs do sistema
- Fortalecimento da integração entre módulos de extensão
- Melhoria da experiência do usuário
Composição técnica e estatísticas
- Principais linguagens: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
- Estatísticas no GitHub: 14.9k stars, 678 forks, 133 contribuidores
- Licença: MIT License
- Site oficial: www.hammerspoon.org
Principais tags do tema
- macOS, automation, lua, objective-c, osx, mjolnir, hammerspoon, irc
1 comentários
Comentários do Hacker News
Hammerspoon é como a cola que mantém meu Mac inteiro unido
Ele despeja abas do Safari em documentos do Obsidian, ou abre apps principais como Safari, Finder, Terminal, VS Code e Notes em novas janelas com a combinação da tecla Hyper (Ctrl+Opt+Cmd)
Também deixei configuradas várias automações em conjunto com o AeroSpace, como mover janelas para outro monitor, colocar duas janelas lado a lado, trocá-las de lugar e reunir todas as janelas em um único workspace
Além disso, reinicia automaticamente apps em segundo plano quando eles travam e mostra um prompt para desmontar imagens de disco quando elas vão para a Lixeira
Também há integração com o Skim para saltar para seções específicas de um PDF por meio de links em Markdown
Antes eu usava um link compartilhado do Outlook, mas ele passou a exigir autenticação, então agora passo pelo Apple Calendar. Ainda assim, continua um mistério por que só 40% dos eventos sincronizam
Antigamente eu gostava de tiling window managers, mas no Mac eu uso muitos apps visualmente complexos, então o layout da tela passou a ser mais importante
Criei presets de tamanho de janela para mail, IDE, navegador, terminal e app de chat, e alterno entre eles com atalhos do Hammerspoon
Mesmo quando a IDE está compilando, consigo abrir o navegador e ainda ver os logs na parte inferior, e a troca entre apps com atalhos modais também é rápida
Acho interessante o conceito de modais em múltiplas etapas
Como mantenedor do Hammerspoon, estou desenvolvendo a v2, que atualmente está migrando de Lua para JavaScript
Meu projeto Spacehammer é um toolkit modal para Hammerspoon inspirado em Spacemacs/Doom
Com “alt+spc a b” dá para abrir o navegador, com “alt+spc m j/k” controlar o volume, e também editar no Emacs qualquer texto de qualquer app
Ele é escrito em Fennel, permite desenvolvimento em tempo real via REPL e também se integra bem com gerenciadores de janelas como o Yabai
Eu implementei um gerenciador de janelas em mosaico falso com Hammerspoon
Reposiciono as janelas com base em proporções da tela e também consigo movê-las entre monitores com atalhos
Recentemente usei Hammerspoon pela primeira vez, e o ChatGPT escreveu um script em AppleScript para eu vincular atalhos diretamente às opções de um app da barra de menus
Foi muito legal, e pretendo experimentar mais automações no futuro
Fiz um script para ocultar os controles de compartilhamento de tela do Zoom, de modo que eles não reapareçam mesmo ao pressionar ESC
Minha configuração inteira tem só uma linha
Com
ctrl + D, abro uma interface em grade para ajustar a janela na posição desejadaÉ mais simples e intuitivo do que outros gerenciadores de janelas
hs.grid.setGrid('4x4')ou ajustar o tamanho do texto comhs.grid.ui.textSizeCtrl+Dno terminalEu também me livrei do estresse de trocar janelas graças ao Hammerspoon
Uso Cmd+1~9 para alternar entre janelas do Chrome e Cmd+0 para abrir um diálogo de seleção
Se olhar meu arquivo de configuração, verá que ele lembra os nomes das janelas e os preserva mesmo após reiniciar
Hammerspoon é mais poderoso que o Automator no Mac
Assim como o Automator agora suporta JavaScriptCore, se o Hammerspoon também usar JS em vez de Lua, seria possível aproveitar pacotes Node diretamente
Se fosse preciso reescrever tudo em Lua, isso daria bastante trabalho