데비안에서 PipeWire 오디오 출력 전환 스크립트를 구성하는 방법

데비안에서 스크립트를 사용하여 PipeWire 출력을 전환하는 가장 간단하고 안정적인 방법은 wpctlWirePlumber 명령줄 도구를 사용하는 것입니다. 원하는 두 개의 싱크 노드를 식별하고 현재 기본 싱크를 확인한 다음 wpctl set-default ID다른 싱크를 호출하면 됩니다. PipeWire 객체 ID는 장치 연결 해제, 재연결 또는 세션 재시작 시 변경될 수 있으므로 숫자 노드 ID를 하드코딩하는 것보다 이 방법이 더 좋습니다.

이 가이드에서는 두 장치(예: 노트북 스피커와 블루투스 헤드폰)를 전환하는 기능을 사용하며, 현재 데비안 13(Trixie)과 데비안 12(Bookworm) 모두와 호환되도록 로직을 구성했습니다. 2026년 10월 기준으로 데비안 패키지 페이지에는 데비안 13에서 WirePlumber 0.5.8, 데비안 12에서 0.4.13이 등록되어 있습니다. 최신 WirePlumber 릴리스에서는 추가적인 목록 표시 기능이 제공되지만, 여기서는 wpctl status -n, wpctl inspect, 및 wpctl set-default가 공통적으로 필요한 기능입니다.

이 방법이 적합한 경우

PipeWire가 이미 데스크톱 오디오를 처리하고 있고 키보드 단축키, 런처, 셸 별칭 또는 핫키를 사용하여 두 출력 간에 전환하려는 경우 이 방법을 사용하십시오. 내장 아날로그 출력과 USB DAC, HDMI 모니터, Bluetooth 헤드셋 또는 . 의 Sinks 섹션 에 나타나는 다른 싱크에 잘 작동합니다 wpctl status.

모든 라우팅 문제에 적합한 도구는 아닙니다. wpctl set-default자동 연결이 필요한 스트림에 사용되는 기본 대상을 변경합니다. 이미 실행 중인 모든 애플리케이션이 기존 스트림을 즉시 마이그레이션한다는 보장은 없습니다. 일부 애플리케이션은 새 기본값을 자동으로 따르지만, 다른 애플리케이션은 스트림을 별도로 이동하거나 애플리케이션을 다시 시작해야 할 수 있습니다.

대본을 쓰기 전에

사용자 수준의 PipeWire 및 WirePlumber 세션이 정상적으로 작동하는지 확인하십시오. WirePlumber 공식 문서에서는 데몬을 `pip install .wireWire` 명령으로 확인하는 것을 권장합니다 systemctl --user status wireplumber. 또한 Debian 12 이상 버전에서는 PipeWire 오디오 스택을 완벽하게 구성할 때 메타패키지를 사용하는 것을 권장합니다 pipewire-audio.

systemctl --user status wireplumber
systemctl --user status pipewire pipewire-pulse

만약 wpctl해당 파일이 없다면, 관련 없는 믹서 유틸리티로 대체하려고 하지 말고 WirePlumber와 일반 PipeWire 오디오 구성 요소를 설치하십시오.

sudo apt update
sudo apt install pipewire-audio wireplumber

wpctl`.` 옵션 없이 실행하십시오 sudo. PipeWire와 WirePlumber는 일반적으로 데스크톱 사용자 세션에서 작동하므로 명령은 해당 사용자의 미디어 그래프에 연결되어야 합니다.

1단계: 출력 싱크 이름을 찾습니다.

달리다:

wpctl status -n

이 -n옵션은 wpctl사람이 읽기 쉬운 설명 대신 객체 이름을 표시하도록 요청합니다. 오디오 → 싱크 에서 토글하려는 두 출력의 이름을 확인하세요. 기기에 따라 내장 싱크는 와 같이 표시 alsa_output.pci-0000_00_1f.3.analog-stereo되고 Bluetooth 싱크는 로 시작할 수 있습니다 bluez_output..

