Arch-Linux

重命名 Pipewire 中的設備

  • January 30, 2022

我正在使用帶有 i3 的 ArchLinux。我最近從 PulseAudio 切換到 Pipewire,因為我想在不久的將來切換到 Wayland 和 Sway。

目前,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"
       ...

謝謝你的幫助。

除了您自己的答案(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 的 Wiki中的更多提示。

如果您遵循目前建議,使用WirePlumber而不是PipeWire Media Session,則更改節點描述(或任何其他屬性)的方法是創建一個 Lua 腳本並將其添加到~/.config/wireplumber正確的路徑和名稱下。

例如,要根據 felix 的需要更改 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)

相反,如果您希望更改藍牙節點或設備上的某些內容,您可以~/.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 配置藍牙配置中。

引用自:https://unix.stackexchange.com/questions/648666