4 pontos por GN⁺ 2026-03-15 | 1 comentários | Compartilhar no WhatsApp
  • 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

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

 
GN⁺ 2026-03-15
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

    • Eu só uso para duas coisas — verificar a lista de janelas do Teams e, se eu estiver em reunião, enviar um webhook para o HomeAssistant para mudar o preset de iluminação; e baixar o calendário do ical para, se houver uma reunião nos próximos 15 minutos, mudar para o preset “pending”
      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
    • Fiquei curioso sobre como você despeja abas do Safari no Obsidian. Queria saber se é algo simples ou se existe algum script que valha a pena compartilhar
    • Um ‘spooning’ realmente impressionante. Eu só uso para gerenciamento de janelas, mas mesmo assim ele deixou o macOS muito mais usável
    • Queria saber se você poderia compartilhar seu arquivo de configuração
    • Os exemplos me deram ideias de como eu também poderia usar isso
  • 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

    • Eu gostava de Lua, e Hammerspoon era praticamente o único motivo para eu usá-la, então vou sentir falta se mudar para JS, mas acho que é uma escolha pragmática
    • Como usuário de longa data, tenho curiosidade sobre o motivo da troca, mas de qualquer forma agradeço pelo excelente app
    • Expressa, em tom de brincadeira, a expectativa de “lançamento em 18 dias?”
    • Tenho curiosidade sobre a visão da v2, os motivos das mudanças de arquitetura e o contexto da escolha por JS
    • Também fico curioso se isso pode gerar sinergia com o suporte a JavaScript no AppleScript
  • 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

    • Faz uma piada: “mas já existem teclas de volume no teclado...”. Ainda assim, entende quem usa Mac com Touch Bar
  • 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

    • Recomenda o AeroSpace. Funciona bem de um jeito familiar para usuários de i3
    • Eu uso algo parecido, mas adicionando também posições à esquerda, centro e direita. Calcular o tamanho das janelas com matemática é estranho, mas legal
    • Uso o hammerspoon-shiftit. É um projeto que recria perfeitamente o finado ShiftIt
    • Eu também movo janelas com hyper+seta e alterno para tela cheia com hyper+enter. Gosto de como o movimento de janelas parece natural
    • Gosto do plugin miro-windows-manager. É ótimo para alternar entre layouts de metade e de terços
  • 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

    • Recebeu a reação de que “só isso já vale a instalação”
  • 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

    • Surpresa por “não saber que esse recurso existia”. Também dá para mudar o tamanho da grade com hs.grid.setGrid('4x4') ou ajustar o tamanho do texto com hs.grid.ui.textSize
    • Eu uso algo parecido, mas de forma mais flexível, como redimensionar só de um lado
    • Sincronizar configurações entre vários dispositivos pode virar um inferno de dotfiles. Mesmo assim, é uma das poucas ferramentas modernas que permitem controlar janelas sem usar o mouse
    • Fica a dúvida se isso não entra em conflito com Ctrl+D no terminal
  • Eu 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