CLIを使用してパイプラインワイヤを介して再生デバイスを切り替えるのに問題があります。

CLIを使用してパイプラインワイヤを介して再生デバイスを切り替えるのに問題があります。

私は痛みを伴うi3wmの道を歩んできましたが、生涯の間にcliコマンドを使用して出力デバイスを変更する方法を理解できません。

設定:

  • i3-gapsを使用する(デフォルトのディストリビューションはGaruda Linux)
  • Pipewireはオーディオプロバイダです。
  • pavucontrolを使用すると、出力ポートでヘッドフォンとスピーカーを切り替えることができますが、pactl、wpctl、aplayを使用すると、後で何が起こっているのかを理解できないようです。
  • ヘッドフォンを前面 Aux パネルに接続し、スピーカーを背面 Aux パネルに接続しました。

どんな助けにも感謝します:)

更新:ソリューションを見つけてコメントに投稿しました。

答え1

pactl list short sinks受信機、出力デバイスを一覧表示し、pactl info実際の構成に関する情報を取得できる必要があります。実際の出力には名前を付ける必要がありますDefault Sink

デフォルトの受信機を切り替えるには、を使用できますpactl set-default-sink <sink_name>

呼び出されるたびに、可能な受信者を切り替えるスクリプトがオンラインで見つかりました。https://ericlathrop.com/2021/02/changing-pulseaudio-outputs-programmatically/

パルスで動作すると言われていますが、(少なくとも私にとっては)パイプラインでも動作します。

答え2

解決策を見つけて、これについての短いスクリプトを書いています。

if [[ $(pactl list | grep "Active Port: analog-output") == *"headphones"* ]]; then
    pactl set-sink-port 0 analog-output-lineout
else
    pactl set-sink-port 0 analog-output-headphones
fi

また、私のi3configに以下を追加しました。

bindsym F6 exec --no-startup-id sh ~/path/to/script/switch_output.sh

答え3

まず、カードプロファイルを設定してから、デフォルトの受信機を設定する必要がありました。

以下は私に役立つ例です。

pactl set-card-profile alsa_card.usb-Focusrite_Scarlett_Solo_USB_...
pactl set-default-sink alsa_output.usb-Focusrite_Scarlett_Solo_USB_....HiFi__hw_USB__sink

オートコンプリートを使用して文字列を選択します。

関連情報