i3과 함께 ArchLinux를 사용하고 있습니다. 가까운 시일 내에 Wayland와 Sway로도 전환하고 싶기 때문에 최근에 PulseAudio에서 Pipewire로 전환했습니다.
지금까지 Pipewire는 잘 작동하고 있습니다. 그래도 작은 문제가 있습니다.
동일한 설명의 오디오 장치를 사용하고 있어서 Pavucontrol에서는 구별할 수 없습니다. Pulse를 사용하여 update-sink-proplist 문을 로컬 default.pa 파일에 작성했습니다.
Pipewire로 이 작업을 수행하는 방법, 즉 장치가 연결된 경우 장치 설명을 변경하는 방법을 아는 사람이 있습니까?
현재 저는 Pipewire의 기본 구성을 사용하고 있습니다.
내 접근 방식:
나는 이것이 pw-metadata에서 작동할 것이라고 생각했지만 올바른 명령을 찾지 못했습니다.
~/.config/pipewire/media-session.d/alsa-monitor.conf에 다음을 추가했습니다.
{
matches = [
{
node.name = "~^alsa_output.pci-0000_00_1f.3.output_analog-stereo$"
}
]
actions = {
update-props = {
device.description = "Laptop"
}
}
}
이렇게 하면 출력의 속성 목록에 있는 해당 항목이 변경되지만 pactl list sinks
실제 설명은 변경되지 않습니다. 실제로 출력은 다음과 같습니다.
Sink #45
...
Name: alsa_output.pci-0000_00_1f.3.output_analog-stereo
Description: Built-in Audio Analog Stereo Output
...
Properties:
...
device.description = "Laptop"
...
당신의 도움을 주셔서 감사합니다.
답변1
현재 권장 사항을 따르는 경우 다음을 사용하십시오.전기 배관공바꾸다PipeWire 미디어 컨퍼런스, 노드 설명(또는 기타 속성)을 변경하는 방법은 Lua 스크립트를 생성하여 ~/.config/wireplumber
올바른 경로와 이름 아래에 추가하는 것입니다.
예를 들어, 펠릭스의 필요에 따라 ALSA 노드의 설명을 변경하려면 ~/.config/wireplumber/main.lua.d/51-alsa-rename.lua
다음 콘텐츠가 포함된 파일을 생성할 수 있습니다.
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.pci-0000_00_1f.3.output_analog-stereo" },
},
},
apply_properties = {
["node.description"] = "Laptop",
},
}
table.insert(alsa_monitor.rules,rule)
반대로, Bluetooth 노드나 장치에서 무언가를 변경하려면 ~/.config/wireplumber/bluetooth.lua.d/51-rename.lua
다음을 사용하여 만들 수 있습니다.
rule = {
matches = {
{
{ "node.name", "equals", "bluez_output.02_11_45_A0_B3_27.a2dp-sink" },
},
},
apply_properties = {
["node.nick"] = "Headphones",
},
}
table.insert(bluez_monitor.rules,rule)
따라서 Lua 스크립트의 파일 이름과 위치는 다음을 허용하는 방식으로 설계되었습니다.WirePlumber의 다중 경로 병합/usr/share/wireplumber/main.lua.d/50-alsa-config.lua
기본 구성 파일(예:) 이후, 장치 파일을 로드하고 활성화하기 전에(예:) 실행합니다 /usr/share/wireplumber/main.lua.d/90-enable-all.lua
.
변경할 수 있는 속성과 장치 또는 노드 선택을 위한 일치 규칙은 다음 문서에 설명되어 있습니다.ALSA 구성그리고블루투스 구성.
답변2
듀루드의 답변WirePlumber에 대해 말씀하신 내용은 맞지만 2023년 이후에 누군가 이런 상황에 직면하면 Lua는 아웃됩니다.SPA-JSON새로운 핫스팟이네요.
mkdir -p ~/.config/wireplumber/wireplumber.conf.d
touch ~/.config/wireplumber/wireplumber.conf.d/99-renames.conf
정확한 파일 이름은 중요하지 않습니다.
형식은 다음과 같습니다.
monitor.alsa.rules = [
{
matches = [
{ node.name = "alsa_output.usb-Turtle_Beach_Elo_7.1_Air_8502FFFF8102-01.analog-stereo" }
],
actions = {
update-props = {
node.description = "Headset",
device.form-factor = "headset",
device.icon-name = "audio-headset-symbolic",
}
}
}
]
전선 배관공을 다시 시작하세요
systemctl --user restart wireplumber.service
및 를 사용하여 속성을 일치시키고 변경할 수 있습니다 wpctl status
. 나열된 ID 번호는 wpctl inspect ##
어디에 있습니까 ?##
wpctl status
내 시스템(openSUSE Tumbleweed)에서 예제 는 /usr/share/doc/wireplumber/examples/wireplumber.conf.d
.alsa.conf
더 많은 문서는 여기에서 찾을 수 있습니다:https://pipewire.pages.freedesktop.org/wireplumber/daemon/configuration/alsa.html
손가락이 교차하면 2년 넘게 안정적으로 유지됩니다.
답변3
node.description
귀하의 답변( 업데이트할 속성) 외에도 귀하가 말하는 구성은 다음 rules = [...]
블록 에 포함되어야 합니다 ~/.config/pipewire/media-session.d/alsa-monitor.conf
.
rules = [
{
matches = [
{
node.name = "~^alsa_output.pci-0000_0d_00.4.analog-stereo$"
}
]
actions = {
update-props = {
node.description = "Headphones"
}
}
}
]
추가 팁PipeWire의 위키.
답변4
상관없습니다. 저는 이미 답을 알고 있습니다.
node.description
두 번째 시도에서는 교체 해야 했습니다 device.description
.