paint-brush
Hellfred または: macOS を自動化し、地獄のように生産的になる方法を学んだ方法@bradblundell
2,958 測定値
2,958 測定値

Hellfred または: macOS を自動化し、地獄のように生産的になる方法を学んだ方法

Brad Blundell9m2022/08/12
Read on Terminal Reader
Read this story w/o Javascript

長すぎる; 読むには

Hellfred アプリは Hammerspoon の上に構築されているため、毎日のワークフローにショートカットをプログラミングすることでタスクを自動化し、生産性を高めることができます。

Companies Mentioned

Mention Thumbnail
Mention Thumbnail

Coin Mentioned

Mention Thumbnail
featured image - Hellfred または: macOS を自動化し、地獄のように生産的になる方法を学んだ方法
Brad Blundell HackerNoon profile picture


スピードが欲しかった。スピードが必要でした。


このクリックのすべて、このすべての検索、すべての反復的な思考と精神的なオーバーヘッドは、実際に仕事を成し遂げるのに切り込んでいました.


私はロボットが私のために仕事をする必要がありました。


AutoHotkey をいじくり回していた Windows で何年も過ごした後、最近 macOS に移行しました。


親戚の Mac 初心者として、私はAlfredKarabinerと一緒にハッキングを始め、Hammerspoon の形ですぐに慰めを見つけました。


あ、ハンマースプーン。はい、Hammerspoon のコーディングと拡張を行う非常に賢い人々からコードとモジュール (「Spoons」) を消費しまし


それから、ルアがいました。 Luaのスキルアップがしたかった。
そうするための最良の方法は?

何かをコーディングします。




上に構築された 3 つのミニアプリのコレクションであるHellfred入りますハンマースプーン毎日のワークフローにショートカットをプログラムすることで、タスクを自動化し、生産性を高め、時間の浪費をなくすことができます。


これは、反復的で時間のかかるタスクをキー シーケンス、コマンド、または検索可能なテキストにマッピングする方法です。



ヘルファズ。あいまい検索、選択から行動へのマッパー。


ヘルファイア。 Key-to-Behavior マッパー。


ヘルプロンプト。コマンドから動作へのマッパー。


TL;DR

それで、あなたは速射が欲しいですか?以下のインストールとチュートリアルのセクションにスキップするか、レポをダウンロードするbasicsブランチをcheckoutします。


 git checkout basics



アプリ

ヘルファイア

クイックファイア、モードベース、ホットキーからアクションへのマッピング ユーティリティ。

  • 単一のキー トリガーとキー コード シーケンスをトリガーとしてサポートします。
  • トリガーとして使用する修飾キーを含む、キーボード上の事実上すべてのキーを公開します。
  • モードを使用すると、同じトリガーが異なるコンテキストで異なる動作をすることができます。


英語でお願いします?

文字または一連の文字を入力すると、特定の機能が実行されますが、特定のモードにいる場合のみです。


Ok。多分例?

  • cと入力して関数launchGoogleChromeAppを実行すると (ただし、デフォルト モードの場合のみ)
  • wの後にmを入力すると、関数changeToWindowManagerModeが実行されます (これもデフォルト モードで実行されます)。
  • cと入力して関数centerWindowOnScreenを実行すると (WindowManager モードで)


ヘルファズ

選択からアクションへのマッピングを備えたファジー検索チューザー ユーティリティ。

  • マルチレベル (ネストされた) 選択セットをサポートします。


英語でお願いします?

選択肢のリストを検索して 1 つを選択すると、特定の機能が実行されます。私の選択にサブチョイスがある場合 ( parent => childrenと考えてください)、それらを表示して検索できるようにします。


Ok。多分例?

次の構造があるとします。

  • goog 」と入力すると、「 Open Google 」という選択肢が強調表示されます。このオプションを選択すると、関数openGoogleInBrowserが実行されます。
  • または、「 app 」と入力すると、「 Launch Apps 」という選択肢が強調表示されます。このオプションを選択すると、現在の選択肢がTerminalNotes 、およびCalendar ( Launch Appsの選択肢のサブセット) に置き換えられます
  • それらをあいまい検索して選択すると、Hellfuzz は選択したアプリでlaunchOrOpenAppを実行します。


ヘルプロンプト

基本的な文字列マッチングをサポートするコマンドラインのようなユーティリティ。


英語でお願いします?

コマンドを入力して送信すると、一致する文字列パターンがないかコマンドを検査し、そのコマンドに関連する関数を実行します。


