-`contrib/rtkit` and a realtime compatible kernel to help with latency, add your user to `rtkit group` to be able to make use of it
- [an stackoverflow question on the topic](https://stackoverflow.com/questions/817059/what-is-preemption-what-is-a-preemtible-kernel-what-is-it-good-for)
- [Real-Time Linux collaborative project](https://wiki.linuxfoundation.org/realtime/start)
- please look at `contrib/pipewire/Pkgfile` for further optional dependencies listed and rebuild the package after installing new optional dependencies
`pipewire` will always leverage `alsa`, so you should configure that first. Use `alsactl store` to store those settings, and configure `/etc/rc.conf` to start `/etc/rc.d/alsa` by default. While you are in `rc.conf`, make sure you start `/etc/rc.d/dbus` too, if you haven't already.
Currently, pipewires default config format might always change, so it is advised to keep an eye on `rejmerge` to keep your configs updated.
The default config can be modified in directly `/etc/pipewire`. The configuration of `/etc/pipewire` can be copied over to `$XDG_CONFIG_HOME/pipewire`, which should most likely point you to `$HOME/config/pipewire`.
Normally, you wouldn't need to change anything to run `pipewire` as an a/v-server, so in the simplest setup it should suffice to run `/usr/bin/pipewire` from a users shell or script (for example I have this in my `i3` config: `exec "/usr/bin/pipewire"`), just make sure that whatever session you are running will be executed as a `dbus-user-session` too (for example from my `~/.xinitrc`: `exec dbus-run-session -- i3`)
## Running pipewire-pulse as a pulseaudio-server
If you are a `pulseaudio`-user, make sure it won't autostart with your session. For `pipewire` to handle `pulse-clients`, you will need to run `/usr/bin/pipewire-pulse` as well. Verify that it is working with `pactl info` which should now report: `Server Name: PulseAudio (on PipeWire 0.3.22)`. Now you can use tools like `contrib/pavucontrol` or `contrib/ncpamixer` to control your typical sources and sink settings, ports like `opt/firefox-bin` and whatever else uses `pulseaudio` should work ootb for you too.