Improve Plasma PA usability
Closed, ResolvedPublic

Description

There have been huge improvements to Plasma's audio handling in the past thanks to @drosca. But there is still room for more. Currently I see the following issues, which in some cases might be easy to fix, in other hard or even not possible at all:

Applet:

  • No switches to quickly change the default output directly from the applet. Fixed in D4751
  • No button to open the related KCM. Right click on the Systray icon and then selecting "Audio Volume" is possible though. Fixed in D4675 (but goes to Applet settings and not KCM for now).
  • The "General" section in the right click menu of the Systray icon holds config options, which should be available from within the KCM as well (or only from there).
  • Tiny volume indicator icons.
  • Middle click for muting is not intuitive, left click on indicator icon difficult because of size.
  • Names of devices are ambiguous, too long and too technical.
  • Device icons are ambiguous or wrong:
    • "Line Out" is most often not on an expansion card anymore today, but sits directly on the mainboard.
    • "HDMI / DisplayPort" shows a TV, although it might be connected to something else like a projector.
    • In many cases a user will have a CPU with integrated graphics and a mainboard with HDMI port as well as a GPU with HDMI. They will show the same TV and it's therefore not possible to distinguish them only by looking at the device icon.
    • The microphone icon for capture devices duplicates their indicator icons and is style-wise different from the playback device icons.
  • When having many devices, the list quickly becomes longer than the available space and you need to scroll. Which is difficult, because you can't use the scrollwheel for that on most of the applet because of the sliders. EDIT: fix becomes attainable in Qt 5.10

KCM:

  • On opening you are greeted with the Applications tab (which in most cases is empty). But what a user normally really want to see at first when he goes to the audio configuration in System Settings is a list of his audio devices and options to configure them. Fixed in D4732.
  • Tab titles are shortened because they are too long and they are inconsistent ("Applications" vs "Recordi.."). Fixed in D4732 (but only for English language maybe).
  • That there are in both cases two different tabs for "Applications" and "Record..." as well as "Output Devices" and "Input Devices" seems unnecessary and the result is normally lots of unused space in the tabs. Fixed in D4732.
  • The profiles in the "Configuration" tab are too technical and nowhere well explained. Also it's somehow dysfunctional on a technical level: Connecting my living room PC with a GTX950 over HDMI to a TV in most cases escalates to a random selection of one of ca. a dozen of possible profiles, until one of them works.

Other:

  • Default to not change streams on newly connected inputs/outputs is maybe not the right default. At least there should be an easy way to change the default after connecting without the need to open the KCM.
  • There are currently two KCMs, which seem to do mostly the same: "Audio Volume" and "Audio and Video". I assume the later one is the old one and in a bad state.
  • If an input/output is currently connected or not is nowhere indicated. But probing that should be possible in many cases. For example for HDMI or line out connections on modern mainboards.
romangg created this task.Feb 19 2017, 3:43 PM
This comment was removed by broulik.

No button to open the related KCM.

Could be fit next to the tab bar, I suppose.

Device icons are ambiguous or wrong:

That's unfortunately mostly due to a limitation of PulseAudio, it doesn't even distinguish between HDMI and DisplayPort…

No switches to quickly change the default output directly from the applet. […] Default to not change streams on newly connected inputs/outputs is maybe not the right default.

Definitely. We have this option now but for some reason we didn't make it the default. When I plug in my TV I want everything to go via HDMI. Period. KScreen does a phenomenal job nowadays to remember and/or choose sane defaults but then you end up having to mess with sound settings anyway.

There are currently two KCMs,

The Phonon KCM should die imho. We need to bring over the test sound feature and then it can go for good.

A couple of observations/suggestions I may add:

  • The Applications tab in the plasmoid does not have a "There's nothing playing right now" indicator, leaving to an empty page
  • The "Notification Sounds" pseudo-stream does not show up in the applet
  • The applet should remember last used page (e.g. there are people that prefer having the Applications tab by default but on Plasma restart this is reset)
  • While I appreciate the drag and drop to move between streams feature, I still find myself trying to use a non-existent context menu for that
  • It would be lovely to indicate the "corked" status of a stream on the Applications tab, too, so you can also see there which app is actually currently playing something (similar to what task manager does - might need a new icon as we would end up with three speaker icons on the same stream otherwise ;)

