Bug: https://bugs.gentoo.org/744622
Bug: https://bugs.gentoo.org/859280
Signed-off-by: Sam James <s...@gentoo.org>
---
 .../2022-07-28-pipewire-sound-server.en.txt   | 130 ++++++++++++++++++
 1 file changed, 130 insertions(+)
 create mode 100644 
2022-07-28-pipewire-sound-server/2022-07-28-pipewire-sound-server.en.txt

diff --git 
a/2022-07-28-pipewire-sound-server/2022-07-28-pipewire-sound-server.en.txt 
b/2022-07-28-pipewire-sound-server/2022-07-28-pipewire-sound-server.en.txt
new file mode 100644
index 0000000..6ebe676
--- /dev/null
+++ b/2022-07-28-pipewire-sound-server/2022-07-28-pipewire-sound-server.en.txt
@@ -0,0 +1,130 @@
+Title: Pipewire sound server migration
+Author: Sam James <s...@gentoo.org>
+Posted: 2022-07-28
+Revision: 1
+News-Item-Format: 2.0
+Display-If-Installed: media-video/pipewire
+Display-If-Installed: media-sound/pulseaudio
+Display-If-Installed: media-sound/pulseaudio-daemon
+Display-If-Installed: media-libs/libpulse
+
+PipeWire has gained a new USE flag "sound-server" for enabling/disabling its
+sound server capabilities.
+
+This change is needed to avoid PipeWire and PulseAudio conflicting over control
+of audio devices. Before this change, OpenRC users were in some cases 
accidentally
+migrated to PipeWire which was difficult to override without manually editing
+launcher files.
+
+For non-audio purposes, PipeWire is installed in many configurations as more
+and more software depends on it for e.g. screensharing, sandboxing,
+and window previews, so users will need to act based on their preferred
+setup rather than simply avoiding installing PipeWire, as it is
+increasingly required as a dependency.
+
+Packages needing PulseAudio's APIs will be migrated from the now-meta package
+media-sound/pulseaudio to depending on media-libs/libpulse. The runtime
+PulseAudio server can be provided by either PipeWire (media-video/piepwire)
+or the original PulseAudio (media-sound/pulseaudio-daemon).
+
+The new sound-server USE flag for PipeWire allows easily controlling
+this behavior.
+
+There are several options available:
+
+1. To use PipeWire for sound, users should enable USE=sound-server for 
PipeWire:
+
+  Place the following entries in /etc/portage/package.use:
+  ```
+  media-video/pipewire sound-server
+  media-sound/pulseaudio -daemon
+  ```
+
+  First, sync:
+  $ emerge --sync
+
+  Deselect media-sound/pulseaudio-daemon:
+  $ emerge --deselect media-sound/pulseaudio-daemon
+
+  Then perform a world upgrade:
+  $ emerge --ask --update --changed-use --deep @world
+
+  Then depclean:
+  $ emerge --ask --depclean
+
+  OpenRC users on an XDG-compliant desktop which respects autostart files
+  will not need to take any further action.
+
+  OpenRC users using a minimal desktop which does not respect autostart
+  files will need to run `gentoo-pipewire-launcher &` in e.g.
+  `~/.xprofile`.
+
+  systemd users will also need to run the following commands:
+  $ systemctl --user --now disable pulseaudio.service pulseaudio.socket
+  $ systemctl --user --now enable pipewire.socket pipewire-pulse.socket
+  $ systemctl --user --now disable pipewire-media-session.service
+  $ systemctl --user --force enable wireplumber.service
+
+2. To use PulseAudio's daemon for sound, users should disable USE=sound-server 
for PipeWire,
+  enable USE=daemon on media-sound/pulseaudio, and add 
media-sound/pulseaudio-daemon to
+  their world file:
+
+  Place the following entries in /etc/portage/package.use:
+  ```
+  media-video/pipewire -sound-server
+  media-sound/pulseaudio daemon
+  ```
+
+  Add media-sound/pulseaudio-daemon to @world:
+  $ emerge --noreplace media-sound/pulseaudio-daemon
+
+  Then perform a world upgrade:
+  $ emerge --ask --update --changed-use --deep @world
+
+  Then depclean:
+  $ emerge --ask --depclean
+
+  OpenRC users on an XDG-compliant desktop which respects autostart files
+  will not need to take any further action.
+
+  OpenRC users using a minimal desktop which does not respect autostart
+  files should consider adding `gentoo-pipewire-launcher &` in e.g.
+  `~/.xprofile` but it's not strictly required in terms of audio
+  handling. It may be required in future for the non-audio usecases
+  described above.
+
+  systemd users will also need to run the following commands:
+  $ systemctl --user --now enable pulseaudio.service pulseaudio.socket
+  $ systemctl --user --now disable pipewire.socket pipewire-pulse.socket
+
+3. For users without sound on their system, those using JACK without
+   PipeWire, or those using pure ALSA without PipeWire, the following steps
+   are recommended:
+
+   Place the following entries in /etc/portage/package.use:
+   ```
+   media-video/pipewire -sound-server
+   media-sound/pulseaudio -daemon
+   ```
+
+   Then perform a world upgrade:
+   $ emerge --ask --update --changed-use --deep @world
+
+   Then depclean:
+   $ emerge --ask --depclean
+
+   OpenRC users on an XDG-compliant desktop which respects autostart files
+   will not need to take any further action.
+
+   OpenRC users using a minimal desktop which does not respect autostart
+   files will need to run `gentoo-pipewire-launcher &` in e.g.
+   `~/.xprofile`.
+
+   systemd users will also likely want to run the following commands, again
+   for the purposes of non-audio PipeWire use:
+   $ systemctl --user --now enable pipewire.socket
+   $ systemctl --user --now --force enable wireplumber.service
+
+
+Further resources:
+* https://wiki.gentoo.org/wiki/PipeWire
-- 
2.37.1


Reply via email to