

Quoting Wikipedia:szatox wrote:that's the first time I've ever seen an audio subsystem doing video capture. Seriously... Why?
In 2015, Taymans started work on PipeWire. It was based on ideas from several existing projects, including one called PulseVideo by William Manley. According to Red Hat's Christian Schaller, it drew many of its ideas from an early PulseVideo prototype by Manley and builds upon some of the code that was merged into GStreamer due to that effort. A goal of the project was to improve handling of video on Linux in the same way that PulseAudio improved handling of audio.
Although a separate project from PulseAudio, Taymans initially considered using the name "PulseVideo" for the new project. By June 2015, the name "Pinos" was being used, after the city Pinos de Alhaurin in Spain, where Taymans used to live.
Initially, Pinos only handled video streams. By early 2017, Taymans had started working on integrating audio streams. Taymans wanted to support both consumer and professional audio use cases, and consulted Paul Davis (Jack developer) and Robin Gareus (Ardour developer) for advice on implementation for professional audio. At this time, the name PipeWire was adopted for the project.

Code: Select all
$ pw-link -l
eq15_out:output_FL
|-> alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FL
eq15_out:output_FR
|-> alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FR
alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FL
|<- eq15_out:output_FL
alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FR
|<- eq15_out:output_FRCode: Select all
$ pw-link -l
eq15_in:playback_FL
|<- DeaDBeeF Music Player:output_FL
eq15_in:playback_FR
|<- DeaDBeeF Music Player:output_FR
eq15_out:output_FL
|-> alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FL
eq15_out:output_FR
|-> alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FR
alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FL
|<- eq15_out:output_FL
alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FR
|<- eq15_out:output_FR
DeaDBeeF Music Player:output_FL
|-> eq15_in:playback_FL
DeaDBeeF Music Player:output_FR
|-> eq15_in:playback_FRCode: Select all
pw-link eq15_out:output_FL alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FL
pw-link eq15_out:output_FR alsa_output.pci-0000_0d_00.4.analog-stereo:playback_FR
The only reason it's not typical is because programmers like to invent technical solutions to social problems. And I'll stop here, before I write a book about my reasonsI don't run multi-user so I've never set it up, and it's not the typical usage

I managed to get sound after a full login, but not when changing a user for application via su.Have you tried running two pipewires at the same time (one per user), using a common config file.
Almost... AFAIK it talks directly to hardware, which makes perfect sense, but also creates a conflict on any audio device without a hardware mixer. I don't know if it's possible to point a sound server to dmix instead, and if it was, how to control the output afterwards. Like that BT headphones you mentioned. What if I want to ring on speakers and then talk via a headset? It's not a particularly weird scenario.Everything devolves to using alsa underneath it, as far as I can tell.
So do I, but running everything on your user is not very different to running everything as root.Note: I run a single user system, so I haven't tried it or had the need for it.

Code: Select all
$ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC257 Analog [ALC257 Analog]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 3: HDMI 0 [FUNAI TV]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 7: HDMI 1 [HDMI 1]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH], device 8: HDMI 2 [HDMI 2]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
Code: Select all
$ pw-link -o
alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FL
alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FR
alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo:playback_FL
alsa_output.usb-GeneralPlus_USB_Audio_Device-00.analog-stereo:playback_FR

I'm on default config right now.USE="X bluetooth dbus extra ffmpeg jack-sdk modemmanager readline sound-server ssl v4l zeroconf -doc -echo-cancel -flatpak -gsettings -gstreamer -ieee1394 -jack-client -liblc3 -lv2 -man -pipewire-alsa -roc (-selinux) (-system-service) -systemd -test"
Code: Select all
Audio
├─ Devices:
│ 33. ThinkPad USB-C Dock Gen2 USB Audio [alsa] # card 2
│ 49. Wbudowany dźwięk [alsa] # card 0; builtin audio
│ 62. USB Audio Device [alsa] # card 1; 2$ dongle
│
├─ Sinks:
│ * 55. Wbudowany dźwięk Analogowe stereo [vol: 0.38]
│ 67. ThinkPad USB-C Dock Gen2 USB Audio Analogowe stereo [vol: 0.40]
│ 83. USB Audio Device Analogowe stereo [vol: 0.40]
│

Code: Select all
.config/pipewire/pipewire.conf.d/sink-eq15.conf
.config/pipewire/pipewire.conf
.config/wireplumber/main.lua.d/50-default-access-config.lua
.config/wireplumber/main.lua.d/40-device-defaults.lua
.config/wireplumber/main.lua.d/90-enable-all.lua
.config/wireplumber/main.lua.d/50-alsa-config.lua
.config/wireplumber/bluetooth.lua.d/50-bluez-config.lua
.config/wireplumber/wireplumber.confgentoo-pipewire-launcher &In other words, pipewire -c /etc/pipewire/somefile & or just pipewire &

Code: Select all
apply_properties = {
-- Use ALSA-Card-Profile devices. They use UCM or the profile
-- configuration to configure the device and mixer settings.
["api.alsa.use-acp"] = true,
-- Use UCM instead of profile when available. Can be
-- disabled to skip trying to use the UCM profile.
--["api.alsa.use-ucm"] = true,
-- Don't use the hardware mixer for volume control. It
-- will only use software volume. The mixer is still used
-- to mute unused paths based on the selected port.
--["api.alsa.soft-mixer"] = false,