4 Punkte von GN⁺ 2026-03-15 | 1 Kommentare | Auf WhatsApp teilen
  • Ein Open-Source-Automatisierungstool, mit dem sich die macOS-Umgebung per Lua-Skripten steuern lässt und das als Brücke zwischen Betriebssystem und Skript-Engine fungiert
  • Über verschiedene Erweiterungsmodule (extensions) werden Systemfunktionen freigelegt, die sich kombinieren lassen, um komplexe Aufgaben wie Fensterverwaltung oder Eingabesteuerung zu automatisieren
  • Die Installation wird über Homebrew oder per manuellem Download unterstützt; funktionsfähig wird es erst, wenn die Nutzer ihre Konfigurationsdatei ~/.hammerspoon/init.lua selbst schreiben
  • Das Projekt wurde von Mjolnir geforkt, um eine stärker integrierte Nutzererfahrung zu bieten, und verfolgt kontinuierlich das Ziel, System-APIs zu erweitern und die Integration zwischen Erweiterungen zu stärken
  • Es hat sich als fortgeschrittene Automatisierungsplattform etabliert, mit der Entwickler und Power-User macOS bis ins Detail steuern können

Überblick über Hammerspoon

  • Hammerspoon ist ein leistungsstarkes Automatisierungstool für macOS (früher OS X), das als Brücke zwischen dem Betriebssystem und der Lua-Scripting-Engine arbeitet
    • Nutzer können über Lua-Skripte verschiedene Systemfunktionen steuern
  • Die Kernfunktionen werden über Erweiterungsmodule (extensions) bereitgestellt, die bestimmte Systemfunktionen freilegen
    • Damit lassen sich verschiedenste Automatisierungsaufgaben ausführen, etwa Fensterverwaltung, Audiosteuerung oder die Konfiguration von Eingabegeräten

Installationsmethoden

  • Manuelle Installation
    • Die neueste Release auf GitHub herunterladen
    • Hammerspoon.app in den Ordner Applications verschieben
  • Installation mit Homebrew
    • Befehl: brew install hammerspoon --cask

Ersteinrichtung und Nutzung

Geschichte des Projekts

  • Hammerspoon begann als Fork des Mjolnir-Projekts
    • Mjolnir verfolgte eine minimale Anwendungsstruktur und verwaltete Erweiterungen als externe Lua-Pakete
    • Hammerspoon wurde darauf aufbauend entwickelt, um eine stärker integrierte Nutzererfahrung zu bieten

Zukünftige Ausrichtung des Projekts

  • Ausweitung des Umfangs der System-APIs
  • Stärkere Integration zwischen Erweiterungsmodulen
  • Verbesserung der Nutzererfahrung

Technischer Aufbau und Kennzahlen

  • Wichtige Sprachanteile: Objective-C 51 %, Lua 24,7 %, C 16,3 %, HTML 5,6 %, Shell 0,7 %, Python 0,5 %
  • GitHub-Statistik: 14.9k Stars, 678 Forks, 133 Mitwirkende
  • Lizenz: MIT License
  • Offizielle Website: www.hammerspoon.org

Wichtige Themen-Tags

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

