スピードが欲しかった。スピード た。 が必要でし このクリックのすべて、このすべての検索、すべての反復的な思考と精神的なオーバーヘッドは、実際に仕事を成し遂げるのに切り込んでいました. 私はロボットが私のために仕事をする必要がありました。 AutoHotkey をいじくり回していた Windows で何年も過ごした後、最近 macOS に移行しました。 親戚の Mac 初心者として、私は や と一緒にハッキングを始め、Hammerspoon の形ですぐに慰めを見つけました。 Alfred Karabiner あ、 。はい、Hammerspoon のコーディングと拡張を行う非常に賢い人々からコードとモジュール (「Spoons」) を消費しまし 。 ハンマースプーン た それから、ルアがいました。 Luaのスキルアップがしたかった。 そうするための最良の方法は? 何かをコーディングします。 上に構築された 3 つのミニアプリのコレクションである 入ります 毎日のワークフローにショートカットをプログラムすることで、タスクを自動化し、生産性を高め、時間の浪費をなくすことができます。 に Hellfred ハンマースプーン これは、反復的で時間のかかるタスクをキー シーケンス、コマンド、または検索可能なテキストにマッピングする方法です。 TL;DR ブランチを します。 それで、あなたは速射が欲しいですか?以下のインストールとチュートリアルのセクションにスキップするか、 レポをダウンロードする basics checkout git checkout basics アプリ ヘルファイア クイックファイア、モードベース、ホットキーからアクションへのマッピング ユーティリティ。 単一のキー トリガーとキー コード シーケンスをトリガーとしてサポートします。 トリガーとして使用する修飾キーを含む、キーボード上の事実上すべてのキーを公開します。 モードを使用すると、同じトリガーが異なるコンテキストで異なる動作をすることができます。 英語でお願いします? 文字または一連の文字を入力すると、特定の機能が実行されますが、特定のモードにいる場合のみです。 Ok。多分例? と入力して関数 を実行すると (ただし、デフォルト モードの場合のみ) c launchGoogleChromeApp の後に を入力すると、関数 が実行されます (これもデフォルト モードで実行されます)。 w m changeToWindowManagerMode と入力して関数 を実行すると (WindowManager モードで) c centerWindowOnScreen ヘルファズ 選択からアクションへのマッピングを備えたファジー検索チューザー ユーティリティ。 マルチレベル (ネストされた) 選択セットをサポートします。 英語でお願いします? 選択肢のリストを検索して 1 つを選択すると、特定の機能が実行されます。私の選択にサブチョイスがある場合 ( と考えてください)、それらを表示して検索できるようにします。 parent => children Ok。多分例? 次の構造があるとします。 「 」と入力すると、「 」という選択肢が強調表示されます。このオプションを選択すると、関数 が実行されます。 goog Open Google openGoogleInBrowser または、「 」と入力すると、「 」という選択肢が強調表示されます。このオプションを選択すると、現在の選択肢が 、 、および ( の選択肢のサブセット) に置き換えられます app Launch Apps Terminal Notes Calendar Launch Apps をあいまい検索して選択すると、Hellfuzz は選択したアプリで を実行します。 それら launchOrOpenApp ヘルプロンプト 基本的な文字列マッチングをサポートするコマンドラインのようなユーティリティ。 英語でお願いします? コマンドを入力して送信すると、一致する文字列パターンがないかコマンドを検査し、そのコマンドに関連する関数を実行します。 Ok。多分例? コマンド ' ' を して Enter キーを押すと、 (コマンドは ' ' で始まる必要があります) と動作 (' ' に関連付けられた open app など) を使用して任意の関数を実行します。アプリ。 open notes enter filter open notes 「 」と してEnterキーを押すと、リンクを開くのに適したフィルター(たとえば、コマンドは「 」という単語で始まる)と動作(「 」に関連付けられたURLを開く)を使用して任意の関数を実行します。 browse github enter browse github インストール: ファイアスターター をダウンロードしてインストールする ハンマースプーン Hellfred をインストールします。リポジトリを ` ` ディレクトリにクローンします。 ~/.hammerspoon git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon ブートストラップ: ライトアップ Hellfred 用の があり、セットアップが事前に構成されています。 Hammerspoon の ファイルで参照してみましょう。 ブートストラップ ファイル init.lua https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0 ファイルを保存して構成をリロードします (または、時間を節約して ) ファンシーリロード 箱の中は何ですか?事前設定を試す すぐに使用できる 3 つの Hellfred アプリが用意されており、クイックスタートの例で事前構成されています。すべてが配線され、発火していることを確認するためにテストしてみましょう。 ヘルファイアを試す ホットキー + + で を開きます shift ⌘ h Hellfire 文字 を入力します c Hellfred のリポジトリがブラウザーで開きます。 ヘルファズを試す ホットキー + + で を開きます shift ⌥ h Hellfuzz 「 」という単語を入力してください wiki これにより、「 」オプションが強調表示されます Hellfred wiki を開く Enter キーを押すと、ブラウザで の wiki が開きます enter ヘルプロンプトを試す ホットキー + + で を開きます shift ^ h Hellprompt 「 」と入力してください オープンコード キーを押すと、Hellfred のコード リポジトリがブラウザーで開きます。 enter 、 、および が実現するのは、 または を または にマッピングする です。他のものよりも特定のユースケース。 Hellfire Hellfuzz Hellprompt トリガー 入力 アクション 動作 if-this-then-that チュートリアル: 基本的なセットアップ 何をプログラミングするか それでは、熱を上げて、もう少し便利なものを構成しましょう。 をプログラムして、次のシナリオを解決し、物事のこつをつかむことができるようにします。 各アプリ シンプルなアプリランチャー よくアクセスするリンクの URL ランチャー このチュートリアルの最終的なファイルは、リポジトリの ブランチの ディレクトリにあります。 basics hellfred/extend/basics 注意すべきパターン 各アプリは同様の一連の手順に従います。 ホットキー バインディングでアプリを初期化する ` ` オブジェクトを構成します (これは で行うことができますが、物事をきれいに保つために別のファイルを作成します。ファクトリ メソッドを活用して、オブジェクトの作成を簡単にします) Subscriber hellfred-bootstrap.lua サブスクライバーをアプリに登録する アプリを実行するためのホットキー 時間のかかるタスクを破棄する ヘルファイアのセットアップ ヘルファイアは次のように動作します: アプリケーションランチャー アプリを初期化する これは、 の事前設定ですでに行われています。ホットキーを別のものに自由に変更してください。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541 Subscriber オブジェクトの 構成 と はユーザー定義であり、単純な構成オブジェクト内にラップされます。これらのオブジェクトは、それぞれのアプリに登録されると として機能し、アプリ内で何か重要なことが発生するたびに通知されます。 triggers callbacks subscribers Hellfire のサブスクライバー オブジェクトは、次の構造に従います。 https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a : が定義されていない場合、Hellfire はデフォルトで モードを設定します。つまり、コールバックがトリガーされると、どのモードでも起動します。 注 fireIfModeIs ANY 次のディレクトリ構造が存在しない場合は作成します: 。 hellfred/extend/basics 次に、 ディレクトリ内に という名前の新しい Lua ファイルを作成します。ファイルの命名規則は重要ではありません。 basics hellfirepack-applications.lua 次のコードを追加します。 https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2 サブスクライバーをアプリに登録する に戻り、設定したサブスクライバーのパックを登録する必要があります。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a アプリを実行する Hellfire ( + + ) を入力し、新しいトリガーのいずれかを入力します。 で Finder アプリを開くか、 でターミナルを開くか、 で Notes アプリを開きます。 shift ⌘ h f t n リンクランチャー(ヘルファイアモード使用) Subscriber オブジェクトの 構成 それでは、Common Links url ランチャーのサブスクライバーを構成しましょう。 に、 という名前の新しい Lua ファイルを作成します。 hellfred/extend/basics hellfirepack-common-links.lua 次のコードを追加します。 https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1 サブスクライバーをアプリに登録する に戻り、設定したサブスクライバーのパックを登録する必要があります。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060 アプリを実行する Hellfire ( + + ) を入力し、新しいトリガーのいずれかを入力します: 、 、 または 。 shift ⌘ h t g h s トリガーを入力すると、 起動し、 の Web サイトが開くことに ましたか?それはおそらく私たちが望んでいることではありません。 を活かしましょう。 ちょっとまって! t が TechCrunch 気づき ヘルファイアモードの 特徴 モードは、同じトリガーが異なるコンテキストで異なる動作をする方法を提供します。 デフォルトでは、Hellfire は「 」モードと呼ばれるモードで初期化されます。 Hellfire で使用するいくつかのカスタム モードを構成して、異なるモード (必要に応じて「名前空間」) でトリガーが異なる動作をするようにすることができます。 デフォルト 次のフローを検討してください。 に、 という名前の新しい Lua ファイルを作成します。 hellfred/extend/basics hellfire-modes-extended.lua を起動するための別のモードを作成します。 一般的なリンク トリガー 次のコードを追加します。 https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e このファイルを で要求するので、 アクセス可能。 でも同じことを行い、アプリケーションの他の部分で Hellfire の組み込みモードにアクセスできるようにします。 hellfred-bootstrap.lua グローバルに Hellfire Modes ファイル 次のコードを に追加します (メタデータ セクションの下、ファイルの上部に向かって) hellfred-bootstrap.lua https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f ここで、モードを新しい Common Links モードに変更する方法が必要です。 の後に が続くキーシーケンスを使用します。 c l モードに戻せるようにする必要もあります デフォルト セミコロンを使用します トリガーとして。 ; それは次の… オブジェクトを する モード変更をトリガーする Subscriber 構成 に、 という名前の新しい Lua ファイルを作成します。 hellfred/extend/basics hellfire-mode-triggers.lua 次のコードを追加します。 https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12 サブスクライバーをアプリに登録する で、新しいモード トリガーのサブスクライバーを登録します。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1 モードの切り替えテスト Hellfire ( + + ) に入り、2 つのモードを切り替えます。 shift ⌘ h モード FTW! モードで動作するようにサブスクライバーを更新する 次に、 サブスクライバーを更新して、 がアクティブな場合にのみサブスクライバーが起動するようにする必要があります。 hellfirepack-common-links.lua Common Links モード ファクトリ メソッドを更新し、 を の代わりに に割り当てます。 fireIfModeIs nil _G.HELLFIRE_MODES_EXTENDED.COMMON_LINKS 更新されたメソッドは次のようになります。 https://gist.github.com/braddevelop/152a16f87efe55f08e7ed7139225f757 また、 がアクティブな場合にのみ起動するように、 のサブスクライバーを更新する必要があります。 Hellfire のデフォルト モード hellfirepack-applications.lua 更新されたメソッドは次のようになります。 https://gist.github.com/braddevelop/8ed8dea04397b0471299c8c89f8a9ae0 アプリを実行する Hellfire ( + + ) に入り、モードを切り替えます。トリガー は、 のモードに応じて異なる動作をするようになりました。 shift ⌘ h t Hellfire ヘルプロンプトのセットアップ Hellprompt の機能は次のとおりです。 アプリケーションと URL ランチャー アプリを初期化する これは、 の事前設定ですでに行われています。ホットキーを別のものに自由に変更してください。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/11e9b4871182f90c57313ab6ffa939a4 Subscriber オブジェクトの 構成 Hellprompt のサブスクライバーは、Hellfire のサブスクライバーとは異なる構造をとります。 次の構造を検討してください。 https://gist.github.com/braddevelop/c247d1d1429234c96f3e8c7d8a0b48df : が定義されていない場合、コールバックは常に実行されます。 注 filter に、 という名前の新しい Lua ファイルを作成します。 hellfred/extend/basics hellpromptpack-commands.lua 次のコードを追加します。 https://gist.github.com/braddevelop/6b18219f83fcf69826083d5dfce5d06f サブスクライバーをアプリに登録する に戻り、設定したサブスクライバーのパックを登録する必要があります。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/f1b75646b7330fcb1c993a5737fd7d61 Hellprompt ( + + ) を入力して、これらのコマンドをテストします。 アプリを実行する shift ^ h インフェルノ! 試す: browse news と: open terminal ヘルファズのセットアップ これが Hellfuzz の仕組みです。 アプリケーションランチャー アプリを初期化する これは、 の事前設定ですでに行われています。ホットキーを別のものに自由に変更してください。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/b18f575ec347503628e7457217b6e187 Subscriber オブジェクトの 構成 Hellfuzz のサブスクライバーは、他のアプリとは異なる構造をとります。 次の構造を検討してください。 https://gist.github.com/braddevelop/56e9c22c6f921575637c73d60920d208 : が定義されている場合、 は無視されます。 注 nextChoicesFn callback 簡単にするために、ヘルパー メソッドを使用して Hellfuzz のサブスクライバーを構成します。 に、 という名前の新しい Lua ファイルを作成します。 hellfred/extend/basics hellfuzzpack-apps-and-links.lua 次のコードを追加します。 https://gist.github.com/braddevelop/3564ad1ec286a30eca1abb94cfd6a69a サブスクライバーをアプリに登録する で、サブスクライバーのパックを登録します。 hellfred-bootstrap.lua https://gist.github.com/braddevelop/a90f9d5635377d74b145a892845c8273 アプリを実行する Hellfuzz ( + + ) と入力し、コマンドを入力します。たとえば、 という単語を入力し始めると、ターミナルを開くオプションが強調表示されます。 を押すと、 が開きます。 shift ⌥ h 「ターミナル」 enter ターミナル 熱い喫煙! Link Launcher (ネストされた選択肢セットを使用) Hellfuzz の便利な機能は、一連の選択肢をネストできることです。 次の更新されたフローを検討してください。 タスクでこれを試してみましょう。次の階層的な選択構造を作成します。 Link Launcher のコードを次のように更新します。 hellfuzzpack-apps-and-links.lua https://gist.github.com/braddevelop/384b0ae9629faca95d5d4cb519cd8e61 ここで Hellfuzz ( + + ) と入力し、「 」の検索を開始します。 「 」の選択肢を選択すると、 からの選択肢のサブセットが表示され、あいまい検索が可能になります。リンク オプションのいずれかを選択すると、それぞれの URL が開きます。 shift ⌥ h Common links Common links commonLinkNextChoices エクステンション: 火に燃料を追加します。 ブランチをチェックして、レポでの今後の Hellfred の実験と拡張機能に注目してください。 extend git checkout extend さあ、地獄に行きましょう \m/