I’m trying to wrap my head around the pipewire ecosystem. I think it’s great that we’re getting a fully featured audio system with all the upsides of pulseaudio and jack, and none of the downsides (that I know of), plus a bunch of completely new features. However, I can’t help but think it could have used a little more vision in its interface (or maybe just qpwGraph).

From what I’ve read, my mental model is that pipewire holds the graph, while a “session manager” manipulates it (create/modify/remove new nodes/ports/links/etc). That’s fine. I also understand that wireplumber is such a session manager, and despite having a really convoluted config syntax, it does its job (I assume).

As a simpleton, though, I’m drawn to the wysiwyg interface of qpwGraph, but it’s not clear to me how it’s supposed to fit into pipewire’s vision or how it interacts with wireplumber. It seems to render the current pipewire graph as it is, it can create/remove links between ports, but also it’s not a session manager (right?).

I suspect that whatever I can do in qpwGraph I could also do using just wireplumber via conf files and the cli. But dragging my mouse between nodes is so much easier than learning a new syntax. But then I also don’t understand what “Active” and “Exclusive” mean. I’m guessing that if Active isn’t checked, it won’t do anything at all, but if Exclusive isn’t checked then…maybe wireplumber can override it? Does that mean if Exclusive IS checked it’s able to override wireplumber (look at me, I am the session manager now)? Is that why, if I have a qpwgraph active that links VLC to both OBS and my headset, I hear/see a delay of the link to my headset when a VLC process launches? First wireplumber decides where it should link, and then qpwGraph modifies it several ms after?

I feel like it’s currently not clear what qpwGraph is in pipewire terms, but it’s also clearly the most intuitive way for someone to use pipewire right now. I think it would be best if qpwGraph was either a standalone, fully featured session manager (not to be used in combination with wireplumber) or just a front end for wireplumber rather than talking to pipewire directly.

Thoughts? Anyone else confused? Am I missing a piece to the puzzle?

You are viewing a single thread.
View all comments
6 points

Pipewire is the audio server

Wireplumber manages your interfaces and their connections automatically

Qpwgraph let’s you view and modify these interfaces and connections manually

Bot wireplumber and qpwgraph talk to pipewire to change the state of your interfaces, but they are unaware of each other. Theoretically this means you can forgo either qpwgraph or wireplumber, but you don’t really want to go without wireplumber as that would mean you have to configure every interface and connection manually.

permalink
report
reply
2 points

I don’t think I can forego wireplumber can I? qpwGraph won’t create new nodes. I guess I would be creating every node/port in pipewire directly, and then linking them using qpwGraph? But yeah, for every device I connect I would need to manually create a pipewire node?

So does that mean qpwGraph is a sort of minimal “session manager”?

permalink
report
parent
reply
3 points

Sort of, that said I rarely pull open qpwgraph (and I didn’t configure wireplumber yet either) and it’s been pretty ok for me.

Also remember that all these nodes correspond to some input or output stream (good chance it might be gstreamer or ffmpeg doing this) and from what I think is happening is that these are created by these programs through the pipewire API or the one from the other audio servers it’s faking and wireplumber merely hides them using some flag.

That said, I have not dug I to the pipewire documentation so this is a guess on my part.

permalink
report
parent
reply
1 point

The title really confused me at first.

permalink
report
parent
reply

Linux

!linux@lemmy.ml

Create post

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word “Linux” in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

  • Posts must be relevant to operating systems running the Linux kernel. GNU/Linux or otherwise.
  • No misinformation
  • No NSFW content
  • No hate speech, bigotry, etc

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

Community stats

  • 7.8K

    Monthly active users

  • 6.5K

    Posts

  • 179K

    Comments