Ok。多分例?

  • コマンド ' open notes ' をenterして Enter キーを押すと、 filter (コマンドは ' open ' で始まる必要があります) と動作 (' notes ' に関連付けられた open app など) を使用して任意の関数を実行します。アプリ。

  • browse github 」とenterしてEnterキーを押すと、リンクを開くのに適したフィルター(たとえば、コマンドは「 browse 」という単語で始まる)と動作(「 github 」に関連付けられたURLを開く)を使用して任意の関数を実行します。



インストール: ファイアスターター

  1. ハンマースプーンをダウンロードしてインストールする
  2. Hellfred をインストールします。リポジトリを ` ~/.hammerspoon ` ディレクトリにクローンします。


 git clone https://github.com/braddevelop/hellfred.git ~/.hammerspoon

ブートストラップ: ライトアップ

Hellfred 用のブートストラップファイルがあり、セットアップが事前に構成されています。 Hammerspoon のinit.luaファイルで参照してみましょう。

https://gist.github.com/braddevelop/bac92b6797c087ca42f9363aab4972e0

ファイルを保存して構成をリロードします (または、時間を節約してファンシーリロード)


箱の中は何ですか?事前設定を試す

すぐに使用できる 3 つの Hellfred アプリが用意されており、クイックスタートの例で事前構成されています。すべてが配線され、発火していることを確認するためにテストしてみましょう。

ヘルファイアを試す

  • ホットキーshift + + hHellfireを開きます
  • 文字cを入力します
  • Hellfred のリポジトリがブラウザーで開きます。

ヘルファズを試す

  • ホットキーshift + + hHellfuzzを開きます
  • wiki 」という単語を入力してください
  • これにより、「 Hellfred wiki を開く」オプションが強調表示されます
  • Enter キーを押すと、ブラウザでenterの wiki が開きます

ヘルプロンプトを試す

  • ホットキーshift + ^ + hHellpromptを開きます
  • オープンコード」と入力してください
  • enterキーを押すと、Hellfred のコード リポジトリがブラウザーで開きます。



HellfireHellfuzz 、およびHellpromptが実現するのは、トリガーまたは入力アクションまたは動作にマッピングするif-this-then-thatです。他のものよりも特定のユースケース。



チュートリアル: 基本的なセットアップ

何をプログラミングするか

それでは、熱を上げて、もう少し便利なものを構成しましょう。各アプリをプログラムして、次のシナリオを解決し、物事のこつをつかむことができるようにします。

  1. シンプルなアプリランチャー
  2. よくアクセスするリンクの URL ランチャー


このチュートリアルの最終的なファイルは、リポジトリのbasicsブランチのhellfred/extend/basicsディレクトリにあります。


注意すべきパターン

各アプリは同様の一連の手順に従います。

  1. ホットキー バインディングでアプリを初期化する
  2. ` Subscriber ` オブジェクトを構成します (これはhellfred-bootstrap.luaで行うことができますが、物事をきれいに保つために別のファイルを作成します。ファクトリ メソッドを活用して、オブジェクトの作成を簡単にします)
  3. サブスクライバーをアプリに登録する
  4. アプリを実行するためのホットキー
  5. 時間のかかるタスクを破棄する


ヘルファイアのセットアップ

ヘルファイアは次のように動作します:


アプリケーションランチャー

アプリを初期化する

これは、 hellfred-bootstrap.luaの事前設定ですでに行われています。ホットキーを別のものに自由に変更してください。
https://gist.github.com/braddevelop/49c7e7c7c62350d93e7798ff2bf40541


Subscriberオブジェクトの構成

triggerscallbacksはユーザー定義であり、単純な構成オブジェクト内にラップされます。これらのオブジェクトは、それぞれのアプリに登録されるとsubscribersとして機能し、アプリ内で何か重要なことが発生するたびに通知されます。


Hellfire のサブスクライバー オブジェクトは、次の構造に従います。

https://gist.github.com/braddevelop/20c9c5b97a85a9a5c4cb924b511e494a

: fireIfModeIsが定義されていない場合、Hellfire はデフォルトでANYモードを設定します。つまり、コールバックがトリガーされると、どのモードでも起動します。


次のディレクトリ構造が存在しない場合は作成します: hellfred/extend/basics

次に、 basicsディレクトリ内にhellfirepack-applications.luaという名前の新しい Lua ファイルを作成します。ファイルの命名規則は重要ではありません。


次のコードを追加します。

https://gist.github.com/braddevelop/c12d37d64ce75b83a195666317a10aa2


サブスクライバーをアプリに登録する

