lxqt / pavucontrol-qt

A Pulseaudio mixer in Qt (port of pavucontrol)
https://lxqt.github.io
GNU General Public License v2.0
107 stars 29 forks source link

Workflow Optimization: Configuration On/Off, global device switching #84

Open kazetsukaimiko opened 5 years ago

kazetsukaimiko commented 5 years ago
Current Behavior

If you have a number of applications using various audio devices for output and input, and you wish to "move" all of them to a specific device (like if you're playing audio through your home theatre audio and wish to take a conference call on a headset), I've found myself going to the configuration tab to set the profiles of all other devices to "Off". This involves going into the dropdown, and in some cases, scrolling through a large number of options.

Possible Solution

I would suggest removing "Off" from the entries in the Configuration tab's "Profile" dropdown, opting for a checkbox enabling/disabling the dropdown control instead. I've found I switch profiles very infrequently, ususally only to disable them.

Additionally, for any Configuration with an Active (not "Off") Profile, two or three buttons: 1) Move All Playback Applications to this profile (X) 2) Move All Recording Applications to this profile (Y) 3) Move All Playback/Recording Applications to this profile (Z)

Depending of course, on whether the profile is a valid source/sink.

And given the ability to move applications between sources/sinks on the Configuration tab this way, it may be of utility to have a small area dedicated to each device showing which applications currently belong to its active profile, like:


Built-in Audio Profile : (X)(Y)(Z) | Analog Stereo Duplex \/ | On Playback: Chrome, SMPlayer, DOOM On Recording:


USB Device Profile : (x)(Y)(z) | Analog Stereo Input \/ | On Recording: Slack


USB Device Profile : (X)(y)(z) | Analog Stereo Ouput \/ | On Playback: Clementine


Context

First of all, I love this port. Its really nice and clean. Thanks to the developers, as this is one of my most frequently used applications. I do find some current workflows a little less than optimal in some cases, which is why I'm reaching out.

On occasion, (particularly on HDMI output devices like my NVIDIA cards) where there are lots of "Profile" entries, sometimes when I open the dropdown it will spontaneously close as I start to scroll. This is likely a window management/focus issue of some kind rather than an issue with this package, as I believe the gtk version of pavucontrol has the same issue. (KWin and Compiz)

Further, when I switch profiles it tends to be more of off-to-on-to-off rather than from one useful profile to another. Both a quick button to move all applications to a given device and a way to quickly disable a device would be useful. If I take a conference call for example, I want to ensure a new tab in my browser doesn't start playing a commercial on my home theatre speakers by mistake, not just move everything over.

System Information
palinek commented 5 years ago

@kazetsukaimiko Please test #87. (There is not everything implemented you have suggested here)

kazetsukaimiko commented 5 years ago

Thanks @palinek, on it.

kazetsukaimiko commented 5 years ago

So, there's probably a better way of doing this, I ended up modifying the existing Arch/AUR PKGBUILD script:

build() {
  rm -Rf build ; mkdir build ; cd build
  cd $srcdir/pavucontrol-qt
  pwd
  git checkout origin/profile_off
  cd $srcdir/build
  cmake $srcdir/$_pkgname \
          -DCMAKE_INSTALL_PREFIX=/usr
  make
}

Builds, installs, runs. Seems to work out quite well. Checking the checkbox is the same as selecting 'Off' as it is in master. Switching profiles works, the default/fallback behavior is the same.

pavucontrol_checkboxes

This is one of those really subtle things that I think improves the experience tremendously, as long as you're fine with straying from the GTK equivalent's UI.

As for my other requests, I'm not hung up on them. Some other things I came up when thinking about this: -If one were to list applications here, "button-like boxes" that can be dragged between profiles could be an intuitive way of arranging sink/source assignments. -I use UPnP / Avahi / Zeroconf to share audio between several rigs. This could complicate the mentioned potential improvement of showing streams under an active profile. pavucontrol_remotes

I have considered filing another enhancement request to be able to filter these under the "Show" dropdown shown in the second screenshot. I'm also not sure why there's 4 streams shown for (what seems like) the same stream.

kazetsukaimiko commented 5 years ago

Also, I saw the behavior mentioned in #87 where restarting the application in 'off' resulted in it "forgetting" which was last selected. I don't think this is a deal breaker, it does introduce a little bit of inconsistent UI behavior. Given my understanding of the problem, I don't see a way around this short of persisting some kind of configuration/state somewhere and unless you're doing that elsewhere, its not worth it.

kazetsukaimiko commented 3 years ago

Configuration on/off has been implemented for a while. Is there interest in any of the other mentioned enhancements or can we close this issue?

ringo32 commented 3 years ago

like right click on volume icon is there to choose which profile ?

https://imgur.com/a/jhyNV9Z

but does not work proper... like chromium stays on profile a instead of b as example... is with smplayer te same ? would also be awesome a keybind option to switch..