RFC: Use more compact OSD
Needs ReviewPublic

Authored by broulik on Apr 15 2019, 8:06 AM.

Details

Reviewers
None
Group Reviewers
Plasma
VDG
Summary

A frequent complaint over the years is the size of the OSD. It was tried to alleviate that by having it start fading out slowly immediately but the way it was done wasn't ideal, didn't work on Wayland, and also causes flickering issues in recent Qt versions.
This changes the OSD to a bar-like design similar to the one used in Plasma 4.

BUG: 344393
BUG: 372665
FIXED-IN: 5.16.0

Test Plan

Various OSD messages


It can grow, if necccessary, to accomodate translations, up to half the screen width.
With Air theme

Full desktop screenshot for some context

Diff Detail

Repository
R120 Plasma Workspace
Lint
Lint Skipped
Unit
Unit Tests Skipped
broulik created this revision.Apr 15 2019, 8:06 AM
Restricted Application added a project: Plasma. · View Herald TranscriptApr 15 2019, 8:06 AM
Restricted Application added a subscriber: plasma-devel. · View Herald Transcript
broulik requested review of this revision.Apr 15 2019, 8:06 AM
filipf added a subscriber: filipf.Apr 15 2019, 8:30 AM

+1 on making the OSD more efficient, I think it's the right direction to be going in.

Looking at the positioning though, it feels a bit weird to have an elongated shape more or less in the center of the screen. What about the idea to have OSDs spawn as notification events or at least identical in appearance? Example:

  • they wouldn't get in the way
  • it looks good IMO
  • their positioning would be configurable

Seems like that was what they had in Unity: https://wiki.ubuntu.com/NotifyOSD#Treatment_of_hotkeys

Fuchs added a subscriber: Fuchs.Apr 15 2019, 8:36 AM

I like the first, small but centered variant.

But I can see how people might want it differently: most of the time I use my PC for work. I assume if you are watching movies on it, a centered design is more of a bother than a corner one, whilst for work the center one is easier to spot.

Center also is rather sure to not clash with regular notifications, and I would not treat the OSD the same as notifications. No matter where you place it, given that you can e.g. press the volume button multiple times whilst notifications are incoming, placement will be tricky and, depending on how it is solved, jumpy.

No matter where you place it, given that you can e.g. press the volume button multiple times whilst notifications are incoming, placement will be tricky and, depending on how it is solved, jumpy.

With the new system shouldn't it be too bad. I can stick the OSD at the position closest to the panel so it never moves as notifications come and go, they would just be positioned above/below the sticky OSD. That's what I'm doing with critical notifications and job progress there and it works well. Changing the sort order to prioritize "OSDs" even more than critical notifications is easy. The OSD will not jump, the notifications that are shifted ouf of the way might move, yes, but I don't think that's gonna be too awful.

Great i hope we can make notifications more compact too
because its too big now

Great i hope we can make notifications more compact too

They will be, see D20266, but that's not the point of this discussion

Fuchs added a comment.Apr 15 2019, 8:57 AM
No matter where you place it, given that you can e.g. press the volume button multiple times whilst notifications are incoming, placement will be tricky and, depending on how it is solved, jumpy.

With the new system shouldn't it be too bad. I can stick the OSD at the position closest to the panel so it never moves as notifications come and go, they would just be positioned above/below the sticky OSD. That's what I'm doing with critical notifications and job progress there and it works well. Changing the sort order to prioritize "OSDs" even more than critical notifications is easy. The OSD will not jump, the notifications that are shifted ouf of the way might move, yes, but I don't think that's gonna be too awful.

I consider things with clickable controls (notifications, in this case) jumping to rather be awful, so personally I'd prefer to keep notifications and OSD seperate, as they have separate purposes, lifetime and behaviour.
Especially as notifications are something you can only click on (touch or pointer device). It's already not 100% reliable as new notifications can pop in, but I'd like to not make this worse by also moving OSDs in there, if possible.

I prefer the first, more centered approach for that.

hein added a subscriber: hein.Apr 15 2019, 9:01 AM

Personally I'm not a big fan. I think the square OSD has more character and visual flair. The change proposed here looks rather cramped and removes some identity from the system.

I'd like us to get in the habbit of putting new designs of theme changes on the store before we change defaults.

lookandfeel/contents/osd/OsdItem.qml
31

Screen.desktopAvailableWidth is all screens. Do you mean that?


Dialog should understand Layout attached properties of mainItem, so you can write the slightly more semantic:

Layout.max screen.width/2
Layout.min: units * 15

Though it's Dialog, so who knows....

broulik added inline comments.Apr 15 2019, 9:13 AM
lookandfeel/contents/osd/OsdItem.qml
31

Do you mean that?

Umm, just took that from the old code. What's the alternative? I guess I can just do width then without taking into acount panels

Though it's Dialog, so who knows....

I tried that, it didn't work reliably :)

In general I feel like I have to agree with Eike that this might reduce the visual distinctiveness of the system. I think the current square one has character, though I don't hate the proposed new one.

However I'm not sure this design would actually solve the most common problem that people have with it, which is "the OSD gets in the way when I change the volume while playing a video." This proposed new one one it still centered about a third of the way up, which means it'll still overlap actors' faces, subtitles, and so on.

I don't think store.kde.org is a solution here because we have no standalone category for OSD themes since they're built into the Plasma theme. Having to replace the whole Plasma theme just to change the OSD style is a rather poor user experience that will cause you to use a 3rd-part fork of the Breeze theme that no longer receives official KDE updates. I think ultimately we will have to bite the bullet and make it configurable within the same Plasma theme, offering an option for a compact and non-centered OSD as a non-default setting.

Alternatively, we can make the default non-centered but emotionally I don't like those as much as the big centered square ones.

Umm, just took that from the old code. What's the alternative? I guess I can just do width then without taking into acount panels

Can do. We're in a layer above panels so it's fine to overlap if it ever does come up.

I don't think store.kde.org is a solution here because we have no standalone category for OSD themes since they're built into the Plasma theme

There's *currently* no standalone category.

There's *currently* no standalone category.

If we create one, I could see that being an adequate solution, and then this could go there.

abetts added a subscriber: abetts.Apr 15 2019, 2:54 PM

I like the way that this is going. I also like the way that mobile does volume. Very understated. I think this is going the right direction.

I've been thinking about this OSD themes thing and I can't say I like it. I don't like the fact that you now need a different LnF to change them either, but to have another configurable theme thing seems like overkill.

Although it's not without a solution without drawbacks, visually and functionally I'd love to have the OSDs spawned as notifications. It would also make it super easy to just turn them off for DnD mode, which can be super easily turned on for when playing games or watching video.

I don't think it would work with the current screen layout chooser OSD though.

Then if that's not possible I'd keep them the way they are but include the option to disable them for full-screen apps.

Using notifications for the OSD is an interesting idea.