Debian 터미널에서 wpctl status -n 명령을 실행했을 때, 내장 아날로그 싱크와 블루투스 싱크가 오디오 싱크(Audio Sinks) 항목에 나열되어 있는 것을 보여줍니다.
대표적인 터미널 화면 예시 wpctl status -n: 숫자 ID를 스크립트에 복사하는 대신, 싱크(Sinks) 섹션에서 안정적인 이름 조각을 식별합니다.

의도하는 출력에만 정확히 일치하는 고유한 프래그먼트를 선택하십시오. 내장 사운드 카드의 경우 전체 alsa_output...노드 이름이 일반적으로 적절한 선택입니다. 블루투스 장치의 경우, bluez_output.일반적으로 블루투스 오디오 싱크를 하나만 연결하는 경우에는 짧은 프래그먼트가 편리합니다. 여러 개의 블루투스 출력을 자주 연결하는 경우에는 의도하는 장치에 고유한 더 긴 프래그먼트를 사용하십시오.

2단계: wpctl inspect를 사용하여 싱크대를 확인합니다.

전환 스크립트를 작성하기 전에 다음에서 표시되는 ID 중 하나를 확인하십시오 wpctl status -n.

wpctl inspect 45

45시스템의 현재 ID로 교체하십시오 . node.name및 와 같은 속성을 확인하십시오 media.class. 재생 출력의 경우 는 media.class오디오 싱크를 식별해야 합니다. 숫자 ID는 검사 및 즉시 set-default명령 실행에 유용하지만, 아래 스크립트는 실행될 때마다 새로운 ID를 생성합니다.

내장 오디오 싱크의 node.name과 media.class Audio Sink를 보여주는 wpctl inspect 출력의 Debian 터미널 화면입니다.
싱크를 검사하면 스크립트가 일치시킬 노드 이름을 확인할 수 있으며, 재생 싱크를 소스 또는 관련 없는 PipeWire 객체와 구분하는 데 도움이 됩니다.

숫자 ID를 몰라도 WirePlumber에 현재 기본 싱크대가 무엇인지 물어볼 수도 있습니다.

wpctl inspect @DEFAULT_AUDIO_SINK@

이 특수 식별자는 @DEFAULT_AUDIO_SINK@WirePlumber에 의해 문서화되며 런타임 시 현재 기본 재생 노드로 해석됩니다.

3단계: 두 개의 출력을 가진 토글 스크립트를 생성합니다.

필요한 경우 개인 실행 가능 디렉토리를 생성한 다음 스크립트를 엽니다.

mkdir -p ~/.local/bin
nano ~/.local/bin/toggle-audio-output

다음 코드를 붙여넣고, SINK_A와 를 SINK_B여러분의 wpctl status -n출력 결과에서 가져온 조각들로 바꾸세요:

#!/usr/bin/env bash
set -euo pipefail

# Replace these with distinctive fragments from `wpctl status -n`.
SINK_A="alsa_output.pci-0000_00_1f.3.analog-stereo"
SINK_B="bluez_output."

find_sink_id() {
    local needle="$1"
    wpctl status -n | awk -v n="$needle" '
        /Sinks:/   { in_sinks=1; next }
        /Sources:/ { in_sinks=0 }
        in_sinks && index($0, n) {
            for (i=1; i<=NF; i++) {
                if ($i ~ /^[0-9]+\.$/) {
                    gsub(/\./, "", $i)
                    print $i
                    exit
                }
            }
        }'
}

current_name="$(
    wpctl inspect @DEFAULT_AUDIO_SINK@ |
    awk -F'= ' '/node.name/ {
        gsub(/"/, "", $2)
        print $2
        exit
    }'
)"

if [[ "$current_name" == *"$SINK_A"* ]]; then
    target_pattern="$SINK_B"
elif [[ "$current_name" == *"$SINK_B"* ]]; then
    target_pattern="$SINK_A"
else
    # If the current default is neither target, switch to A first.
    target_pattern="$SINK_A"
fi

target_id="$(find_sink_id "$target_pattern")"

if [[ -z "$target_id" ]]; then
    printf 'No available sink matched: %s\n' "$target_pattern" >&2
    exit 1
