मुझे गति चाहिए थी। मुझे गति चाहिए थी ।
यह सब इधर-उधर क्लिक करना, यह सारी खोज, सभी दोहराव वाली सोच और मानसिक उपर वास्तव में काम पूरा करने में कटौती कर रहा था।
मेरे लिए काम करने के लिए मुझे रोबोट की जरूरत थी।
मैं हाल ही में विंडोज़ पर कई वर्षों के बाद मैकोज़ में स्थानांतरित हो गया था जहां मैंने ऑटोहॉटकी के साथ छेड़छाड़ की थी।
एक रिश्तेदार मैक नोब के रूप में मैंने अल्फ्रेड , करबिनेर के साथ हैकिंग शुरू कर दी और जल्दी से हैमरस्पून के रूप में सांत्वना पाई।
आह, हैमरस्पून । हां, मैंने हैमरस्पून की कोडिंग और विस्तार करने वाले सुपर-स्मार्ट लोगों से कोड और मॉड्यूल - "स्पून" - का उपभोग किया था और इससे मुझे कुछ अच्छा लाभ मिला, फिर भी मुझे और अधिक की आवश्यकता थी।
फिर, लुआ था। मैं लुआ में अपस्किल करना चाहता था।
ऐसा करने का सबसे अच्छा तरीका?कुछ कोड करें।
Hellfred दर्ज करें, के शीर्ष पर निर्मित 3 मिनी-ऐप्स का एक संग्रह
यह दोहराए जाने वाले, समय लेने वाले कार्यों को प्रमुख अनुक्रमों, आदेशों या खोज योग्य ग्रंथों में मैप करने का एक तरीका है।
तो आप त्वरित आग चाहते हैं? नीचे दिए गए इंस्टॉलेशन और ट्यूटोरियल सेक्शन पर जाएं याbasics
शाखा checkout
करें।
git checkout basics
एक त्वरित-फायर, मोड-आधारित, हॉटकी-टू-एक्शन मैपिंग उपयोगिता।
कृपया अंग्रेज़ी का प्रयोग करें?
जब मैं कोई वर्ण या वर्णों का अनुक्रम टाइप करता हूं, तो एक विशिष्ट फ़ंक्शन निष्पादित करता हूं, लेकिन केवल तभी जब मैं किसी विशेष मोड में हूं।
ठीक। एक उदाहरण शायद?
launchGoogleChromeApp
(लेकिन केवल अगर मैं डिफ़ॉल्ट मोड में हूं)changeToWindowManagerMode
(फिर से, डिफ़ॉल्ट मोड में रहते हुए)centerWindowOnScreen
चलाएं (जबकि विंडोमैनेजर मोड में)
चॉइस-टू-एक्शन मैपिंग के साथ एक अस्पष्ट-खोज चयनकर्ता उपयोगिता।
कृपया अंग्रेज़ी का प्रयोग करें?
जब मैं विकल्पों की सूची के माध्यम से खोज करता हूं और एक का चयन करता हूं, तो एक विशिष्ट फ़ंक्शन निष्पादित करें। अगर मेरी पसंद में उप-विकल्प हैं (सोचें: parent => children
), तो मुझे वे दिखाएं ताकि मैं उनके माध्यम से खोज सकूं।
ठीक। एक उदाहरण शायद?
मान लीजिए कि आपके पास यह संरचना है:
openGoogleInBrowser
फ़ंक्शन निष्पादित हो जाएगा।launchOrOpenApp
निष्पादित करेगा।
मूल स्ट्रिंग मिलान समर्थन के साथ एक कमांडलाइन जैसी उपयोगिता।
कृपया अंग्रेज़ी का प्रयोग करें?
जब मैं एक कमांड टाइप करता हूं और उसे सबमिट करता हूं, तो किसी भी मिलान स्ट्रिंग पैटर्न के लिए मेरे कमांड का निरीक्षण करें और उस कमांड से संबंधित कार्यों को निष्पादित करें।
ठीक। एक उदाहरण शायद?
जब मैं कमांड ' ओपन नोट्स ' टाइप करता हूं और फिर enter
दबाता हूं, तो filter
के साथ किसी भी फ़ंक्शन को निष्पादित करें (उदाहरण के लिए कमांड ' ओपन ' शब्द से शुरू होना चाहिए) और व्यवहार (उदाहरण के लिए ' नोट्स ' से जुड़े ओपन ऐप) नोट्स खोलने के लिए उपयुक्त अनुप्रयोग।
जब मैं ' ब्राउज जीथब ' टाइप करता हूं और फिर enter
दबाता हूं, तो फिल्टर के साथ किसी भी फ़ंक्शन को निष्पादित करें (उदाहरण के लिए कमांड ' ब्राउज ' शब्द से शुरू होता है) और व्यवहार (' जीथब ' से जुड़ा यूआरएल खोलें) लिंक खोलने के लिए उपयुक्त है।
~/.hammerspoon
निर्देशिका में क्लोन करें:
git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon
हेलफ्रेड के लिए एक पूर्व-कॉन्फ़िगर सेटअप के साथ एक बूटस्ट्रैप फ़ाइल है। आइए इसे हैमरस्पून की init.lua
फ़ाइल में देखें।
https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0
फ़ाइल को सहेजें और कॉन्फ़िगरेशन को पुनः लोड करें (या अपने आप को कुछ समय बचाएं और उपयोग करें
आउट-द-बॉक्स 3 हेलफ्रेड ऐप्स उपयोग के लिए तैयार हैं और एक त्वरित-प्रारंभ उदाहरण के साथ पूर्व-कॉन्फ़िगर किए गए हैं। आइए यह सुनिश्चित करने के लिए इसका परीक्षण करें कि सब कुछ वायरिंग और फायरिंग है।
⌘
shift
+ + h
. के साथ ओपन हेलफायरc
. टाइप करें⌥
shift
+ + h
. के साथ हेलफज खोलेंenter
दबाएं और हेलफ्रेड के लिए विकी एक ब्राउज़र में खुलेगाshift
+ ^
+ h
. के साथ हेलप्रॉम्प्ट खोलेंenter
दबाएं और हेलफ्रेड के लिए कोड रेपो एक ब्राउज़र में खुल जाएगा
Hellfire , Hellfuzz और Hellprompt क्या हासिल करते हैं, किसी क्रिया या व्यवहार के लिए एक ट्रिगर या इनपुट मैप करते हैं, if-this-then-that
, और जब तक हमने एक ही परिणाम प्राप्त करने के लिए प्रत्येक ऐप का उपयोग करके प्रदर्शन किया है, तो आप प्रत्येक ऐप को अधिक उपयुक्त पाएंगे दूसरों की तुलना में कुछ उपयोग के मामले।
अब आंच को तेज करते हैं और कुछ और उपयोगी चीज को कॉन्फ़िगर करते हैं। हम निम्नलिखित परिदृश्यों को हल करने के लिए प्रत्येक ऐप को प्रोग्राम करने जा रहे हैं ताकि आप चीजों को लटका सकें:
आप इस पूर्वाभ्यास के लिए अंतिम फ़ाइलें हेलफ़्रेड/विस्तार/मूलभूत निर्देशिका में रिपॉजिटरी की मूल शाखा पर पा सकते हैं।
प्रत्येक ऐप समान चरणों का पालन करता है।
Subscriber
वस्तुओं को कॉन्फ़िगर करें (यह हेलफ्रेड-बूटस्ट्रैप.लुआ में किया जा सकता है लेकिन हम चीजों को साफ-सुथरा रखने के लिए अलग फाइलें बनाएंगे। हम वस्तु निर्माण को हवा बनाने के लिए कारखाने के तरीकों का लाभ उठाएंगे)
हेलफायर कुछ इस तरह काम करता है:
ऐप को इनिशियलाइज़ करें
यह पहले से ही hellfred-bootstrap.lua
में पूर्व-कॉन्फ़िगरेशन के साथ किया जा चुका है। हॉटकी को किसी और चीज़ में बदलने के लिए स्वतंत्र महसूस करें।
https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541
Subscriber
ऑब्जेक्ट कॉन्फ़िगर करें
triggers
और callbacks
उपयोगकर्ता-परिभाषित हैं और सरल कॉन्फ़िगरेशन ऑब्जेक्ट्स के अंदर लिपटे हुए हैं। ये ऑब्जेक्ट, संबंधित ऐप के साथ पंजीकृत होने पर subscribers
के रूप में कार्य करते हैं और जब भी ऐप के अंदर कुछ महत्वपूर्ण होता है तो अधिसूचित किया जाता है।
हेलफायर के लिए सब्सक्राइबर ऑब्जेक्ट इस संरचना का अनुसरण करते हैं:
https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a
नोट : यदि fireIfModeIs
परिभाषित नहीं है, तो Hellfire डिफ़ॉल्ट रूप से ANY
मोड सेट करेगा, जिसका अर्थ है कि ट्रिगर होने पर कॉलबैक किसी भी मोड में सक्रिय हो जाएगा।
यदि यह मौजूद नहीं है तो निम्न निर्देशिका संरचना बनाएँ: hellfred/extend/basics
।
फिर basics
निर्देशिका के अंदर एक नई लुआ फ़ाइल बनाएँ जिसे कहा जाता है hellfirepack-applications.lua
- फ़ाइल नामकरण सम्मेलन का कोई महत्व नहीं है।
यह कोड जोड़ें:
https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2
ऐप के साथ सब्सक्राइबर्स को रजिस्टर करें
वापस hellfred-bootstrap.lua
में, हमें उन ग्राहकों के पैक को पंजीकृत करने की आवश्यकता है जिन्हें हमने अभी कॉन्फ़िगर किया है।
https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a
ऐप चलाएं
⌘
दर्ज करें ( shift
+ + h
) और कोई भी नया ट्रिगर टाइप करें:
f
फाइंडर ऐप खोलने के लिए, t
टर्मिनल खोलने के लिए या n
नोट्स ऐप खोलने के लिए।
Subscriber
ऑब्जेक्ट कॉन्फ़िगर करें
ठीक है, अब हमारे कॉमन लिंक्स url लॉन्चर के लिए सब्सक्राइबर्स को कॉन्फ़िगर करें। hellfred/extend/basics
में एक नई लुआ फ़ाइल बनाएं जिसे hellfirepack-common-links.lua
कहा जाता है
यह कोड जोड़ें:
https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1
ऐप के साथ सब्सक्राइबर्स को रजिस्टर करें
वापस hellfred-bootstrap.lua
में, हमें उन ग्राहकों के पैक को पंजीकृत करने की आवश्यकता है जिन्हें हमने अभी कॉन्फ़िगर किया है।
https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060
ऐप चलाएं
⌘
( shift
+ + h
) दर्ज करें और कोई भी नया ट्रिगर टाइप करें: t
, g
, h
या s
।
डटे रहो! क्या आपने देखा कि ट्रिगर टाइप करने से टर्मिनल लॉन्च हुआ और साथ ही t
वेबसाइट भी खुल गई ? शायद हम ऐसा नहीं होना चाहते हैं। आइए हेलफायर के मोड फीचर का लाभ उठाएं।
मोड एक ही ट्रिगर को अलग-अलग संदर्भों में अलग-अलग व्यवहार करने का एक तरीका प्रदान करते हैं।
डिफ़ॉल्ट रूप से, Hellfire नामक मोड में आरंभ होता है...आपने अनुमान लगाया... ' डिफ़ॉल्ट ' मोड।
हम Hellfire के साथ उपयोग करने के लिए कुछ कस्टम मोड कॉन्फ़िगर कर सकते हैं ताकि ट्रिगर अलग-अलग मोड के तहत अलग-अलग व्यवहार कर सकें - या यदि आप चाहें तो 'नेमस्पेस'।
इस प्रवाह पर विचार करें:
hellfred/extend/basics
में एक नई लुआ फ़ाइल बनाएं जिसे हेलफायर hellfire-modes-extended.lua
कहा जाता है।
सामान्य लिंक ट्रिगर करने के लिए हम एक अलग मोड तैयार करेंगे।
यह कोड जोड़ें:
https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e
हमें इस फ़ाइल को hellfred-bootstrap.lua
में आवश्यकता होगी, इसलिए यह है
निम्नलिखित कोड को hellfred-bootstrap.lua
में जोड़ें (मेटाडेटा अनुभाग के अंतर्गत, फ़ाइल के शीर्ष की ओर)
https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f
अब हमें मोड को हमारे नए कॉमन लिंक्स मोड में बदलने का एक तरीका चाहिए।
हम c
के कुंजी अनुक्रम का उपयोग करेंगे जिसके बाद l
होगा।
हमें डिफ़ॉल्ट मोड पर वापस जाने में सक्षम होने की भी आवश्यकता है
हम सेमी-कोलन का प्रयोग करेंगे ;
एक ट्रिगर के रूप में।
वो अगला…
मोड परिवर्तन को ट्रिगर करने वाले Subscriber
ऑब्जेक्ट को कॉन्फ़िगर करें
hellfred/extend/basics
में एक नई लुआ फ़ाइल बनाएं जिसे हेलफायर hellfire-mode-triggers.lua
कहा जाता है
यह कोड जोड़ें:
https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12
ऐप के साथ सब्सक्राइबर्स को रजिस्टर करें
hellfred-bootstrap.lua
में, नए मोड ट्रिगर के लिए ग्राहकों को पंजीकृत करें:
https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1
मोड के बीच टेस्ट स्विचिंग
अब ⌘
( shift
+ + h
) दर्ज करें और दो मोड के बीच टॉगल करें। मोड एफटीडब्ल्यू!
मोड में काम करने के लिए ग्राहकों को अपडेट करें
अब हमें अपने सब्सक्राइबर्स को hellfirepack-common-links.lua
में अपडेट करने की जरूरत है ताकि कॉमन लिंक्स मोड के सक्रिय होने पर ही वे सक्रिय हों।
हम फ़ैक्टरी पद्धति को अपडेट करेंगे और nil
fireIfModeIs
बजाय _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS
को असाइन करेंगे।
अद्यतन विधि इस तरह दिखनी चाहिए:
https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757
हमें अपने ग्राहकों को भी hellfirepack-applications.lua
में अपडेट करने की जरूरत है ताकि वे तभी सक्रिय हों जब हेलफायर का डिफॉल्ट मोड सक्रिय हो।
अद्यतन विधि इस तरह दिखनी चाहिए:
https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0
ऐप चलाएं
⌘
दर्ज करें ( shift
+ + h
) और मोड के बीच टॉगल करें। ट्रिगर t
अब उस मोड के आधार पर अलग तरह से व्यवहार करता है जिसमें हेलफायर है। अरे हाँ!
हेलप्रॉम्प्ट इस प्रकार कार्य करता है:
ऐप को इनिशियलाइज़ करें
यह पहले से ही hellfred-bootstrap.lua
में पूर्व-कॉन्फ़िगरेशन के साथ किया जा चुका है। हॉटकी को किसी और चीज़ में बदलने के लिए स्वतंत्र महसूस करें।
https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4
Subscriber
ऑब्जेक्ट कॉन्फ़िगर करें
Hellprompt के सदस्य Hellfire के लिए एक अलग संरचना लेते हैं।
इस संरचना पर विचार करें:
https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df
नोट : यदि filter
परिभाषित नहीं है, तो कॉलबैक हमेशा निष्पादित किया जाएगा।
hellfred/extend/basics
में एक नई लुआ फ़ाइल बनाएं जिसे hellpromptpack-commands.lua
कहा जाता है
यह कोड जोड़ें:
https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f
ऐप के साथ सब्सक्राइबर्स को रजिस्टर करें
वापस hellfred-bootstrap.lua
में, हमें उन ग्राहकों के पैक को पंजीकृत करने की आवश्यकता है जिन्हें हमने अभी कॉन्फ़िगर किया है।
https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61
ऐप चलाएं
हेलप्रॉम्प्ट ( shift
+ ^
+ h
) दर्ज करें और उन आदेशों का परीक्षण करें। नरक!
प्रयत्न:
browse news
तथा:
open terminal
हेलफज इस तरह काम करता है:
ऐप को इनिशियलाइज़ करें
यह पहले से ही hellfred-bootstrap.lua
में पूर्व-कॉन्फ़िगरेशन के साथ किया जा चुका है। हॉटकी को किसी और चीज़ में बदलने के लिए स्वतंत्र महसूस करें।
https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187
Subscriber
ऑब्जेक्ट कॉन्फ़िगर करें
Hellfuzz के सदस्य अन्य ऐप्स के लिए एक अलग संरचना लेते हैं।
इस संरचना पर विचार करें:
https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208
नोट : यदि nextChoicesFn
परिभाषित किया गया है तो callback
को अनदेखा कर दिया जाता है।
चीजों को आसान बनाने के लिए हम Hellfuzz के लिए सब्सक्राइबर्स को कॉन्फिगर करने के लिए एक हेल्पर मेथड का इस्तेमाल करेंगे
hellfred/extend/basics
में एक नई लुआ फ़ाइल बनाएं जिसे hellfuzzpack-apps-and-links.lua
कहा जाता है
यह कोड जोड़ें:
https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a
ऐप के साथ सब्सक्राइबर्स को रजिस्टर करें
hellfred-bootstrap.lua
में, ग्राहकों के पैक को पंजीकृत करें।
https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273
ऐप चलाएं
⌥
दर्ज करें ( shift
+ + h
) और एक कमांड टाइप करें। उदाहरण के लिए 'टर्मिनल' शब्द टाइप करना शुरू करें, आप देखेंगे कि टर्मिनल खोलने का विकल्प हाइलाइट किया गया है। enter
दबाएं और टर्मिनल खुल जाता है। धूआंधार!
लिंक लॉन्चर (नेस्टेड पसंद सेट का उपयोग करके)
Hellfuzz की एक उपयोगी विशेषता विकल्पों के सेट को घोंसला बनाने की क्षमता है।
इस अद्यतन प्रवाह पर विचार करें:
आइए इसे अपने लिंक लॉन्चर कार्य पर आज़माएं, हम निम्नलिखित पदानुक्रमित पसंद संरचना बनाएंगे:
hellfuzzpack-apps-and-links.lua
में कोड को निम्नलिखित में अपडेट करें:
https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61
अब ⌥
दर्ज करें ( shift
+ + h
) और ' कॉमन लिंक्स ' खोजना शुरू करें। आप ' सामान्य लिंक ' विकल्प का चयन कर सकते हैं, और सामान्य commonLinkNextChoices
से विकल्पों का उप-सेट प्रदर्शित किया जाएगा और अस्पष्ट खोज की जा सकती है। किसी भी लिंक विकल्प को चुनने पर संबंधित यूआरएल खुल जाएगा।
extend
शाखा की जाँच करके रेपो पर आगामी हेलफ्रेड प्रयोग और विस्तार देखें।
git checkout extend
अब जाओ नरक बढ़ाओ \m/