重命名 Pipewire 中的設備
我正在使用帶有 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
。