fi

wpctl set-default "$target_id"
printf 'Default audio sink changed to ID %s\n' "$target_id"
데비안 터미널의 나노 에디터에서 파이프와이어 싱크 이름 두 개를 식별하고 wpctl을 사용하여 기본 싱크를 변경하는 Bash 스크립트를 표시합니다.
토글 스크립트는 싱크 이름을 동적으로 일치시키고, 현재 기본값을 확인하고, 대상의 현재 객체 ID를 확인한 후 호출해야 합니다 wpctl set-default.

스크립트가 매번 ID를 해석하는 이유는 무엇입니까?

PipeWire 객체 ID는 세션 객체이므로 ID를 45영구적인 장치 식별자로 취급하는 것은 불안정합니다. 따라서 스크립트는 대신 식별 가능한 노드 이름 조각을 저장하고, 현재 싱크 섹션을 구문 분석한 후, 전환 시점에만 숫자 ID를 추출합니다.

현재 기본값으로 wpctl inspect를 사용하는 이유는 무엇입니까?

스크립트는 @DEFAULT_AUDIO_SINK@해당 이름을 요청합니다. 이렇게 하면 현재 선택된 싱크대를 판단할 때 node.name별표의 시각적 위치에 의존하지 않게 됩니다 . 그런 다음 해당 이름을 및 와 비교합니다 .wpctl statusSINK_ASINK_B

4단계: 스크립트를 실행 가능하게 만들고 테스트합니다.

파일을 저장한 다음 실행하세요.

chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output
wpctl status -n

대상 싱크를 사용할 수 있는 경우 스크립트는 선택한 ID를 출력해야 합니다. 스크립트를 다시 실행하면 구성된 다른 싱크를 선택해야 합니다. 결과를 확인하려면 wpctl status -n또는 를 검사하십시오 @DEFAULT_AUDIO_SINK@.

실행 가능한 오디오 토글 스크립트를 실행한 후 Debian 터미널에서 wpctl status 명령을 실행하면 Bluetooth 싱크가 기본 출력으로 표시됩니다.
스크립트 실행 후, wpctl status -n의도한 싱크가 기본값으로 설정되었는지 확인하십시오.

WirePlumber 문서에서는 wpctl set-default ID싱크 또는 소스를 기본 대상으로 설정하는 방법을 설명합니다. 최신 WirePlumber에서는 이러한 사용자 선택이 기억되어 자동 우선순위 선택보다 우선 순위가 높습니다. 나중에 WirePlumber에서 자동 기본 선택으로 되돌리려면 다음을 사용하십시오.

wpctl clear-default

스크립트를 키보드 단축키에 추가하세요

터미널 테스트가 안정적으로 작동하면 /home/YOUR_USER/.local/bin/toggle-audio-output데스크톱 키보드 단축키에 할당하십시오. 일부 단축키 실행기는 셸 약어를 확장하지 않으므로 절대 경로를 사용하십시오 ~. 정확한 단축키 UI는 데스크톱 환경에 따라 다르므로 가장 중요한 테스트는 일반 사용자 터미널에서 스크립트가 올바르게 작동하는지 확인하는 것입니다.

바로가기 아이콘이 실행되지만 wpctl연결할 수 없다는 오류가 발생하는 경우, 실행기가 예상되는 사용자 세션 환경을 제대로 상속받지 못했을 수 있습니다. 그래픽 세션 내 터미널에서 동일한 명령을 실행하여 확인한 다음, 데스크톱 환경의 바로가기 아이콘 실행 규칙을 검토하십시오. 스크립트 앞에 .을 붙여서 이 문제를 해결하지 마십시오 sudo.

일반적인 오류 해결 방법

"호환되는 싱크대가 없습니다."

대상 연결이 끊어졌거나, 노드 이름이 변경되었거나, 패턴이 너무 구체적일 수 있습니다. wpctl status -n다시 실행하고 해당 값을 업데이트하십시오 SINK_A. SINK_B블루투스의 경우 스크립트를 실행하기 전에 헤드셋이 연결되어 있고 오디오 싱크가 노출되었는지 확인하십시오.

