LoginSignup
0
1

More than 3 years have passed since last update.

Karabiner-Elements の shell_command は /usr/local/bin に PATH が通っていない

Posted at

Karabiner-Elements の Complex modifications では shell_command という項目があり、キー入力に対してコマンドを実行するような設定を記述することができる。

to event definition - karabiner.json Reference Manual

便利そうなのでさっそく試してみるも、なかなかうまく動かずに苦戦した。
設定ファイルを書き換えるたびに Karabiner-Elements を再起動しないといけなかったり、コマンド実行時のエラーを 2>$HOME/error.log みたくファイルに吐き出さないとデバッグできなかったりと、試行錯誤するのも楽ではない。

試行錯誤する中で少しハマったのが、 /usr/local/bin に PATH が通っていない件。

試しに、shell_command の実行時にどんな環境変数が設定されているのかを確認してみる。

{
    "type": "basic",
    "from": {
        "key_code": "open_bracket",
        "modifiers": {
            "mandatory": [
                "left_control",
                "left_shift"
            ]
        }
    },
    "to": {
        "shell_command": "env > $HOME/env.txt"
    }
}

このような割り当てを追加する設定を追記して、Karabiner-Elements を再起動する。

この例では control + shift + [ で環境変数がファイルに書き出される設定なので、そのキーを押してファイルを確認する。

~/env.txt
SHELL=/bin/zsh
USER=hoto
PATH=/usr/bin:/bin:/usr/sbin:/sbin
PWD=/
HOME=/Users/hoto

(他にもいくつかあったが代表的なもののみを表示)

これをみると /usr/local/bin に PATH が通っていないことがわかる。
このままだと Homebrew で入れたコマンドなどを使う場合はフルパスで指定しないと動かない。

"to": {
    "shell_command": "PATH=$PATH:/usr/local/bin oysttyer 'foooooooo!'"
}

最終的にはこんな感じで PATH を通すことにした。

あまりスマートな書き方ではない気がするので、もっといい方法があったら教えて欲しい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1