pactl は i3 の root ではなくユーザー空間で動作します。

pactl は i3 の root ではなくユーザー空間で動作します。

私はi3wmを実行し、それに対するキーバインディングを設定しています。システムのボリュームを制御するためにキーバインディングセットを使用したいと思います。

キーを次のように設定しましたexec pactl set-sink-mute 0 toggle

このキーを押しても効果はありません。しかし、pactl set-sink-mute 0 toggle端末で実行でき、動作します。ただし、sudo pactl ...root()で実行すると、次のように失敗します。

Connection failure: Connection refused
pa_context_connect() failed: Connection refused

ただし、ユーザーとして呼び出すと期待どおりに実行されます。

私はアーチLinuxを使用しています。

答え1

コメントで述べたように、そのXDG_RUNTIME_DIR環境にいる必要があり、自分が一般ユーザーであることを識別する必要があります。

sudo -u '#1000' XDG_RUNTIME_DIR=/run/user/1000 pactl set-sink-mute 0 toggle

どちらのインスタンスも通常1000のユーザーIDで置き換える必要があります。わからない場合は、id -u一般ユーザーとして実行してみてください。

関連情報