
이전에 비슷한 질문을 게시했지만 Kamil Maciorowski는 게시된 대로 실제로는 보이는 단일 문제가 아니라 3개의 조합이라는 점을 정확하고 현명하게 지적했습니다. 그래서 손상된 시스템과 질문을 삭제했습니다. 현재 Lubuntu를 새로 설치하여 다시 시작하겠습니다. 기본적으로 Bluetooth 헤드폰을 켜면 내부 스피커가 아닌 Bluetooth 헤드폰을 통해 사운드가 재생됩니다. 헤드폰을 끄면 자동으로 스피커를 통해 소리가 재생됩니다.
내가 선호하는 것은 특정 명령의 출력을 명시적으로 스피커에 지시하지 않는 한 스피커로 사운드가 전송되지 않는 것입니다. 예를 들어 의사코드는 aplay /path/fire-alarm.wav -o speakers
가능한 경우 헤드폰을 통해 다른 모든 소리를 재생하도록 하고, 그렇지 않으면 전혀 재생하지 않도록 합니다.
이러한 종류의 정책에 대한 직접적인 조항이 없는 경우 /dev/null을 헤드폰 다음으로 두 번째로 앞서는 항상 작동하고 항상 사용 가능한 오디오 싱크로 인식하도록 시스템을 속일 수 있는 방법이 있는지 궁금합니다. 내부 스피커의 모습입니다. 즉, '스피커를 통해 이 소리를 재생' 명령과 함께 수행해야 합니다.
둘 다 가능하지 않은 경우 헤드폰 기능에 영향을 주지 않고 다시 로그인하지 않고 스피커를 비활성화 및 활성화하는 명령은 거의 목적에 부합할 것입니다. 단, 비잔틴 Linux 사운드 아키텍처의 무언가가 "아, 스피커가 꺼졌으니 고쳐드릴게요."
이는 단순히 블루투스 헤드폰이 기본값이어야 한다고 말하는 것과는 다릅니다. 지금은 그렇습니다. "Debbie Does Dubai"를 시청할 때 헤드폰이 범위를 벗어나거나 주스가 부족하거나 물리적 위치를 조정하려고 더듬거리며 소리가 자동으로 전환되어 나오는 것을 원하지 않습니다. 스피커의.
내가 추구하는 것은 특정 스트림을 보내도록 명시적으로 지시하지 않는 한 스피커에 아무것도 보내지 않고, 그 스트림만 보내거나 실패하면 다시 로깅하지 않고 스피커를 비활성화 및 활성화하는 스크립트 가능한 방법을 보내는 정책입니다.
답변1
PULSE_SINK=<sink_name> 일부 프로그램
다음에서 사용 가능한 "sink_name" 목록을 얻을 수 있습니다.
LANG=C pactl list | grep -A2 'Sink #' | grep Name: | cut -d" " -f2