1 Kommentare

 
GN⁺ 2026-03-15
Hacker-News-Kommentare
  • Hammerspoon ist für mich wie der Klebstoff, der meinen Mac zusammenhält
    Ich dumpfe Safari-Tabs in Obsidian-Dokumente oder starte mit der Hyper-Tastenkombination (Ctrl+Opt+Cmd) neue Fenster für Safari, Finder, Terminal, VS Code, Notes und andere wichtige Apps
    In Verbindung mit AeroSpace habe ich verschiedene Automatisierungen eingerichtet, etwa Fenster auf einen anderen Monitor zu verschieben, zwei Fenster nebeneinander anzuordnen, sie zu tauschen oder alle Fenster in einem Workspace zu sammeln
    Außerdem werden abgestürzte Hintergrund-Apps automatisch neu gestartet, und wenn ein Disk-Image in den Papierkorb gelegt wird, erscheint eine Aufforderung zum Unmounten
    Es gibt auch eine Integration mit Skim, mit der man per Markdown-Link zu einem bestimmten Abschnitt in einem PDF springen kann

    • Ich nutze es nur für zwei Dinge — ich prüfe die Liste der Teams-Fenster, und wenn ich in einem Meeting bin, sende ich einen Webhook an HomeAssistant, um das Licht-Preset zu ändern, und ich lade den ical-Kalender herunter, um bei einem Meeting in den nächsten 15 Minuten auf das Preset „pending“ umzuschalten
      Ursprünglich habe ich einen freigegebenen Outlook-Link verwendet, aber da inzwischen Authentifizierung nötig ist, gehe ich über Apple Calendar. Dass trotzdem nur 40 % der Termine synchronisiert werden, ist nach wie vor ein Rätsel
    • Mich würde interessieren, wie du Safari-Tabs nach Obsidian dumpfst. Ist das eine einfache Funktion oder gibt es ein Skript, das du teilen könntest?
    • Wirklich beeindruckendes „spooning“. Ich nutze es nur fürs Fenstermanagement, aber allein dadurch ist macOS deutlich brauchbarer geworden
    • Ich würde gern wissen, ob du deine Konfigurationsdatei teilen könntest
    • Durch die Beispiele habe ich selbst Ideen bekommen, wie ich es einsetzen könnte
  • Früher mochte ich Tiling Window Manager, aber auf dem Mac nutze ich viele visuell komplexe Apps, daher ist das Bildschirm-Layout wichtiger geworden
    Ich habe für Mail, IDE, Browser, Terminal und Chat-Apps jeweils passende Fenstergrößen-Presets erstellt und schalte sie per Hammerspoon-Hotkey um
    Wenn die IDE gerade baut, kann ich trotzdem den Browser öffnen und weiterhin die Logs unten sehen, und per modalem Hotkey geht auch der App-Wechsel schnell
    Das Konzept mehrstufiger Modi finde ich spannend

  • Als Maintainer von Hammerspoon entwickle ich derzeit v2, das von Lua auf JavaScript umstellt

    • Ich mag Lua sehr, und Hammerspoon war fast der einzige Grund, überhaupt Lua zu verwenden, daher finde ich den Wechsel zu JS schade, halte ihn aber für eine realistische Entscheidung
    • Als langjähriger Nutzer würde mich der Grund für den Lua-Wechsel interessieren, aber unabhängig davon danke für diese großartige App
    • Mit „Erscheint es in 18 Tagen?“ wird die Vorfreude scherzhaft ausgedrückt
    • Mich interessieren die Vision von v2, die Gründe für die Architekturänderungen und warum JS gewählt wurde
    • Ich frage mich auch, ob sich durch die JavaScript-Unterstützung in AppleScript eine Synergie ergeben könnte
  • Mein Projekt Spacehammer ist ein modales Hammerspoon-Toolkit, inspiriert von Spacemacs/Doom
    Mit „alt+spc a b“ kann man den Browser öffnen, mit „alt+spc m j/k“ die Lautstärke regeln, oder beliebigen Text aus einer App in Emacs bearbeiten
    Es ist in Fennel geschrieben und kann dank REPL in Echtzeit entwickelt werden, außerdem arbeitet es gut mit Window Managern wie Yabai zusammen

    • Als Witz kommt die Bemerkung: „Es gibt doch Lautstärketasten auf der Tastatur …“ Bei Touch-Bar-Macs kann man das allerdings verstehen
  • Ich habe mit Hammerspoon einen Pseudo-Tiling-Window-Manager gebaut
    Fenster werden anhand von Bildschirmverhältnissen neu angeordnet, und per Hotkey kann man sie auch zwischen Monitoren verschieben

    • Empfohlen wird AeroSpace. Für i3-Nutzer funktioniert es auf vertraute Weise sehr gut
    • Ich nutze es ähnlich, habe aber auch links-/zentriert-/rechtsbündige Anordnung hinzugefügt. Fenstergrößen per Mathematik zu berechnen ist bizarr, aber cool
    • Ich verwende hammerspoon-shiftit. Das Projekt bildet das eingestellte ShiftIt perfekt nach
    • Ich verschiebe Fenster ebenfalls mit hyper+Pfeiltasten und schalte mit hyper+enter in den Vollbildmodus. Mir gefällt, wie natürlich sich das Verschieben von Fenstern anfühlt
    • Ich mag das Plugin miro-windows-manager. Es eignet sich gut, um halbierte und gedrittelte Layouts durchzuschalten
  • Ich habe Hammerspoon vor Kurzem zum ersten Mal ausprobiert, und ChatGPT hat mir per AppleScript ein Skript geschrieben, um Hotkeys direkt an Optionen einer Menüleisten-App zu binden
    Wirklich großartig, und ich möchte künftig noch mehr Automatisierungen ausprobieren

  • Ich habe ein Skript gebaut, das die Bildschirmfreigabe-Steuerung von Zoom ausblendet, sodass sie auch nach dem Drücken von ESC nicht wieder erscheint

    • Die Reaktion darauf: „Allein dafür lohnt sich die Installation“
  • Meine gesamte Konfiguration besteht aus genau einer Zeile
    Mit ctrl + D öffne ich eine Grid-Oberfläche, um Fenster an die gewünschte Position zu setzen
    Das ist einfacher und intuitiver als bei anderen Window Managern

    • Jemand ist überrascht und sagt, er habe nicht gewusst, dass es diese Funktion gibt. Mit hs.grid.setGrid('4x4') kann man die Grid-Größe ändern, mit hs.grid.ui.textSize die Schriftgröße anpassen
    • Ich nutze etwas Ähnliches, habe es aber flexibler aufgebaut, etwa mit Größenänderung nur von einer Seite
    • Das Synchronisieren von Einstellungen zwischen mehreren Geräten kann zur Dotfile-Hölle werden. Trotzdem ist es eines der wenigen modernen Tools, mit denen man Fenster ohne Maus steuern kann
    • Ich frage mich, ob das nicht mit Ctrl+D im Terminal kollidiert
  • Dank Hammerspoon bin auch ich den Stress beim Fensterwechsel losgeworden
    Mit Cmd+1~9 wechsle ich zwischen Chrome-Fenstern, mit Cmd+0 öffne ich einen Auswahldialog
    In meiner Konfigurationsdatei sieht man, dass Fensternamen gemerkt und auch nach einem Neustart beibehalten werden

  • Hammerspoon ist leistungsfähiger als Automator auf dem Mac
    So wie Automator inzwischen JavaScriptCore unterstützt, könnte Hammerspoon bei einer Umstellung von Lua auf JS Node-Pakete direkt weiterverwenden
    Wenn man alles in Lua neu schreiben müsste, wäre das ziemlich mühsam