i3 configからスクリプトを実行する

i3 configからスクリプトを実行する

質問:

私は i3-wm を使用しており、Mod3 をホットキーとして動作させています。次の内容があります./config/i3/config:

#This command works
  bindsym Mod3+f exec "firefox" 

#This doesn't work nor do my other scripts
  bindsym Mod3+w exec "openBrowser" 

これらのコマンドは両方とも bash から実行すると正常に動作しますが、ホットキーで実行されるのは 'firefox' コマンドのみです。独自のスクリプトを実行しても動作しません。

さらなる詳細:

/opt/bin/openBrowser は私のパス内にあるスクリプトです。また、次のことも試しました:

#This command works
  bindsym Mod3+f exec /opt/bin/openBrowser

他のスクリプトも試しましたが、いずれも i3 で呼び出されると機能しません。したがって、スクリプトの問題ではないと判断しました。

また、bash で Mod3+w を実行するとカーソルが点滅しますが、Mod3+[未設定のキー] を実行するとキーの値が画面に書き込まれることにも気付きました。つまり、i3 は少なくとも関数を実行しようとしているようです。

答え1

ご説明いただいた問題を再現しようとしました。 2 つの i3 構成ファイルが同時に存在していたことがわかりました~/.config/i3/config~/.i3/config

私の場合、編集が優先さ~/.config/i3/configれたため、編集は効果がありませんでした~/.i3/config

可能性は低いですが、複数の設定ファイルがあり、間違ったファイルを編集している可能性があります。

答え2

コマンドexecは、指定したコマンドをシェルに渡すことでアプリケーションを起動します。これは、プログラムが で検索されることを意味します$PATH。デフォルトでは$PATH、 は通常含まれません/opt/bin。たとえば、 my は次のようになります。

andreatsh@debian:~ 11:28 > echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

/opt/binパスに以下を追加してみてください~/.bashrc:

export PATH=$PATH:/opt

いくつかテストをしてみたところ、問題は解決しました。今:

bindsym Mod3+w exec somescript
bindsym Mod3+w exec /opt/bin/somescript

同じ動作があり、スクリプトは機能します。

関連情報