Harmonica OS 시스템 요구 사항 및 구형 노트북 호환성 가이드
HamoniKR 8.0을 설치하기 전에 시스템 요구 사항, 라이트 버전과 정식 버전의 필요 사항, 그리고 구형 64비트 노트북과의 호환성 점검 사항을 확인하세요.
데비안에서 스크립트를 사용하여 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는 일반적으로 데스크톱 사용자 세션에서 작동하므로 명령은 해당 사용자의 미디어 그래프에 연결되어야 합니다.
달리다:
wpctl status -n
이 -n옵션은 wpctl사람이 읽기 쉬운 설명 대신 객체 이름을 표시하도록 요청합니다. 오디오 → 싱크 에서 토글하려는 두 출력의 이름을 확인하세요. 기기에 따라 내장 싱크는 와 같이 표시 alsa_output.pci-0000_00_1f.3.analog-stereo되고 Bluetooth 싱크는 로 시작할 수 있습니다 bluez_output..
wpctl status -n: 숫자 ID를 스크립트에 복사하는 대신, 싱크(Sinks) 섹션에서 안정적인 이름 조각을 식별합니다.의도하는 출력에만 정확히 일치하는 고유한 프래그먼트를 선택하십시오. 내장 사운드 카드의 경우 전체 alsa_output...노드 이름이 일반적으로 적절한 선택입니다. 블루투스 장치의 경우, bluez_output.일반적으로 블루투스 오디오 싱크를 하나만 연결하는 경우에는 짧은 프래그먼트가 편리합니다. 여러 개의 블루투스 출력을 자주 연결하는 경우에는 의도하는 장치에 고유한 더 긴 프래그먼트를 사용하십시오.
전환 스크립트를 작성하기 전에 다음에서 표시되는 ID 중 하나를 확인하십시오 wpctl status -n.
wpctl inspect 45
45시스템의 현재 ID로 교체하십시오 . node.name및 와 같은 속성을 확인하십시오 media.class. 재생 출력의 경우 는 media.class오디오 싱크를 식별해야 합니다. 숫자 ID는 검사 및 즉시 set-default명령 실행에 유용하지만, 아래 스크립트는 실행될 때마다 새로운 ID를 생성합니다.
숫자 ID를 몰라도 WirePlumber에 현재 기본 싱크대가 무엇인지 물어볼 수도 있습니다.
wpctl inspect @DEFAULT_AUDIO_SINK@
이 특수 식별자는 @DEFAULT_AUDIO_SINK@WirePlumber에 의해 문서화되며 런타임 시 현재 기본 재생 노드로 해석됩니다.
필요한 경우 개인 실행 가능 디렉토리를 생성한 다음 스크립트를 엽니다.
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 set-default.PipeWire 객체 ID는 세션 객체이므로 ID를 45영구적인 장치 식별자로 취급하는 것은 불안정합니다. 따라서 스크립트는 대신 식별 가능한 노드 이름 조각을 저장하고, 현재 싱크 섹션을 구문 분석한 후, 전환 시점에만 숫자 ID를 추출합니다.
스크립트는 @DEFAULT_AUDIO_SINK@해당 이름을 요청합니다. 이렇게 하면 현재 선택된 싱크대를 판단할 때 node.name별표의 시각적 위치에 의존하지 않게 됩니다 . 그런 다음 해당 이름을 및 와 비교합니다 .wpctl statusSINK_ASINK_B
파일을 저장한 다음 실행하세요.
chmod +x ~/.local/bin/toggle-audio-output
~/.local/bin/toggle-audio-output
wpctl status -n
대상 싱크를 사용할 수 있는 경우 스크립트는 선택한 ID를 출력해야 합니다. 스크립트를 다시 실행하면 구성된 다른 싱크를 선택해야 합니다. 결과를 확인하려면 wpctl status -n또는 를 검사하십시오 @DEFAULT_AUDIO_SINK@.
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.일치하는 블루투스 싱크가 하나만 있는 경우에만 적합합니다. 여러 무선 출력을 동시에 연결할 수 있는 경우에는 전체 노드 이름 또는 고유한 중간 부분을 사용하십시오.
확인하다:
systemctl --user status wireplumber
journalctl --user -u wireplumber
상위 문서에서는 systemctl --user --now enable wireplumber데몬이 설치되었지만 활성화되지 않은 경우를 권장합니다. 이미 구성된 Debian 데스크톱 환경에서 전체 오디오 스택을 반복적으로 재시작하기 전에 사용자 서비스가 중지된 이유를 조사하십시오.
| 데비안 릴리스 | 와이어플럼버 패키지 | 이 대본의 실질적인 의미 |
|---|---|---|
| 데비안 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 패키지 페이지를 참조하십시오 .
HamoniKR 8.0을 설치하기 전에 시스템 요구 사항, 라이트 버전과 정식 버전의 필요 사항, 그리고 구형 64비트 노트북과의 호환성 점검 사항을 확인하세요.
Ubuntu GNOME 환경에서 tracker-miner-fs-3가 높은 CPU 사용률을 보이는 이유, 인덱싱 상태 확인, 검색 가능 위치 축소, 그리고 Tracker 인덱스를 안전하게 재구축하는 방법을 알아보세요.
우분투 24.04에서 BitLocker를 활성화한 상태로 듀얼 부팅이 가능한 시점, 복구 키를 보호하는 방법, 그리고 동일 드라이브 또는 별도 드라이브에 안전하게 설치하는 방법에 대해 알아보세요.
Pardus Domain Joiner를 사용하여 Pardus Linux를 Active Directory에 연결합니다. DNS 및 시간을 확인하고, CLI를 설치하고, SSSD를 사용하여 연결하고, 도메인 로그인 액세스를 확인합니다.
Pardus Image Writer의 기능, 설치 방법, 그리고 검증된 사용자 지정 ISO 이미지를 USB에 안전하게 배포하는 방법을 알아보세요. 빌드 및 테스트 가이드도 포함되어 있습니다.
SLES에서 systemd-modules-load.service 오류를 진단하고 수정합니다. 오류가 발생한 모듈을 찾고, 부팅 구성을 수정하며, 필요한 경우에만 initramfs를 재구축합니다.
패키지 하나만 설치한다고 해서 데비안을 OSTree 불변 환경으로 만들 수 없는 이유를 알아보고, 안전하게 OSTree 데스크톱으로 마이그레이션하거나 사용자 지정 데비안 이미지를 계획해 보세요.
Ubuntu 24.04 Wayland에서 세 손가락 터치패드 제스처가 누락된 문제를 해결하려면 GNOME 설정, libinput 이벤트, 업데이트 및 확장 프로그램을 확인하세요.
wpctl을 사용하여 Debian에서 안정적인 PipeWire 출력 전환 스크립트를 만드세요. 스피커, 블루투스, USB 또는 HDMI 출력 간에 ID를 하드코딩하지 않고 전환할 수 있습니다.
CUPS를 사용하여 HamoniKR OS에서 USB 및 네트워크 프린터를 설정하세요. 인쇄 대기열을 추가하고, 드라이버가 필요 없는 IPP 또는 모델 드라이버를 선택하고, 기본 설정을 지정한 다음 테스트 페이지를 인쇄해 보세요.