fel*_*lix 4 arch-linux audio wayland
我正在使用带有 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"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这更改了输出中属性列表中的相应条目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"
...
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助。
小智 5
如果您遵循当前的建议,使用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)
Run Code Online (Sandbox Code Playgroud)
相反,如果您希望更改蓝牙节点或设备上的某些内容,您可以~/.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)
Run Code Online (Sandbox Code Playgroud)
因此,Lua 脚本的文件名和位置的设计方式允许WirePlumber 的多路径合并/usr/share/wireplumber/main.lua.d/50-alsa-config.lua在默认配置文件(例如)之后但在加载和启用设备的文件(例如 )之前运行它们/usr/share/wireplumber/main.lua.d/90-enable-all.lua。
您可以更改的属性以及选择设备或节点的匹配规则记录在ALSA 配置和蓝牙配置中。