Менеджмент сессии аудиоустройств - Wireplumber
2023-03-06
linuxСкачиваем данный пакет, pipewire-media-session заменится на wireplumber.
sudo pacman -S wireplumber
После чего перезапускаем ПК
# Изменить названия аудиоустройств
В терминале вводим
pw-cli list-objects Node
В данном примере возьму выход на наушники через jack микрофона Samson C01U Pro. Находим длинное имя для выхода (output) устройства и копируем его
........
id 32, type PipeWire:Interface:Node/3
object.serial = "58"
object.path = "alsa:pcm:3:front:3:playback"
factory.id = "18"
client.id = "35"
device.id = "48"
priority.session = "1009"
priority.driver = "1009"
node.description = "C01U Pro condenser microphone Аналоговый стерео"
node.name = "alsa_output.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.analog-stereo"
node.nick = "Samson C01U Pro Mic"
media.class = "Audio/Sink"
То есть я копирую alsa_output.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.analog-stereo
И тут же ищем и копируем для входного (input) устройство
........
id 52, type PipeWire:Interface:Node/3
object.serial = "58"
object.path = "alsa:pcm:3:hw:3:capture"
factory.id = "18"
client.id = "35"
device.id = "48"
priority.session = "2000"
priority.driver = "2000"
node.description = "C01U Pro condenser microphone Моно"
node.name = "alsa_input.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.mono-fallback"
node.nick = "Samson C01U Pro Mic"
media.class = "Audio/Source"
Здесь также, но я копирую alsa_input.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.mono-fallback
Создаём структуру папки
mkdir -p ~/.config/wireplumber/wireplumber.conf.d/
И создаём внутри него файл ~/.config/wireplumber/main.lua.d/51-Samson_C01UPro-rename.conf
внутри которого будет объявлено входное и выходное аудиоустройство в более понятном
виде.
Пояснение:
В
node.descriptionуказываем ваше укороченное имя, это название будет применятся на общих для аудиомикшерах программ таких как pavucontrol, pasystray, cli утилитаpulsemixerи т.дА
node.nickуказываем то же самое но название но оно уже предназначено для применения наименования для профессиональных программ таких как patchbay, qpwgraph, QjackCtl и т.д
monitor.alsa.rules = [
{
matches = [
{
node.name = "alsa_output.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.analog-stereo"
}
]
actions = {
update-props = {
node.description = "C01U Pro",
node.nick = "C01U Pro",
}
}
}
{
matches = [
{
node.name = "alsa_input.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.mono-fallback"
}
]
actions = {
update-props = {
node.description = "C01U Pro",
node.nick = "C01U Pro",
}
}
}
]
Сохраняем и перезагружаем pipewire или ребутимся
systemctl --user restart pipewire
После перезапуска в pavucontrol и Cli утилита pulsemixer будет показывать ваше
укороченное название аудиоустройство которое вы указали
Для вывода из колонок (Speakers) находите тоже в node
pw-cli list-objects Node
......
node.description = "Встроенное аудио Аналоговый стерео"
node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
node.nick = "ALC662 rev3 Analog"
media.class = "Audio/Sink"
Копирую alsa_output.pci-0000_00_1b.0.analog-stereo
Создаём файл ~/.config/wireplumber/wireplumber.conf.d/51-Speakers-rename.conf с содержимым
внутри
Информация: Мои колонки иногда могут иметь другое название
node, то есть в конфиге записываю 2 узла в качестве применения свойств переименования
monitor.alsa.rules = [
{
matches = [
{
node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo.2"
}
]
actions = {
update-props = {
node.description = "Колонки",
node.nick = "Колонки",
}
}
}
{
matches = [
{
node.name = "alsa_output.pci-0000_00_1b.0.analog-stereo"
}
]
actions = {
update-props = {
node.description = "Колонки",
node.nick = "Колонки",
}
}
}
]
При перезагрузке pipewire вот что у меня получилось в pulsemixer

# Отключение ненужного выхода аудио HDMI GPU
В этот раз ищем не в узлах (Node) а в Device
pw-cli list-objects Device
.............
id 42, type PipeWire:Interface:Device/3
object.serial = "42"
factory.id = "14"
client.id = "32"
device.api = "alsa"
device.description = "Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590]"
device.name = "alsa_card.pci-0000_03_00.1"
device.nick = "HDA ATI HDMI"
media.class = "Audio/Device"
..............
То есть копируем alsa_card.pci-0000_03_00.1
Создаём файл ~/.config/wireplumber/wireplumber.conf.d/51-amd-disable.conf с
содержимым внутри
Пояснение:
Под
matchesвместоnode.nameдолжно бытьdevice.nameПод
apply_propertiesвводите["device.disabled"] = trueэто применяет отключение данного аудиоустройства которое вы выставили в matches
monitor.alsa.rules = [
{
matches = [
{
device.name = "alsa_card.pci-0000_03_00.1"
},
{
device.name = "alsa_output.pci-0000_03_00.1.hdmi-stereo-extra5"
}
]
actions = {
update-props = {
device.disabled = true
}
}
}
]
После перезагрузки pipewire в pavucontrol больше не будет появлятся ненужное
аудио устройство