스크립트가 기본 설정을 변경하지만 기존 오디오는 다른 곳에서 계속 재생됩니다.

이는 정상적인 현상입니다. 상위 문서에서는 set-default자동 연결이 필요한 새 스트림에 대한 대상 선택이라고 설명하고 있습니다. 특정 애플리케이션의 기존 스트림이 이전 싱크에 남아 있는 경우 재생을 중지했다가 다시 시작하거나 애플리케이션을 다시 실행하세요. 기존 스트림을 마이그레이션해야 하는 경우에는 마이그레이션이 보장된다고 가정하기보다는 별도의 라우팅 작업으로 처리하는 것이 좋습니다 set-default.

잘못된 블루투스 장치가 선택되었습니다.

더 구체적으로 명시하십시오 SINK_B. 일반적인 패턴은 bluez_output.일치하는 블루투스 싱크가 하나만 있는 경우에만 적합합니다. 여러 무선 출력을 동시에 연결할 수 있는 경우에는 전체 노드 이름 또는 고유한 중간 부분을 사용하십시오.

WirePlumber가 실행 중이 아닙니다.

확인하다:

systemctl --user status wireplumber
journalctl --user -u wireplumber

상위 문서에서는 systemctl --user --now enable wireplumber데몬이 설치되었지만 활성화되지 않은 경우를 권장합니다. 이미 구성된 Debian 데스크톱 환경에서 전체 오디오 스택을 반복적으로 재시작하기 전에 사용자 서비스가 중지된 이유를 조사하십시오.

데비안 12와 데비안 13의 차이점은 무엇일까요?

데비안 릴리스와이어플럼버 패키지이 대본의 실질적인 의미
데비안 12 (북웜)표준 저장소의 0.4.13 버전여기에 표시된 호환 가능한 워크플로를 사용 wpctl status -n하십시오 inspect.set-default
데비안 13 (트릭시)표준 저장소의 0.5.8 버전동일한 스크립트가 작동하며, 최신 WirePlumber는 CLI 및 JSON 기반 구성 동작이 확장되었습니다.

WirePlumber 0.5 구성 예제를 이전 버전인 0.4 설치 환경에 그대로 복사하지 마십시오. WirePlumber 0.5는 구성 시스템이 변경되었습니다. 이 튜토리얼에서는 영구 정책 파일 대신 명령줄 작업을 사용하여 버전 간 충돌을 방지합니다.

빠른 확인 체크리스트

  • systemctl --user status wireplumber세션 관리자가 실행 중임을 보여줍니다.
  • wpctl status -nSinks 항목 아래에 의도된 출력을 모두 나열합니다.
  • wpctl inspect @DEFAULT_AUDIO_SINK@유효한 현재 재생 노드를 반환합니다.
  • 두 가지 스크립트 패턴은 의도된 싱크를 고유하게 식별합니다.
  • 스크립트를 두 번 실행하면 두 출력값 중 기본값이 번갈아 가며 적용됩니다.
  • 기존 애플리케이션이 이동하지 않는 경우, 기본 선택과 활성 스트림 마이그레이션은 별개의 동작임을 이해해야 합니다.

주요 참고 문헌

명령어 의미론 및 현재 WirePlumber 동작에 대한 자세한 내용은 WirePlumber 공식 wpctl 설명서 와 WirePlumber 공식 시작 가이드를 참조하십시오 . Debian 관련 패키지 및 설정 정보는 Debian PipeWire 설명서 , Debian 12 WirePlumber 패키지 페이지 및 Debian 13 WirePlumber 패키지 페이지를 참조하십시오 .

댓글 남기기

Harmonica OS 시스템 요구 사항 및 구형 노트북 호환성 가이드

Harmonica OS 시스템 요구 사항 및 구형 노트북 호환성 가이드

HamoniKR 8.0을 설치하기 전에 시스템 요구 사항, 라이트 버전과 정식 버전의 필요 사항, 그리고 구형 64비트 노트북과의 호환성 점검 사항을 확인하세요.

