AlfredでKarabiner-Elementsのプロファイルを切り替えるWorkflowの作り方

自分のMacBook Proのキーボード配列はJIS配列なのですが、普段は外付けキーボードでUS配列を使用しています。
できればずっとUS配列にしたいのですが、出先にまで外付けキーボードを持ち運びするのも面倒なので、出先ではJIS配列になってしまいます。
そんな状況で、JIS配列の設定とUS配列の設定が一緒になると困るので、Karabiner-Elementsで「JIS」「US」とそれぞれのプロファイルを登録しておいて、切り替えて使うようにしています。

プロファイルはメニューバーから切り替えることもできるのですが、わざわざメニューバーを開くのも面倒です。

というわけで今回は、このKarabiner-Elementsのプロファイル切り替えをAlfredから行えるWorkflowを作成してみます。
ちなみに、Karabiner-Elementsを知らない方は過去に記事にしているので、そちらもご覧ください。
Workflowの作成
まずはAlfredの環境設定の[Workflows]のサイドバー下の「+」ボタンを押し、「Blank Workflow」をクリックして必要情報を入力します。
今回の場合はプロファイルを切り替えるWorkflowなので、名前は「Change Profile」としておきます。

キーワード部分の設定
黒い背景部分を右クリックして、[Inputs]→[List Filter]を選択します。
キーワードに関しては「Karabiner-Elements」の略でkeにします。
あとは下の「+」ボタンから選択項目を追加していきます。

今回は自分が登録している、「JIS」と「US」の2通りを登録しておきました。
条件分岐の設定
List Filterの右横にあるポッチをクリックして、[Utilities]→[Conditional]を選択します。
左から3つ目と、1番右の入力欄に、先ほどの「Arg」の値(「jis」と「us」)を入力ます。

プロファイル切り替え処理の設定
これで選択した項目に応じて、処理を分けられるようになったので、それぞれの条件分岐先で、[Actions]→[Terminal Command]をクリックします。
このWorkflow Objectではターミナルを開いてコマンドを実行できます(実行されるターミナルアプリは、[Features]→[Terminal]で設定してあるアプリが開きます)。

入力するコマンドは下記の通りです。最後にプロファイル名を入力する場所があるので、そこにはそれぞれ切り替えたいプロファイル名を入力します。
'/Library/Application Support/org.pqrs/Karabiner-Elements/bin/karabiner_cli' --select-profile 'プロファイル名'遅延処理とターミナル終了処理の設定
いまのままではターミナルが開きっぱなしになってしまうので、最後にターミナルを隠す処理を追加したいです(不要な方はスキップして構いません)。
まず、少し時間を空けてから実行しないと、ターミナルの処理中に隠されてしまうので、[Utilities]→[Delay]で遅延処理の設定をはさみます。
そのあと、[Actions]→[Launch Apps / Files]を選択して、実行されるターミナルアプリをドラッグして追加します。
このWorkflow Objectは本来、アプリを起動したりするものなのですが、右下の「Toggle visibility for apps」と書かれたチェックボックスがあるので、それにチェックを入れると、すでに開かれているアプリは非表示にしてくれます。

最終的に下記のようになっていれば完成です。

まとめ
今回は、Karabiner-Elementsの操作をAlfredで行うという少し変わったことをしましたが、ターミナルのコマンドでできることや、AppleScriptでできることはWorkflowでも比較的簡単に実行ができてしまいます。
また、List Filterを使えばAlfredっぽい「選択して実行」も簡単に作れます。
毎回やっている面倒なことが、もしターミナルコマンドで実行できるのであれば、Workflowを作ってみると良さそうです。


PC作業をする上でのちょっとした小技 #1日1Tips – 2019年6月
Path Finder 9.0.4からツールバーにカスタムファイルを追加できるように!ツールバーがさらに便利になる
Alfred 4のmacOS標準アプリとの連携機能(電卓・辞書・連絡先・iTunes)に関してのまとめ
Alfredのクリップボード機能に履歴がちゃんと残らない・別のテキストが残ってしまう場合の対処法
MacのSIPのオン・オフを切り替える方法
FontExplorer X Proのバージョン7がリリース!類似フォントの検索や自動分類などの機能が追加
iTerm2終了時に表示される確認ダイアログを非表示にする
Mac版GoodNotes 5でiPadで書いたノートをMacでも閲覧したり編集する
Alfredで現在開いているフォルダ内の画像をImageOptimで圧縮するWorkflowの作り方
Gmailのラベルとフィルタ機能を使ってメールを自動的に振り分ける
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理
かゆいところに手が届く「Supercharge」でMac環境を便利にカスタマイズする