Autorandrですがオーディオデバイス用ですか?

Autorandrですがオーディオデバイス用ですか?

私のThinkPad T450はManjaroを実行しています。私はスクラムマスターとして、外部モニターが2つあるデスク、モニターのない会議室、外部モニターが1つある会議室の間を頻繁に移動します。autorandr使用可能なハードウェアに応じてワークスペースを自動的に設定するようにラップトップを設定しました。私はそれが大好きです!

しかし、私は同様のオーディオソリューションも好きです。デスクに入ると、入力代替デバイスはBluetooth Jabraヘッドフォンであり、出力代替デバイスは「すべてのデバイスに同時出力」疑似デバイスになりたいのですが、会議室では通常次のものを接続します。 USB(JabraまたはLogitech)会議室スピーカーデバイス - 次に、ボリュームコントロールパネルに移動してデフォルトのデバイスを設定する必要があります。

すべてを自動化できれば新しく接続されたデバイスが自動的に選択されます。バックアップI/Oとして本当に良いようです!

警告する:報酬を受け取るには、回答が有効な解決策を説明する必要があります。自動的にハードウェアが接続または切断されたとき。実行されるたびに実行されるようにスクリプトをトリガーすることは許可されますautorandr(ただし、autorandr独自のスリープストリーム機能はありません)。

ボリュームコントロールパネル

編集する:@telcoMの回答に触発され、現在システムに認識されているソースとシンクのリストを含めることができます(現在接続されていない会議室のソースとシンクのリストを含む)。

$ pactl list | grep -B 2 'ame:' | grep -A 2 'Sink #'
Sink #0
    State: SUSPENDED
    Name: alsa_output.pci-0000_00_1b.0.analog-stereo
--
Sink #1
    State: SUSPENDED
    Name: combined
--
Sink #43
    State: SUSPENDED
    Name: alsa_output.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono
--
Sink #93
    State: SUSPENDED
    Name: alsa_output.pci-0000_00_03.0.hdmi-stereo-extra1

そして

$ pactl list | grep -B 2 'ame:' | grep -A 2 'Source #'
Source #0
    State: SUSPENDED
    Name: alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
--
Source #1
    State: SUSPENDED
    Name: alsa_input.pci-0000_00_1b.0.analog-stereo
--
Source #2
    State: SUSPENDED
    Name: combined.monitor
--
Source #46
    State: SUSPENDED
    Name: alsa_output.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono.monitor
--
Source #47
    State: SUSPENDED
    Name: alsa_input.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono
--
Source #97
    State: SUSPENDED
    Name: alsa_output.pci-0000_00_03.0.hdmi-stereo-extra1.monitor

答え1

デフォルトでは、Pulseaudioは各再生ソースが接続されている出力デバイスを記憶し、入力デバイスと録音ソフトウェアも同様です。これは、もともとPulseaudioデバイス接続の主なソースです。

代替デバイスは、たとえば、再生ソースに以前に接続されたレコードがない場合、または以前に接続されたデバイスが使用できなくなった場合にのみ使用されます。

少なくともKDEには、オーディオ入力/出力デバイスの各オーディオ入力/出力タイプ(通信対オーディオまたはビデオの再生/録音)の優先順位を個別に設定するために使用できるマルチメディア設定ダイアログボックスがあります。これはPulseaudioの動作を変えるようです。

このブログと言及されたpaswitchユーティリティはあなたに役立ちます。

https://www.tablix.org/~avian/blog/archives/2012/06/switching_pulseaudio_output_device/

Gitリポジトリpaswitch:https://www.tablix.org/~avian/git/paswitch.git

以前はこの目的のためのスクリプトがありましたpaswitchが、デフォルト/代替出力を切り替えるだけでなく、アクティブソースと以前に記憶されたソースを新しい出力に切り替えるので、より良い方法です。残念ながら、出力側のみを処理します。

特定のマイクを使用して起動されたアクティブクライアントを切り替えるには、次の手順を実行する必要があります。

pacmd set-default-source "$SOURCEID"
if ! pacmd list-source-outputs | head -1 | grep -q "^0 source output"
then
    # active input clients, switch them to new mic
    for idx in $(pacmd list-source-outputs | awk '/index:/{print $2;}')
    do
        # sources include monitor sources that cannot be moved
        pacmd move-source-output $idx $SOURCEID >/dev/null
    done
fi

これにより、最初にデフォルトのマイクが指定されたマイクロに変更され、次にすべてのアクティブ$SOURCEIDなアプリケーションが対応する新しいマイクロに移動されます。

ただし、他のオーディオソースデバイスを使用する前にアプリケーションが実行されていて、そのソースがシステムでまだ利用可能な場合、Pulseaudioは永続機能がオフになっていない限り、デフォルトでは新しいデフォルトソースの代わりに古いソースに接続します。

答え2

ああ!入力名と出力名を取得する正しいコマンドが見つかりました!これは主に以下に由来します。これは他の質問に対する答えですしかし、本当に褒め言うべき点は、telcoM私に方向を提示してくださったという点だpactl

$ pactl list short sources
0   alsa_output.pci-0000_00_1b.0.analog-stereo.monitor  module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
1   alsa_input.pci-0000_00_1b.0.analog-stereo   module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
2   combined.monitor    module-combine-sink.c   s16le 2ch 44100Hz   RUNNING
144 alsa_output.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono.monitor    module-alsa-card.c  s16le 1ch 16000Hz   RUNNING
145 alsa_input.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono module-alsa-card.c  s16le 1ch 16000Hz   RUNNING
152 alsa_output.pci-0000_00_03.0.hdmi-stereo-extra1.monitor module-alsa-card.c  s16le 2ch 44100Hz   RUNNING

そして

$ pactl list short sinks
0   alsa_output.pci-0000_00_1b.0.analog-stereo  module-alsa-card.c  s16le 2ch 44100Hz   RUNNING
1   combined    module-combine-sink.c   s16le 2ch 44100Hz   RUNNING
136 alsa_output.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono    module-alsa-card.c  s16le 1ch 16000Hz   RUNNING
143 alsa_output.pci-0000_00_03.0.hdmi-stereo-extra1 module-alsa-card.c  s16le 2ch 44100Hz   RUNNING

これによりソースを設定できます。

$ pactl set-default-source alsa_input.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono
$ pactl set-default-source alsa_input.pci-0000_00_1b.0.analog-stereo

そして流し台:

$ pactl set-default-sink alsa_output.usb-GN_Netcom_A_S_Jabra_PRO_9470_026D0D98A805-00.analog-mono
$ pactl set-default-sink combined

それからこのコマンドを」フックスクリプト”をautorandr実行するには、ビデオケーブルを接続する前にUSBオーディオデバイスを接続するだけで、すべてがうまく機能します!

関連情報