4 poin oleh GN⁺ 2026-03-15 | 1 komentar | Bagikan ke WhatsApp
  • Alat otomasi open-source yang memungkinkan mengendalikan lingkungan macOS dengan skrip Lua, berperan sebagai jembatan yang menghubungkan sistem operasi dengan mesin scripting
  • Melalui berbagai modul ekstensi (extensions), fitur sistem diekspos dan dapat digabungkan untuk mengotomatisasi tugas kompleks seperti manajemen jendela dan kontrol input
  • Instalasi didukung melalui Homebrew atau unduhan manual, dan baru akan berjalan setelah pengguna menulis sendiri file konfigurasi ~/.hammerspoon/init.lua
  • Proyek ini di-fork dari Mjolnir untuk menghadirkan pengalaman pengguna yang lebih terintegrasi, dan terus menargetkan perluasan API sistem serta penguatan integrasi antar-ekstensi
  • Telah memantapkan diri sebagai platform otomasi tingkat lanjut yang memungkinkan developer dan power user mengendalikan macOS secara sangat detail

Gambaran umum Hammerspoon

  • Hammerspoon adalah alat otomasi yang kuat untuk macOS (sebelumnya OS X), bekerja sebagai jembatan yang menghubungkan sistem operasi dengan mesin scripting Lua
    • Pengguna dapat mengendalikan berbagai fungsi sistem melalui skrip Lua
  • Fitur intinya disediakan melalui modul ekstensi (extensions), dan modul-modul ini mengekspos fungsi tertentu dari sistem
    • Dengan ini, berbagai tugas otomasi seperti manajemen jendela, kontrol audio, dan pengaturan perangkat input dapat dilakukan

Cara instalasi

  • Instalasi manual
    • Unduh rilis terbaru dari GitHub
    • Pindahkan Hammerspoon.app ke folder Applications
  • Instalasi Homebrew
    • Perintah: brew install hammerspoon --cask

Konfigurasi awal dan penggunaan

Sejarah proyek

  • Hammerspoon dimulai sebagai fork dari proyek Mjolnir
    • Mjolnir berfokus pada struktur aplikasi yang minimal, dengan ekstensi dikelola sebagai paket Lua eksternal
    • Berdasarkan itu, Hammerspoon dikembangkan untuk menghadirkan pengalaman pengguna yang lebih terintegrasi

Arah pengembangan ke depan

  • Memperluas cakupan API sistem
  • Memperkuat integrasi antar-modul ekstensi
  • Meningkatkan pengalaman pengguna

Susunan teknis dan statistik

  • Komposisi bahasa utama: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
  • Statistik GitHub: 14.9k stars, 678 forks, 133 kontributor
  • Lisensi: MIT License
  • Situs web resmi: www.hammerspoon.org

Tag topik utama

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

