Pipewire에서 장치 이름 바꾸기

Pipewire에서 장치 이름 바꾸기

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.

관련 정보