Менеджмент сессии аудиоустройств - Wireplumber
2023-03-06T23:42:47+05:00
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/main.lua.d/
Создаём внутри main.lua.d наш первый конфиг чтобы переименовывать входной и выходное аудиоустройство в более понятном виде.
nvim ~/.config/wireplumber/main.lua.d/51-Samson_C01UPro-rename.lua
Пояснение:
В
node.description
указываем ваше укороченное имя, это название будет применятся на общих для аудиомикшерах программ таких как pavucontrol, pasystray, cli pulsemixer и т.дА
node.nick
указываем то же самое но название но оно уже предназначено для применения наименования для профессиональных программ таких как patchbay, qpwgraph, QjackCtl и т.д
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.analog-stereo" },
},
},
apply_properties = {
["node.description"] = "C01U Pro",
},
}
table.insert(alsa_monitor.rules, rule)
rule = {
matches = {
{
{ "node.name", "equals", "alsa_input.usb-Samson_Technologies_Samson_C01U_Pro_Mic-00.mono-fallback" },
},
},
apply_properties = {
["node.description"] = "C01U Pro",
["node.nick"] = "C01U Pro"
},
}
table.insert(alsa_monitor.rules, rule)
Сохраняем и перезагружаем 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
nvim ~/.config/wireplumber/main.lua.d/51-Speakers-rename.lua
rule = {
matches = {
{
{ "node.name", "equals", "alsa_output.pci-0000_00_1b.0.analog-stereo" },
},
},
apply_properties = {
["node.description"] = "Колонки",
["node.nick"] = "Колонки"
},
}
table.insert(alsa_monitor.rules, rule)
При перезагрузке 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
nvim ~/.config/wireplumber/main.lua.d/51-amd-disable.lua
Пояснение:
Под matches вместо
node.name
должно бытьdevice.name
Под
apply_properties
вводите["device.disabled"] = true
это применяет отключение данного аудиоустройства которое вы выставили в matches
rule = {
matches = {
{
{ "device.name", "equals", "alsa_card.pci-0000_03_00.1" },
},
},
apply_properties = {
["device.disabled"] = true,
},
}
table.insert(alsa_monitor.rules, rule)
После перезагрузки pipewire в pavucontrol больше не будет появлятся ненужное аудио устройство