- 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
- Tepat setelah instalasi, tidak ada tindakan apa pun yang dilakukan; pengguna harus membuat file
~/.hammerspoon/init.lua sendiri
- Sumber referensi:
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
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
Awalnya saya memakai tautan berbagi Outlook, tetapi setelah butuh autentikasi saya lewat Apple Calendar. Namun kenapa hanya 40% jadwal yang tersinkron tetap menjadi misteri
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
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
Saya memakai Hammerspoon untuk membuat tiling window manager palsu
Jendela ditata ulang berdasarkan rasio layar, dan bisa dipindahkan antar-monitor lewat shortcut
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
Seluruh konfigurasi saya cuma satu baris
Dengan
ctrl + Dsaya memunculkan antarmuka grid untuk mengatur jendela ke posisi yang diinginkanLebih sederhana dan intuitif daripada window manager lain
hs.grid.setGrid('4x4'), dan ukuran teks juga bisa diatur lewaths.grid.ui.textSizeCtrl+Ddi terminalSaya 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