Ax9D / pw-viz

Pipewire graph editor written in Rust. WIP⚠️
GNU General Public License v3.0
230 stars 14 forks source link

Unification of multiple nodes belonging to the same application #1

Open mkrasnitski opened 2 years ago

mkrasnitski commented 2 years ago

In comparison to using QjackCtl, if an application has multiple outputs or inputs, they each appear as separate nodes in the graph. Helvum also suffers from this problem. For example, if I open pavucontrol, each separate input is on a separate node, one for each currently running application, whereas QjackCtl unifies them into a single node. Here's a screenshot of QjackCtl: image

Compared to pw-viz: image

You'll notice QjackCtl doesn't unify everything. It puts inputs and outputs in the same node, but not monitors. pw-viz does the opposite, putting inputs and monitors together, but not outputs. I think it would be great to put them all in one node. Additionally, on the pavucontrol node, all the left channels are stacked together, and then the right channels. I think it'd be better to stack pairs together.

Ax9D commented 2 years ago

That seems like a good idea, should be relatively straightforward to implement, I have setup a branch to experiment with this.

Atakku commented 2 years ago

Unification looks great, except in cases of self linkage, maybe there is a better way to display those 20220109105352

Atakku commented 2 years ago

also this may not be very intuitive when there are several tabs in Firefox for example, maybe add some sort of a divider in-between? 20220109115430

Atakku commented 2 years ago

Also apps that interact with my mic and headphones at the same time can look confusing (here is Discord for example) 20220109121913

Ax9D commented 2 years ago

Unification looks great, except in cases of self linkage, maybe there is a better way to display those 20220109105352

I will be adding parameters to control the bezier curve, also you can make the node background transparent to better see the self links

also this may not be very intuitive when there are several tabs in Firefox for example, maybe add some sort of a divider in-between? 20220109115430

I agree, as a temporary workaround you can hold down the control key, which will show the id of the tabs in between

Also apps that interact with my mic and headphones at the same time can look confusing (here is Discord for example) 20220109121913

While I can see how this can be confusing I think this is fine as rerouting audio like this isn't that common; also grouping nodes together makes finding the input/output port you want to connect to easier(as they are in one place), plus this makes the graph easier to parse visually imo,

the ultimate solution to this would be to make grouping nodes a setting that the user can turn on and off based on their preference/usecase.

Other ideas/suggesetion are ofcourse welcome.

mriise commented 2 years ago

I personally like the idea of being able to optionally split a node into its outputs, inputs, and monitors for nicer looking graphs. Combined is a sensible default, but the option would be nice.