https://bugs.kde.org/show_bug.cgi?id=463953
Bug ID: 463953 Summary: Audio output level indicator relies on undocumented/nonstandard features and thus only works for Breeze theme Classification: Plasma Product: plasma-pa Version: 5.26.5 Platform: Other OS: Linux Status: REPORTED Severity: normal Priority: NOR Component: general Assignee: plasma-b...@kde.org Reporter: johannesfa...@googlemail.com CC: m...@ratijas.tk, now...@gmail.com Target Milestone: --- STEPS TO REPRODUCE 1. Use any Plasma theme besides Breeze 2. Play audio stream 3. Open volume plasmoid OBSERVED RESULT No indication of the current audio output level (in almost all cases) EXPECTED RESULT Visual indication of the current audio output level present ADDITIONAL INFORMATION I have zero previous knowledge of KDE code but I had some free time and did some detective work and here are my conclusions: Before around 1y ago (<5.24) only the current audio output level was displayed as `groove-highlight`. Later, the maximum volume position was also highlighted with `groove-highlight` underneath the output level, but with fixed 50% opacity. https://invent.kde.org/plasma/plasma-pa/-/merge_requests/88 A little while later it was changed to the (visually much nicer) current implementation,. https://invent.kde.org/plasma/plasma-pa/-/merge_requests/112 To achieve the current "filled highlight" look, the new method displays both as `groove-highlight` with 100% opacity, but with the current audio output level with `FrameSvgItem.Selected` state. However, there are some issues with this. First, it is a feature regression. Prior to PR #88 it worked without problem for any theme that had `groove-highlight`. After PR #88 it did not look particularly good, but was overall still working for most themes. Second, there is no obvious semantic meaning of what a "selected slider" is, since sliders cannot be selected. And obviously no theme has implemented it. And while it enables a very nice looking Breeze theme, figuring out the implementation (which seems entirely undocumented) reveals it to be very... hacky. It's no wonder it doesn't work for any other theme (I tried 10+ of the most popular custom Plasma themes on kde-look.org) The interior of the `groove-highlight` for the Breeze theme consists of an opaque background with ColorScheme-ButtonBackground (e.g. white) for the Breeze theme on which there is a 50% opacity accent colour with ColorScheme-Highlight (e.g. blue). So the result is that it is e.g. light blue. The current output level is `selected`, which then (see FrameSvgItem doc) turns the opaque background also to highlight colour, so the result is that it is the same colour as the frame, so... Third, it is extremely limited in the kinds of styles it allows. Any flat theme would probably just want to use a slightly different accent colour for the "filled" highlighted part. If you have to depend on accent colours and opacities, this is almost impossible to do properly. It has the following implications for themes: the current audio output level can only be seen if in the Plasma theme: 1) `groove-highlight` is transparent (very rare), or 2) `groove-highlight` has some edge/boundary feature (uncommon, resulting indication often does not look very good, e.g. Oxygen), or 3) `groove-highlight` uses e.g. ColorScheme-ButtonBackground like Breeze to modify some part of its visual appearance based on selection state (FrameSvgItem.status) (only Breeze) I have a few ideas how to work around this. Here they are from best to worst: 1) Add another slider prefix, e.g. `groove-highlight-filled` and explicitly define the visual appearance of partially filled slider highlights. Since this is what is intended to be accomplished, it should be explicitly done. This would also be a lot more flexible, understandable and obvious for themers. Later I found that something very similar was also proposed here: https://invent.kde.org/plasma/plasma-pa/-/merge_requests/112#note_402276 2) Draw two highlight grooves spatially separated (or e.g. two half-grooves cut off), one at the top the max volume, and one below the bottom the current volume output level. Would probably be a visual regression. 3) Document (and thus standardise) the "selected slider" approach as a theme guideline. This works well for Breeze but severely limits the possible types of highlights possible. 4) Remove the existing max volume (slider position) groove highlight again. Definite regression in terms of visual quality of the Breeze theme, but restores functionality for all themes. -- You are receiving this mail because: You are watching all bug changes.