hellfred-bootstrap.luaに戻り、設定したサブスクライバーのパックを登録する必要があります。

https://gist.github.com/braddevelop/2298469b805978062421f5a09d01d11a


アプリを実行する

Hellfire ( shift + + h ) を入力し、新しいトリガーのいずれかを入力します。
fで Finder アプリを開くか、 tでターミナルを開くか、 nで Notes アプリを開きます。


リンクランチャー(ヘルファイアモード使用)

Subscriberオブジェクトの構成

それでは、Common Links url ランチャーのサブスクライバーを構成しましょう。 hellfred/extend/basicsに、 hellfirepack-common-links.luaという名前の新しい Lua ファイルを作成します。


次のコードを追加します。

https://gist.github.com/braddevelop/7d637464f45d2d9a4641e365ad2f20a1


サブスクライバーをアプリに登録する

hellfred-bootstrap.luaに戻り、設定したサブスクライバーのパックを登録する必要があります。
https://gist.github.com/braddevelop/f0dafb518797620747044afbc20da060


アプリを実行する

Hellfire ( shift + + h ) を入力し、新しいトリガーのいずれかを入力します: tghまたはs


ちょっとまって!トリガーを入力すると、 t起動し、 TechCrunchの Web サイトが開くことに気づきましたか?それはおそらく私たちが望んでいることではありません。ヘルファイアモードの特徴を活かしましょう。


モードは、同じトリガーが異なるコンテキストで異なる動作をする方法を提供します。


デフォルトでは、Hellfire は「デフォルト」モードと呼ばれるモードで初期化されます。
Hellfire で使用するいくつかのカスタム モードを構成して、異なるモード (必要に応じて「名前空間」) でトリガーが異なる動作をするようにすることができます。


次のフローを検討してください。

hellfred/extend/basicsに、 hellfire-modes-extended.luaという名前の新しい Lua ファイルを作成します。

一般的なリンク トリガーを起動するための別のモードを作成します。


次のコードを追加します。

https://gist.github.com/braddevelop/1e3f345076a8cd5c4cdf843cad785c9e


このファイルをhellfred-bootstrap.luaで要求するので、グローバルにアクセス可能。 Hellfire Modes ファイルでも同じことを行い、アプリケーションの他の部分で Hellfire の組み込みモードにアクセスできるようにします。


次のコードをhellfred-bootstrap.luaに追加します (メタデータ セクションの下、ファイルの上部に向かって)

https://gist.github.com/braddevelop/04a4ec21aab06f50760d1082b216426f


ここで、モードを新しいCommon Links モードに変更する方法が必要です。

cの後にlが続くキーシーケンスを使用します。

デフォルトモードに戻せるようにする必要もあります

セミコロンを使用します;トリガーとして。


それは次の…


モード変更をトリガーするSubscriberオブジェクトを構成する

hellfred/extend/basicsに、 hellfire-mode-triggers.luaという名前の新しい Lua ファイルを作成します。


次のコードを追加します。

https://gist.github.com/braddevelop/283acacb9634590208c3b29b6039dc12


サブスクライバーをアプリに登録する

hellfred-bootstrap.luaで、新しいモード トリガーのサブスクライバーを登録します。

https://gist.github.com/braddevelop/8afc4a576d550415f22c3c6fbf4152f1


モードの切り替えテスト

Hellfire ( shift + + h ) に入り、2 つのモードを切り替えます。モード FTW!


モードで動作するようにサブスクライバーを更新する

次に、 hellfirepack-common-links.luaサブスクライバーを更新して、 Common Links モードがアクティブな場合にのみサブスクライバーが起動するようにする必要があります。

ファクトリ メソッドを更新し、 fireIfModeIsnilの代わりに_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が定義されていない場合、コールバックは常に実行されます。


hellfred/extend/basicsに、 hellpromptpack-commands.luaという名前の新しい 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 のサブスクライバーを構成します。


hellfred/extend/basicsに、 hellfuzzpack-apps-and-links.luaという名前の新しい 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 ( shift + + h ) と入力し、「 Common links 」の検索を開始します。 「 Common links 」の選択肢を選択すると、 commonLinkNextChoicesからの選択肢のサブセットが表示され、あいまい検索が可能になります。リンク オプションのいずれかを選択すると、それぞれの URL が開きます。



エクステンション: 火に燃料を追加します。

extendブランチをチェックして、レポでの今後の Hellfred の実験と拡張機能に注目してください。

 git checkout extend




さあ、地獄に行きましょう\m/