[RFC] pipewire: split p-m-s into separate package, do not autostart session manager by default#38521
[RFC] pipewire: split p-m-s into separate package, do not autostart session manager by default#38521CameronNemo wants to merge 3 commits intovoid-linux:masterfrom
Conversation
1d045c1 to
5f344d4
Compare
|
How well does this work if someone has their own /etc/pipewire/pipewire.conf with wireplumber in |
|
Yeah I think it would. I am planning to send a PR for the docs repository, but the Void recommended method of running wireplumber would be to add a drop in with the same name that masks the default pipewire-media-session one. I am waiting on the next pipewire release for this to work correctly, though. The whole masking part does not happen without some changes to the config handling that were made a short time ago. |
5f344d4 to
add2734
Compare
Based on recent changes to the pipewire package, there is an easy way to switch to wireplumber or disable p-m-s autostart entirely. void-linux/void-packages#38521
|
How wonky do things get with both wireplumber and p-m-s running? |
|
Looks like pipewire exits from what I can tell. |
|
Any further comments on this? Using wireplumber on Void was never documented or particularly convenient. This pair of PRs would change that situation. |
|
I'm unsure about changing the config file setup, this is going to break peoples config and there is going to be a big breaking change of wireplumber configuration in the near future. I think I would rather just update pipewire now and then reserve a better configuration setup for when wireplumber is to change compatibility. Another thing is that |
|
umm. tbh I am really not following your thought process there. p-m-s is broken/abandoned, so continue to ship it by default and make it really inconvenient and hacky to use wireplumber?? I can shift the default to wireplumber in this PR to just get that break over with. I know the wireplumber config will change, but this PR does not touch wireplumber configs. Do most users need to adjust the wireplumber config? On both my computers it just worked OOTB. |
We are only in this situation because we diverted from the default configuration. Adding the new mechanism diverts more and will introduce issues for anyone who already just masked the default configuration. There will be more breaking changes in the future as we should switch to wireplumber by default and we can't just simply switch over because it introduces a build cycle. I don't think there is a reason to rush a change that breaks the configuration by combining it with the pipewire update. It would probably be cleaner to revert back to the default configuration that does not start a session manager and then document that users can add a drop in configuration file, like shipped in this PR to start a session manager through pipewire. |
Ok that was not really my intention to bundle, just the way I wanted to do it needed changes upstream so I had to wait for the update.
Yeah that would work fine for me. I use a service manager to supervise wireplumber. But that way would break everyone rather than just the subset who overrode the XBPS-provided default config to use wireplumber. |
|
Driven by discussion in IRC, my current plan is to:
I will likely need to wait until October until I have time to refresh this PR. In the meantime please do not hesitate to separately update pipewire, I will need to rebase my branch regardless so it should be no issue. |
I just ran into this issue, 👍 for me on this approach. |
|
I've also been using Keep in mind 4c572dc added |
|
@JamiKettunen thanks for the notes |
add2734 to
4b698e3
Compare
4b698e3 to
795552a
Compare
Based on recent changes to the pipewire package, a user must manually configure a session manager, and they should use WirePlumber. void-linux/void-packages#38521
|
I have updated this branch and would appreciate review and additional testers. |
Split pipewire-media-session. Wireplumber should be used by most users instead. pipewire-media-session will be re-added as a standalone package.
795552a to
2b47aa0
Compare
Add a dependency on pipewire Add a conflict with pipewire-media-session Add a Desktop Application file
2b47aa0 to
7e5d0fd
Compare
|
I have updated this branch and would appreciate review and additional testers. |
|
Tested this PR and everything works as expected (used the |
|
pipewire-media-session 0.4.2 is now out: https://gitlab.freedesktop.org/pipewire/media-session/-/releases The
Aside from that 👍 from me. |
@paper42 I added this on your suggestion... do you have any comments here? I agree with oreo here that the context.exec methodology is a more surefire way to run the session manager. |
|
It is pretty clear that upstream does not want people running p-m-s anymore:
I don't think p-m-s should be split into a subpackage; it should just be dropped with the (next) release of pipewire. At the very least, this means we should probably tack on an install message now to warn people that this will happen. Wireplumber shouldn't depend on pipewire; in fact, the dependency should be the other way around when p-m-s is no longer an option (unless we have an alternative session manager packaged). Having the proper dependency relationship should minimize the pain of transition for users with the default configuration, but it creates a build cycle that we will have to break. Options include:
|
|
@ahesford no offense but I dislike all three options listed. I don't think telling users to install wireplumber instead of pipewire is too much to ask. Many users won't need to manually install either; it can be pulled in by other meta packages like gnome/kde ones. The only package name which I would be happy with for a theoretical |
|
All options are undesirable, sure; but they are not all equally undesirable. As it stands, your proposal ships a pipewire package that will not function without adding additional packages. GNOME and KDE may pull in wireplumber; other people (like me) have already manually installed wireplumber; still others may only have pipewire installed, and not having pipewire pull in a session manager means that those users upgrading (or pulling pipewire for the first time) will find that the default configuration is broken. You can make the argument that new users should read the docs, and we should have documentation that tells people "to use pipewire, install If you concede that something should exist as a convenience to pull in both pipewire and wireplumber, making |
|
I don't think I have the bandwidth for this. I've already gone through multiple iterations over the course of months, and have been repolocking pipewire and wireplumber during that time. Someone else is welcome to pick this up. |
pipewire will not work without a session manager; the previously included pipewire-media-session has long been deprecated and is now abandoned [1]. Making pipewire depend on wireplumber would create a cycle, so the cycle is broken with a rename and a new metapackage: 1. Rename pipewire -> pipewire-utils to clear the pipewire name 2. New pipewire meta depends on pipewire-utils and wireplumber The rename is a violation of policy but allows existing pipewire users to see the new meta as an update that will pull in an updated real pipewire alongside the now-required wireplumber. Continuing the work of void-linux#38521. [1] https://gitlab.freedesktop.org/pipewire/media-session/-/releases/0.4.2
Continuing work done in void-linux#38521.
pipewire will not work without a session manager; the previously included pipewire-media-session has long been deprecated and is now abandoned [1]. Making pipewire depend on wireplumber would create a cycle, so the cycle is broken with a rename and a new metapackage: 1. Rename pipewire -> pipewire-utils to clear the pipewire name 2. New pipewire meta depends on pipewire-utils and wireplumber The rename is a violation of policy but allows existing pipewire users to see the new meta as an update that will pull in an updated real pipewire alongside the now-required wireplumber. Continuing the work of void-linux#38521. [1] https://gitlab.freedesktop.org/pipewire/media-session/-/releases/0.4.2
Continuing work done in void-linux#38521.
|
Taking this up in #41846 |
Continuing work done in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
pipewire will not work without a session manager; the previously included pipewire-media-session has long been deprecated and is now abandoned [1]. Making pipewire depend on wireplumber would create a cycle, so the cycle is broken with a rename and a new metapackage: 1. Rename pipewire -> pipewire-utils to clear the pipewire name 2. New pipewire meta depends on pipewire-utils and wireplumber The rename is a violation of policy but allows existing pipewire users to see the new meta as an update that will pull in an updated real pipewire alongside the now-required wireplumber. Continuing the work of void-linux#38521. [1] https://gitlab.freedesktop.org/pipewire/media-session/-/releases/0.4.2
Continuing work done in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
Also provide a desktop file for convenient autostart. Continues work started in void-linux#38521.
This proposes major changes to the handling of PipeWire session managers.
The PipeWire developers recommend the use of WirePlumber, but this is inconvenient with the current pipewire package.
In this PR I aim to improve the UX of void pipewire users by:
The most immediate implication is that Void users who are using the default configuration (pipewire-media-session) and upgrade to this new pipewire version without further intervention will have their setups broken. There will be no session manager running and pipewire will not function correctly. A news post will likely be needed to ensure that users are well informed of how to proceed.
Testing the changes
New package