- macOS ortamını Lua betikleriyle kontrol etmeyi sağlayan açık kaynaklı bir otomasyon aracıdır; işletim sistemi ile betik motoru arasında köprü görevi görür
- Çeşitli genişletme modülleri (extensions) aracılığıyla sistem işlevlerini açığa çıkarır; bunlar birleştirilerek pencere yönetimi, giriş denetimi gibi karmaşık işler otomatikleştirilebilir
- Kurulum Homebrew veya manuel indirme yöntemiyle desteklenir; çalışması için kullanıcının
~/.hammerspoon/init.lua yapılandırma dosyasını doğrudan yazması gerekir
- Proje, Mjolnir'den fork edilerek daha bütünleşik bir kullanıcı deneyimi sunar ve sürekli olarak sistem API'lerini genişletmeyi ve uzantılar arası entegrasyonu güçlendirmeyi hedefler
- Geliştiricilerin ve ileri düzey kullanıcıların macOS'u ayrıntılı biçimde kontrol edebilmesini sağlayan gelişmiş bir otomasyon platformu olarak konumlanır
Hammerspoon'a genel bakış
- Hammerspoon, macOS'un (eski adıyla OS X) güçlü bir otomasyon aracıdır ve işletim sistemi ile Lua betik motoru arasında köprü olarak çalışır
- Kullanıcılar Lua betikleri aracılığıyla sistemin çeşitli işlevlerini kontrol edebilir
- Temel özellikler genişletme modülleri (extensions) üzerinden sunulur; bu modüller sistemin belirli işlevlerini açığa çıkarır
- Bunlar kullanılarak pencere yönetimi, ses kontrolü, giriş aygıtı ayarları gibi çeşitli otomasyon görevleri gerçekleştirilebilir
Kurulum yöntemi
- Manuel kurulum
- GitHub'daki en son sürümü indirin
Hammerspoon.app dosyasını Applications klasörüne taşıyın
- Homebrew ile kurulum
- Komut:
brew install hammerspoon --cask
İlk yapılandırma ve kullanım
- Kurulumun hemen ardından hiçbir işlem yapmaz; kullanıcının
~/.hammerspoon/init.lua dosyasını kendisinin oluşturması gerekir
- Başvurulabilecek kaynaklar:
Projenin geçmişi
- Hammerspoon, Mjolnir projesinin bir fork'u olarak başladı
- Mjolnir, minimal bir uygulama yapısını hedefler ve genişletmeleri harici Lua paketleri olarak yönetir
- Hammerspoon ise bunun üzerine, daha bütünleşik bir kullanıcı deneyimi sunmak için geliştirildi
Projenin gelecekteki yönü
- Sistem API kapsamını genişletme
- Genişletme modülleri arasındaki entegrasyonu güçlendirme
- Kullanıcı deneyimini iyileştirme
Teknik yapı ve istatistikler
- Başlıca dil dağılımı: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
- GitHub istatistikleri: 14.9k stars, 678 forks, 133 katkıda bulunan
- Lisans: MIT License
- Resmî web sitesi: www.hammerspoon.org
Başlıca konu etiketleri
- macOS, automation, lua, objective-c, osx, mjolnir, hammerspoon, irc
1 yorum
Hacker News yorumları
Hammerspoon, Mac’imi bir arada tutan yapıştırıcı gibi
Safari sekmelerini Obsidian belgelerine döküyorum ya da Hyper tuş kombinasyonu (Ctrl+Opt+Cmd) ile Safari, Finder, Terminal, VS Code, Notes gibi ana uygulamaları yeni pencerede açıyorum
AeroSpace ile entegre edip pencereleri başka monitöre taşımak, iki pencereyi yan yana yerleştirmek, yerlerini değiştirmek ya da tüm pencereleri tek bir workspace’te toplamak gibi çeşitli otomasyonlar kurdum
Ayrıca arka plan uygulaması çökerse otomatik yeniden başlatıyor ve disk image çöp kutusuna giderse unmount etmek için bir istem gösteriyor
Skim ile entegre olup Markdown bağlantısıyla PDF içindeki belirli bir bölüme atlama özelliği de var
Eskiden Outlook paylaşım bağlantısını kullanıyordum ama artık kimlik doğrulama gerektiği için Apple Calendar üzerinden gidiyorum. Yine de etkinliklerin yalnızca %40’ının senkronize olması hâlâ bir gizem
Eskiden tiling window manager seviyordum ama Mac’te görsel olarak karmaşık uygulamaları çok kullandığım için ekran yerleşimi daha önemli hâle geldi
Mail, IDE, tarayıcı, terminal ve sohbet uygulamalarının her biri için pencere boyutu önayarları oluşturup Hammerspoon kısayollarıyla aralarında geçiş yapıyorum
IDE derleme yaparken tarayıcıyı açsam bile alttaki log’u görebiliyorum ve modal kısayollarla uygulama değiştirmek de hızlı
Çok aşamalı modal kavramı ilginç geliyor
Hammerspoon’ın bakımcısı olarak, şu anda Lua’dan JavaScript’e geçen v2 üzerinde çalışıyorum
Spacehammer projem, Spacemacs/Doom esinli bir Hammerspoon modal araç takımı
“alt+spc a b” ile tarayıcıyı açabiliyor, “alt+spc m j/k” ile ses seviyesini ayarlayabiliyor ya da herhangi bir uygulamadaki metni Emacs’te düzenleyebiliyorsunuz
Fennel ile yazıldı, REPL üzerinden gerçek zamanlı geliştirme yapılabiliyor ve Yabai gibi pencere yöneticileriyle de iyi entegre oluyor
Hammerspoon ile sahte bir tiling window manager kurdum
Pencereleri ekran oranlarına göre yeniden yerleştiriyorum ve kısayollarla monitörler arasında taşıyabiliyorum
Kısa süre önce ilk kez Hammerspoon kullandım; bir menü çubuğu uygulamasındaki seçeneğe doğrudan kısayol bağlamak için ChatGPT bana AppleScript ile bir script yazdı
Gerçekten harika ve ileride daha fazla otomasyon denemeyi düşünüyorum
Zoom’un ekran paylaşımı kontrollerini gizleyen bir script yaptım; ESC’ye bassanız da tekrar görünmüyor
Tüm yapılandırmam sadece tek satır
ctrl + Dile grid arayüzünü açıp pencereyi istediğim konuma ayarlıyorumDiğer pencere yöneticilerinden daha basit ve sezgisel
hs.grid.setGrid('4x4')ile grid boyutunu değiştirebilir ya dahs.grid.ui.textSizeile yazı boyutunu ayarlayabilirsinizCtrl+Dile çakışıp çakışmadığını merak ediyorumBen de Hammerspoon sayesinde pencere geçişi stresinden kurtuldum
Cmd+1~9 ile Chrome pencereleri arasında geçiş yapıyor, Cmd+0 ile seçim diyalogunu açıyorum
Yapılandırma dosyamda pencere adlarını hatırlayıp yeniden başlattıktan sonra da koruyacak şekilde ayarlı
Hammerspoon, Mac’teki Automator’dan daha güçlü
Automator artık JavaScriptCore desteklediği gibi, Hammerspoon da Lua yerine JS kullanırsa Node paketlerinden doğrudan yararlanabilir
Bunları Lua ile yeniden yazmak gerekirse epey zahmetli olurdu