Ubuntu GNOME에서 tracker-miner-3의 높은 CPU 사용량 문제 해결

Ubuntu GNOME에서 tracker-miner-3의 높은 CPU 사용량 문제 해결

Ubuntu GNOME 환경에서 tracker-miner-fs-3가 높은 CPU 사용률을 보이는 이유, 인덱싱 상태 확인, 검색 가능 위치 축소, 그리고 Tracker 인덱스를 안전하게 재구축하는 방법을 알아보세요.

BitLocker를 활성화한 상태로 Ubuntu 24.04와 Windows 11을 듀얼 부팅하는 방법

BitLocker를 활성화한 상태로 Ubuntu 24.04와 Windows 11을 듀얼 부팅하는 방법

우분투 24.04에서 BitLocker를 활성화한 상태로 듀얼 부팅이 가능한 시점, 복구 키를 보호하는 방법, 그리고 동일 드라이브 또는 별도 드라이브에 안전하게 설치하는 방법에 대해 알아보세요.

Pardus Linux 클라이언트를 Active Directory 도메인에 가입시키는 방법

Pardus Linux 클라이언트를 Active Directory 도메인에 가입시키는 방법

Pardus Domain Joiner를 사용하여 Pardus Linux를 Active Directory에 연결합니다. DNS 및 시간을 확인하고, CLI를 설치하고, SSSD를 사용하여 연결하고, 도메인 로그인 액세스를 확인합니다.

Pardus Image Creator를 사용하여 사용자 지정 OS 배포를 설정하는 방법

Pardus Image Creator를 사용하여 사용자 지정 OS 배포를 설정하는 방법

Pardus Image Writer의 기능, 설치 방법, 그리고 검증된 사용자 지정 ISO 이미지를 USB에 안전하게 배포하는 방법을 알아보세요. 빌드 및 테스트 가이드도 포함되어 있습니다.

SLES 부팅 시 "커널 모듈 로드 시작 실패" 오류 해결

SLES 부팅 시 "커널 모듈 로드 시작 실패" 오류 해결

SLES에서 systemd-modules-load.service 오류를 진단하고 수정합니다. 오류가 발생한 모듈을 찾고, 부팅 구성을 수정하며, 필요한 경우에만 initramfs를 재구축합니다.

OSTree를 사용하여 Debian 데스크톱을 변경 불가능한 OS로 옮기는 방법

OSTree를 사용하여 Debian 데스크톱을 변경 불가능한 OS로 옮기는 방법

패키지 하나만 설치한다고 해서 데비안을 OSTree 불변 환경으로 만들 수 없는 이유를 알아보고, 안전하게 OSTree 데스크톱으로 마이그레이션하거나 사용자 지정 데비안 이미지를 계획해 보세요.

우분투 24.04의 웨이랜드 환경에서 터치패드 제스처가 작동하지 않는 문제 해결

우분투 24.04의 웨이랜드 환경에서 터치패드 제스처가 작동하지 않는 문제 해결

Ubuntu 24.04 Wayland에서 세 손가락 터치패드 제스처가 누락된 문제를 해결하려면 GNOME 설정, libinput 이벤트, 업데이트 및 확장 프로그램을 확인하세요.

데비안에서 PipeWire 오디오 출력 전환 스크립트를 구성하는 방법

데비안에서 PipeWire 오디오 출력 전환 스크립트를 구성하는 방법

wpctl을 사용하여 Debian에서 안정적인 PipeWire 출력 전환 스크립트를 만드세요. 스피커, 블루투스, USB 또는 HDMI 출력 간에 ID를 하드코딩하지 않고 전환할 수 있습니다.

HamoniKR OS에서 CUPS를 통해 프린터를 구성하는 방법

HamoniKR OS에서 CUPS를 통해 프린터를 구성하는 방법

CUPS를 사용하여 HamoniKR OS에서 USB 및 네트워크 프린터를 설정하세요. 인쇄 대기열을 추가하고, 드라이버가 필요 없는 IPP 또는 모델 드라이버를 선택하고, 기본 설정을 지정한 다음 테스트 페이지를 인쇄해 보세요.