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を作ってみると良さそうです。


サイト上のSVG画像を簡単に保存できるChrome拡張機能「svg-grabber」
ターミナル起動時のLast login表示を無効にする方法
Karabiner-Elementsの独自ルールの作成方法
単語登録はルールをキッチリ決めるよりも、とにかく登録・改善を繰り返した方が良さそう
AlfredでURLをBit.lyで短縮URLにするWorkflow「Bit.ly URL Shorten」
MacのターミナルからVisual Studio Codeを開く方法
Path Finderがバージョン9.2にアップデート!ロックダウン期間中は無料トライアル期間が30日から60日に延長!
ウェブサイト内の動画キャプチャから保存して共有までをスムーズに行うChrome拡張機能「Screencastify」
Google Chromeに「タブを検索」機能が追加!開いているタブや最近閉じたタブから検索が可能に!
Alfredのランチャー(メインウインドウ)が邪魔で後ろが隠れてしまうときの対処法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」