PipeWire

Pipewire is a Article description::low-latency and graph-based processing engine and a server for interfacing with audio and video devices that can be used to support use cases currently handled by ALSA, OSS, PulseAudio and/or JACK.

Some key features include:
 * Minimal latency capture/playback of audio and video;
 * Real-time multimedia processing;
 * Multi-process architecture allowing multimedia content sharing between applications;
 * Seamless support for PulseAudio, JACK, ALSA, and GStreamer; and
 * "Sandboxed" applications support with Flatpak.

Configuration
Pipewire configuration is managed via system-wide settings or user launch options. The following command edits the system-wide configuration file:

Session Manager (pipewire-media-session)
TBD

Systemd
PipeWire provides socket and service files when built with the  USE flag. The following systemctl command enables systemd's socket activation of PipeWire in the current user's session:

The socket activation only starts the service when required, which is usually sufficient. Alternatively the daemon can be always when the user logs in by replacing pipewire.socket with pipewire.service:

OpenRC or other
The user must ensure there is a viable D-Bus session active:

The user must ensure that XDG_RUNTIME_DIR is set. This is usually managed by a systemd-specific Pluggable Authentication Module and the  service. Likewise elogind should manage the creation.

If not, the user must create the require directory and set the environmental variable

The Pipewire executable must also be called:

Replacing PulseAudio
To have Pipewire to act as a PulseAudio service, un-comment the pipewire-pulse line in the main configuration file:

For systemd, enable the service instead:

A reboot/logout is required for the change to take effect.

Testing
To check whether Pipewire is now acting as the PulseAudio service, use the pactl command:

CSGO (other source-based games)
The default sound buffer length is 0.025. This can sometimes be too low causing cracking audio. Pulseaudio automatically increases the buffersize. It is undecided whether Pipewire will in future automatically increase the buffer length

for now, the workaround is to increase the size of the buffer from within CSGO "snd_mixahead is the length of the sound buffer in seconds, so 0.05 is 50ms (0.10, edited: 25ms is the default). This is essentially the audio delay, so reducing it gives better synchronization. Not all hardware can handle this low of a buffer setting though, so if you hear any crackling or pops at 0.05, increase this setting by 0.01 until the crackling/pops disappear."

Increasing RLIMIT_MEMLOCK
is set in the service file by default(refer to ), adjust it to 256K or higher via:

add: then restart the service.

bluetooth
by default, bluez5 module is disabled in the configuration file, uncomment it to have bluetooth as sinks: {{FileBox|filename=/etc/pipewire/media-session.d/media-session.conf|1= ... modules = { ...   default = [ ...       bluez5          # bluetooth support ...   ]    ... }} then run: