Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
kazetsukaimiko opened this issue Oct 4, 2018 · 6 comments

Comments

@kazetsukaimiko
Copy link

kazetsukaimiko commented Oct 4, 2018

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
  • Distribution & Version: Arch Linux
  • Kernel: 4.18.9-arch1-1-ARCH
  • Qt Version: 5.11.2-1
  • libqtxdg Version: 3.2.04
  • lxqt-build-tools Version: 0.5.0-1
  • Package version: 0.4.0-1
@palinek
Copy link
Contributor

palinek commented Oct 5, 2018

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

@kazetsukaimiko
Copy link
Author

Thanks @palinek, on it.

@kazetsukaimiko
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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
Copy link

ringo32 commented Oct 25, 2020

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..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants