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 오디오 장치를 연결하기만 하면 모든 것이 잘 작동합니다!

관련 정보