No switches to quickly change the default output directly from the applet.

This needs to go in, I forgot about it: https://phabricator.kde.org/D2314

Middle click for muting is not intuitive, left click on indicator icon difficult because of size.

You can mute the audio with middle-click on systray icon, which I think is pretty well-known, so I would not call muting with middle click not intuitive. However, middle clicking on touchpad is not always easy.

Names of devices are ambiguous, too long and too technical.

As @broulik said not much to do here because of PulseAudio, as it doesn't provide some "pretty display description". Only thing better would be to do some heuristic based on device properties.

When having many devices, the list quickly becomes longer than the available space and you need to scroll. Which is difficult, because you can't use the scrollwheel for that on most of the applet because of the sliders.

That's an issue in systray and not in plasma-pa, you can always use it outside of systray to have bigger popup.

I've tried disabling the wheel scrolling on sliders (because you can't disable it with QtQuickControls) with various hacks, but I failed. There was a patch to Qt to make it configurable, but it was rejected.

Tab titles are shortened because they are too long and they are inconsistent ("Applications" vs "Recordi..").

That's a bug (probably) in Qt font metrics. For some fonts (including Plasma default Noto fonts) Qt font metrics are broken. I even created Qt bug for this with testcase, but it was closed as invalid.

The profiles in the "Configuration" tab are too technical and nowhere well explained. Also it's somehow dysfunctional on a technical level: Connecting my living room PC with a GTX950 over HDMI to a TV in most cases escalates to a random selection of one of ca. a dozen of possible profiles, until one of them works.

That's how PulseAudio works. What we should do here is to hide disconnected outputs (eg. profiles that will certainly not work) - see https://bugs.kde.org/show_bug.cgi?id=365723

If an input/output is currently connected or not is nowhere indicated. But probing that should be possible in many cases. For example for HDMI or line out connections on modern mainboards.

PulseAudio reports if a port is connected or not, but I don't think it is supported for every device. How and where should we indicate it?

The Applications tab in the plasmoid does not have a "There's nothing playing right now" indicator, leaving to an empty page
The "Notification Sounds" pseudo-stream does not show up in the applet

Notification sounds stream is hidden in applet intentionally, because it is a permanent stream and we really don't have space to waste in applet. That being said, "nothing playing" message would be great (I already thought about that, but never got to actually implement it).

romangg added a comment.EditedFeb 21 2017, 5:59 PM

This needs to go in, I forgot about it: https://phabricator.kde.org/D2314

Looks good! As Thomas said in the review though, I'm also in favor of offering at least the "Default" setting directly in the applet or add a button next to every stream to show this context menu by clicking on it with left click. Like the burger menu button on the desktop.

As @broulik said not much to do here because of PulseAudio, as it doesn't provide some "pretty display description". Only thing better would be to do some heuristic based on device properties.

Are there only few available description provided by PA? I.e. is it for video outputs always "HDMI / Displayport (...)"? In this case we could do some regex in order to replace the long strings by something shorter at least.

That's how PulseAudio works. What we should do here is to hide disconnected outputs (eg. profiles that will certainly not work) - see https://bugs.kde.org/show_bug.cgi?id=365723

Does this mean that for example from my one dozen profiles for my HDMI connector only the ones are shown, which also play audio?

PulseAudio reports if a port is connected or not, but I don't think it is supported for every device. How and where should we indicate it?

Imo put them at the end of the list and add a third heading besides "Playback Devices" and "Capture Devices", which reads "Unplugged Devices" or something like this. Maybe make this also clickable to only list its content below it after clicking in contrast to the other categories.

Something else: I heard it's somehow possible with PA to play audio over several outputs simultaneously. Could we do that generically in the applet?

Are there only few available description provided by PA? I.e. is it for video outputs always "HDMI / Displayport (...)"? In this case we could do some regex in order to replace the long strings by something shorter at least.

You can see what properties are available from pa for devices (pactl list sinks or sources) and streams (pactl list sink-inputs or source-outputs).

