- macOS वातावरण को Lua स्क्रिप्ट से नियंत्रित करने वाला एक ओपन सोर्स ऑटोमेशन टूल, जो ऑपरेटिंग सिस्टम और स्क्रिप्टिंग इंजन के बीच ब्रिज की भूमिका निभाता है
- विभिन्न extension modules के माध्यम से सिस्टम फीचर्स को एक्सपोज़ करता है, और इन्हें मिलाकर window management, input control जैसी जटिल प्रक्रियाओं को ऑटोमेट किया जा सकता है
- इंस्टॉलेशन Homebrew या मैनुअल डाउनलोड से समर्थित है, और इसे चलाने के लिए यूज़र को अपनी सेटिंग फ़ाइल
~/.hammerspoon/init.lua सीधे लिखनी होती है
- प्रोजेक्ट Mjolnir से फोर्क किया गया था और अधिक एकीकृत user experience देने के लिए बनाया गया है; इसका लक्ष्य लगातार system API expansion और extensions के बीच integration को मजबूत करना है
- यह डेवलपर्स और power users के लिए macOS पर बारीक नियंत्रण देने वाला एक advanced automation platform बन चुका है
Hammerspoon का अवलोकन
- Hammerspoon macOS (पूर्व में OS X) के लिए एक शक्तिशाली ऑटोमेशन टूल है, जो ऑपरेटिंग सिस्टम और Lua scripting engine के बीच ब्रिज की तरह काम करता है
- यूज़र Lua स्क्रिप्ट के ज़रिए सिस्टम की विभिन्न क्षमताओं को नियंत्रित कर सकते हैं
- इसकी मुख्य सुविधाएँ extension modules के माध्यम से मिलती हैं, और ये मॉड्यूल सिस्टम के विशिष्ट फीचर्स को एक्सपोज़ करते हैं
- इनके जरिए window management, audio control, input device configuration जैसी कई ऑटोमेशन प्रक्रियाएँ की जा सकती हैं
इंस्टॉलेशन का तरीका
- मैनुअल इंस्टॉलेशन
- GitHub से latest release डाउनलोड करें
Hammerspoon.app को Applications फ़ोल्डर में ले जाएँ
- Homebrew इंस्टॉलेशन
- कमांड:
brew install hammerspoon --cask
शुरुआती सेटअप और उपयोग
- इंस्टॉल करने के तुरंत बाद यह कोई काम नहीं करता; यूज़र को स्वयं
~/.hammerspoon/init.lua फ़ाइल बनानी होती है
- संदर्भ के लिए उपयोगी संसाधन:
प्रोजेक्ट का इतिहास
- Hammerspoon की शुरुआत Mjolnir प्रोजेक्ट के फोर्क के रूप में हुई
- Mjolnir न्यूनतम application structure पर केंद्रित था, और extensions को बाहरी Lua packages के रूप में मैनेज करता था
- Hammerspoon को इसी आधार पर अधिक एकीकृत user experience देने के लिए विकसित किया गया
प्रोजेक्ट की आगे की दिशा
- system API expansion का दायरा बढ़ाना
- extension modules के बीच integration मजबूत करना
- user experience में सुधार
तकनीकी संरचना और आँकड़े
- प्रमुख भाषा संरचना: Objective-C 51%, Lua 24.7%, C 16.3%, HTML 5.6%, Shell 0.7%, Python 0.5%
- GitHub आँकड़े: 14.9k stars, 678 forks, 133 contributors
- लाइसेंस: MIT License
- आधिकारिक वेबसाइट: www.hammerspoon.org
प्रमुख विषय टैग
- macOS, automation, lua, objective-c, osx, mjolnir, hammerspoon, irc
1 टिप्पणियां
Hacker News टिप्पणियाँ
Hammerspoon मेरे Mac को एक साथ जोड़े रखने वाले गोंद जैसा है
मैं Safari tabs को Obsidian documents में dump करता हूँ, या Hyper key combination (Ctrl+Opt+Cmd) से Safari, Finder, Terminal, VS Code, Notes जैसी मुख्य apps को नई window में खोलता हूँ
AeroSpace के साथ integrate करके windows को दूसरे monitor पर भेजना, दो windows को साथ-साथ रखना, swap करना, या सभी windows को एक workspace में इकट्ठा करना जैसी कई automations सेट कर रखी हैं
साथ ही, अगर background app crash हो जाए तो उसे अपने-आप restart करता है, और जब disk image को Trash में भेजा जाए तो unmount करने का prompt भी दिखाता है
Skim के साथ integrate करके Markdown link से PDF के किसी खास section पर jump करने की सुविधा भी है
पहले Outlook shared link इस्तेमाल करता था, लेकिन बाद में authentication ज़रूरी हो गया, इसलिए अब Apple Calendar के ज़रिए करता हूँ। फिर भी schedules का सिर्फ 40% sync होना अब तक रहस्य है
पहले मुझे tiling window manager पसंद थे, लेकिन Mac पर मैं बहुत सारे visually complex apps इस्तेमाल करता हूँ, इसलिए screen layout ज़्यादा अहम हो गया
Mail, IDE, browser, terminal, chat app — हर एक के लिए अलग window size preset बनाए हैं, और Hammerspoon shortcuts से उनके बीच switch करता हूँ
IDE build कर रहा हो तब भी browser खोलने पर नीचे के logs देख सकता हूँ, और modal shortcuts से app switching भी तेज़ हो जाती है
multi-stage modal concept काफ़ी दिलचस्प है
Hammerspoon के maintainer के रूप में, मैं अभी Lua से JavaScript में जाने वाला v2 विकसित कर रहा हूँ
मेरा project Spacehammer Spacemacs/Doom से प्रेरित Hammerspoon modal toolkit है
“alt+spc a b” से browser खोल सकते हैं, “alt+spc m j/k” से volume control कर सकते हैं, या किसी भी app के text को Emacs में edit कर सकते हैं
यह Fennel में लिखा गया है, REPL के ज़रिए real-time development हो सकता है, और Yabai जैसे window manager के साथ भी अच्छी तरह integrate होता है
मैंने Hammerspoon से fake tiling window manager बनाया है
windows को screen ratio के हिसाब से rearrange करता हूँ, और shortcut से monitors के बीच move भी कर सकता हूँ
हाल ही में मैंने पहली बार Hammerspoon इस्तेमाल किया, और menu bar app के option पर direct shortcut bind करने के लिए ChatGPT ने AppleScript में script लिख दी
यह वाकई शानदार है, और आगे और automation आज़माने का सोच रहा हूँ
मैंने Zoom के screen sharing controls को छिपाने की script बनाई, ताकि ESC दबाने पर भी वे फिर से न दिखाई दें
मेरी पूरी config सिर्फ एक लाइन की है
ctrl + Dसे grid interface खुलता है और window को मनचाही जगह adjust कर सकता हूँयह दूसरे window managers की तुलना में ज़्यादा simple और intuitive है
hs.grid.setGrid('4x4')से grid size बदल सकते हैं, याhs.grid.ui.textSizeसे text size adjust कर सकते हैंCtrl+Dसे conflict नहीं करता?मैं भी Hammerspoon की वजह से window switching stress से मुक्त हो गया
Cmd+1~9 से Chrome windows switch करता हूँ, और Cmd+0 से selection dialog खोलता हूँ
मेरी config file देखें; इसमें window names याद रहते हैं और restart के बाद भी बने रहते हैं
Hammerspoon, Mac के Automator से ज़्यादा शक्तिशाली है
जैसे Automator अब JavaScriptCore support करता है, वैसे अगर Hammerspoon भी Lua की जगह JS इस्तेमाल करे तो Node packages को सीधे इस्तेमाल किया जा सकेगा
अगर Lua में दोबारा लिखना पड़े, तो काफ़ी मेहनत लगेगी