1 komentar

 
GN⁺ 2026-03-15
Komentar Hacker News
  • Hammerspoon adalah seperti lem yang menyatukan Mac saya
    Saya membuang tab Safari ke dokumen Obsidian, atau membuka jendela baru untuk aplikasi utama seperti Safari, Finder, Terminal, VS Code, dan Notes dengan kombinasi tombol Hyper (Ctrl+Opt+Cmd)
    Terintegrasi dengan AeroSpace untuk memindahkan jendela ke monitor lain, menempatkan dua jendela berdampingan, menukarnya, atau mengumpulkan semua jendela ke satu workspace, jadi saya sudah menyiapkan berbagai otomatisasi
    Selain itu, jika aplikasi latar belakang mati maka akan otomatis dijalankan ulang, dan saat disk image dipindahkan ke Trash akan muncul prompt untuk unmount
    Ada juga fitur integrasi dengan Skim untuk melompat ke bagian tertentu di PDF lewat tautan Markdown

    • Saya hanya memakainya untuk dua hal — memeriksa daftar jendela Teams, lalu jika sedang rapat mengirim webhook ke HomeAssistant untuk mengganti preset lampu, dan mengunduh kalender ical lalu beralih ke preset “pending” jika ada rapat dalam 15 menit
      Awalnya saya memakai tautan berbagi Outlook, tetapi setelah butuh autentikasi saya lewat Apple Calendar. Namun kenapa hanya 40% jadwal yang tersinkron tetap menjadi misteri
    • Saya penasaran bagaimana cara membuang tab Safari ke Obsidian. Apakah itu fitur sederhana, atau ada skrip yang layak dibagikan?
    • ‘spooning’ yang sangat mengesankan. Saya hanya memakainya untuk manajemen jendela, tetapi itu saja sudah membuat macOS jauh lebih enak dipakai
    • Saya penasaran apakah Anda bisa membagikan file konfigurasinya
    • Contohnya memberi saya ide juga tentang bagaimana saya bisa memakainya
  • Dulu saya suka tiling window manager, tetapi di Mac saya memakai banyak aplikasi yang rumit secara visual, jadi tata letak layar menjadi lebih penting
    Saya membuat preset ukuran jendela untuk mail, IDE, browser, terminal, dan aplikasi chat, lalu berpindah di antaranya dengan shortcut Hammerspoon
    Bahkan saat IDE sedang build, saya tetap bisa membuka browser sambil melihat log di bagian bawah, dan perpindahan aplikasi juga cepat berkat shortcut modal
    Konsep modal bertingkat terasa menarik

  • Sebagai maintainer Hammerspoon, saat ini saya sedang mengembangkan v2 yang beralih dari Lua ke JavaScript

    • Saya suka Lua, jadi Hammerspoon adalah hampir satu-satunya alasan saya masih bisa memakai Lua. Kalau berubah ke JS memang agak disayangkan, tetapi menurut saya itu pilihan yang realistis
    • Sebagai pengguna lama, saya penasaran alasan perpindahan dari Lua, tetapi bagaimanapun juga terima kasih untuk aplikasi yang luar biasa ini
    • Dengan nada bercanda, ada yang bertanya “rilis 18 hari lagi?”
    • Saya penasaran dengan visi v2, alasan perubahan arsitektur, dan latar belakang pemilihan JS
    • Saya juga penasaran apakah ini bisa menciptakan sinergi dengan dukungan JavaScript di AppleScript
  • Proyek saya Spacehammer adalah toolkit modal Hammerspoon yang terinspirasi dari Spacemacs/Doom
    Dengan “alt+spc a b” saya bisa membuka browser, dengan “alt+spc m j/k” mengatur volume, atau mengedit teks dari aplikasi apa pun di Emacs
    Ditulis dengan Fennel, bisa dikembangkan secara real-time lewat REPL, dan juga terintegrasi dengan baik dengan window manager seperti Yabai

    • Ada yang bercanda, “tombol atur volume kan sudah ada di keyboard...”, walau pengguna Touch Bar Mac mungkin bisa memahami
  • Saya memakai Hammerspoon untuk membuat tiling window manager palsu
    Jendela ditata ulang berdasarkan rasio layar, dan bisa dipindahkan antar-monitor lewat shortcut

    • Merekomendasikan AeroSpace. Bekerja sangat baik dengan gaya yang familier bagi pengguna i3
    • Saya juga memakainya dengan cara serupa, tetapi menambahkan penempatan kiri-tengah-kanan. Menghitung ukuran jendela dengan matematika itu aneh tapi keren
    • Saya memakai hammerspoon-shiftit. Proyek yang mereplikasi ShiftIt yang sudah mati dengan sempurna
    • Saya juga memindahkan jendela dengan hyper+panah, dan mengaktifkan layar penuh dengan hyper+enter. Saya suka rasa perpindahan jendelanya yang alami
    • Saya suka plugin miro-windows-manager. Enak untuk memutar tata letak setengah layar atau sepertiga layar
  • Baru-baru ini saya pertama kali mencoba Hammerspoon, dan ChatGPT menuliskan skrip AppleScript untuk mengikat shortcut langsung ke opsi aplikasi menu bar
    Sangat keren, dan ke depannya saya ingin mencoba lebih banyak otomatisasi

  • Saya membuat skrip untuk menyembunyikan kontrol screen sharing Zoom, sehingga tidak muncul lagi meskipun ESC ditekan

    • Ada respons bahwa “ini saja sudah cukup membuatnya layak dipasang”
  • Seluruh konfigurasi saya cuma satu baris
    Dengan ctrl + D saya memunculkan antarmuka grid untuk mengatur jendela ke posisi yang diinginkan
    Lebih sederhana dan intuitif daripada window manager lain

    • Ada yang kaget, “saya tidak tahu fitur ini ada.” Ukuran grid bisa diubah dengan hs.grid.setGrid('4x4'), dan ukuran teks juga bisa diatur lewat hs.grid.ui.textSize
    • Saya memakai fungsi serupa juga, tetapi dibuat lebih fleksibel, misalnya resize hanya dari satu sisi
    • Sinkronisasi konfigurasi antar-perangkat bisa menjadi neraka dotfile. Meski begitu, ini tetap salah satu alat modern yang memungkinkan kontrol jendela tanpa mouse
    • Ada yang penasaran apakah ini tidak bentrok dengan Ctrl+D di terminal
  • Saya juga terbebas dari stres berpindah jendela berkat Hammerspoon
    Cmd+1~9 dipakai untuk berpindah jendela Chrome, dan Cmd+0 untuk memunculkan dialog pemilihan
    Jika melihat file konfigurasi saya, nama jendela diingat dan tetap dipertahankan bahkan setelah restart

  • Hammerspoon lebih kuat daripada Automator di Mac
    Seperti Automator yang sekarang mendukung JavaScriptCore, jika Hammerspoon juga memakai JS alih-alih Lua maka paket Node bisa langsung dimanfaatkan
    Kalau harus menulis ulang semuanya dalam Lua, sepertinya akan sangat merepotkan