Does this mean that for example from my one dozen profiles for my HDMI connector only the ones are shown, which also play audio?

No, it means that only the ones that are connected will be displayed. Eg. if you have 6 HDMI outputs and you see profiles for all of those in KCM, but you have only one HDMI port actually connected to monitor/TV - so only this connected port should be displayed in available profiles.

Imo put them at the end of the list and add a third heading besides "Playback Devices" and "Capture Devices", which reads "Unplugged Devices" or something like this. Maybe make this also clickable to only list its content below it after clicking in contrast to the other categories.

No, we shouldn't do this. You shouldn't choose HDMI profile for your card if you don't want to use it (and see it in Devices tab). It's not like the devices appear randomly, you need to choose the according profile for your card first.

romangg updated the task description. (Show Details)Feb 23 2017, 12:05 PM
Zren added a subscriber: Zren.Feb 26 2017, 3:01 PM
romangg updated the task description. (Show Details)Feb 27 2017, 10:05 PM
vpilo added a subscriber: vpilo.Feb 27 2017, 11:46 PM
davidk added a subscriber: davidk.Mar 7 2017, 10:03 AM

When having many devices, the list quickly becomes longer than the available space and you need to scroll. Which is difficult, because you can't use the scrollwheel for that on most of the applet because of the sliders.

That's an issue in systray and not in plasma-pa, you can always use it outside of systray to have bigger popup.

I've tried disabling the wheel scrolling on sliders (because you can't disable it with QtQuickControls) with various hacks, but I failed. There was a patch to Qt to make it configurable, but it was rejected.

The Qt patch has been merged and will be available in Qt 5.10: https://codereview.qt-project.org/#/c/187392/

romangg updated the task description. (Show Details)Mar 13 2017, 2:43 PM

@drosca: Could you quickly tell how this task has developed until now and what should be done next in your opinion?

Zren added a comment.Mar 23 2017, 1:59 AM

Breeze's 16px small microphone-sensitivity-[low/medium/high] icons do not follow the color scheme. The 16px -muted, which is a softlink to the mic-off.svg icon is okay. This is because the style="color:#4d4d4d;..." which overrides the fill:currentColor. We'll need to remove those from

https://github.com/KDE/breeze-icons/blob/master/icons/status/16/microphone-sensitivity-low.svg?short_path=6624708#L67
https://github.com/KDE/breeze-icons/blob/master/icons/status/16/microphone-sensitivity-medium.svg?short_path=14ca90a#L67
https://github.com/KDE/breeze-icons/blob/master/icons/status/16/microphone-sensitivity-high.svg?short_path=a8a3144#L67

Zren added a comment.Mar 23 2017, 2:13 AM

I made D5144 which turns the volume icon/mute button into a ToolButton.

Breeze's 16px small microphone-sensitivity-[low/medium/high] icons do not follow the color scheme.

https://bugs.kde.org/show_bug.cgi?id=377012

romangg closed this task as Resolved.Feb 15 2018, 10:04 AM
romangg claimed this task.

Some of the work items have been done. In general the PA applet Ux has become better in the last year. There are still some work items open, but still closing now because of long inactivity. Open new tasks for remaining work items if desired.

romangg moved this task from To Do to Done on the Plasma board.Feb 15 2018, 10:04 AM
romangg moved this task from Backlog/Planned to Done on the VDG board.
maksimm removed romangg as the assignee of this task.Sep 29 2018, 11:28 PM
maksimm added a subscriber: maksimm.

It's closed, but I have some problem with outputs in PulseAudio. I have HDMI multichannel headphones (has stereo, 5.1, 7.1 profiles), but two lattes only available in a list if headphones station is ON on system boot time. Restart pulse daemon only duplicates stereo devices in the list. Another complexity is what I also have HDMI monitor with speakers (headphones station works as HDMI switch). What I wish then headphones station is on use maximum channels possible profile on HDMI if not then default soundcard. Now it's possible on workflow like this station ON ->system reboot -> sound output selection -> use -> never switch station off otherwise multichannel option stop working, but will be in the list. Also if the station is off then sound works from HDMI monitor, which logical but undesired.