Consider how to unify Latte and Plasma Panels
Open, Needs TriagePublic

Description

Currently, there's a redundancy in KDE Panels offering. There are many features both offered by Plasma Panels and Latte, but since they are different projects, they are offered in a inconsistent way. Furthermore, something Latte could benefit from being more integrated with Plasma (e.g.: super key working by default) and it could offer many features currently missing in normal panels such as dynamic spacers.

It would be necessary to discuss how the two could be unified, and what features / things are missing from one or another.

Currently, Latte offers the following features over Plasma panels:

  • Sidebars
  • Multiple visibility mode (Dodge Active, Dodge Fullscreen, Dodge Windows, Auto Hide, Always Visible, Windows Go Below)
  • Multiple layouts simultaneously and download community layouts
  • Smart Dynamic Background based on windows and background
  • Smart colors based on background
  • Dock color can change based on active window
  • Selection of new ‘Running Indicator’ styles, including Unity
  • Shortcut badges
  • Customizable actions, delay, appearance
  • Simple/Advanced mode
  • A simple way to add a Dock
  • New features every release, very active developer
  • Latte panels are aware of each other

On the other hand, Plasma Panels offer the following over Latte:

  • Shipped by default
  • Possibly less RAM usage than Latte (hard to measure exactly, but booting with just latte gives me ~50Mib more than just Plasma panels, and opening the Latte settings is another ~70Mib at least)
  • More stable, fewer reported crashes
  • Configuration menu is more user-friendly and consistent with Plasma style
  • Way more performant on low-end machines
niccolove added a project: Latte Dock.
ngraham updated the task description. (Show Details)Dec 27 2019, 5:41 PM

Personally I don't see a problem that needs solving here. The advantages of each product are perfectly suited to their current roles and users: Plasma panels are shipped by default, lighter in resource usage, more stable and less buggy, and have a more conventional and comprehensible configuration interface. This is perfect for the average user for whom the default appearance is fine, and who focuses on using apps instead of tweaking the shell UI. Latte is focused on the "ricer" crowd who wants to tweak every pixel to achieve visual perfection or mimic the UI style of an alternative platform (GNOME, macOS, ElementaryOS, even iPad OS, etc), and offers these people enough options to do it.

There are a few things that maybe each could learn from the other (e.g. dynamic spacers in Plasma panels, super key working by default in Latte) but I don't think that either the "simple by default" oor the "powerful when needed" crowd would really be happy from merging the two into one.

I would disagree on that because the points where both excel aren't mutually exclusive; Latte features could be implemented in normal Panels and Latte could be improved in RAM usage (if needed?), stability and performance. Having two different products will keep the situation as it is today: two different kind of dock/panels, each failing in some spot. Unifying them would instead give the opportunity to focus on a single, great product that could be a selling point of Plasma. If you look Latte long list of features, you will notice that there are some that the current panel would highly need (shortcut and notification badges, spacers, dodge windows, ...) that I don't think will ever implemented on the Plasma Panels based on its recent history of improvements; furthermore, there are a lot of features that, although not used by default, would definitively be appreciated by lots of users. Having those features by default instead would improve discoverability and the number of people actually using them by orders of magnitude: many people would enjoy the smart background, but they probably wouldn't want to install and having to configure a third party app to get that. Furthermore, having two different product has two other consequences; in the first place, Latte is not well integrated into Plasma, and you can see that by how the super key has to be added in a file to work, extremely not user-friendly; plus, Latte cannot be a selling point of Plasma: this issue was also raised when doing the kde.org/plasma-desktop webpage, as Latte could've been a great feature but was only mentioned in a sub-section. Furthermore, Latte itself follows KDE motto: it is simple by default, and powerful when needed. What is not simple by default and powerful when needed is having a feature-limited product by default and having to install a different one which does not integrate well immediately, that does the same things but with more features but less stable. If Latte was to be chosen as a default (e.g.), the developer and user attention alone would help the developers find many of the bugs and instabilities that it currently has, thus giving Plasma Panels no reason to exist anymore really.
The above reasoning is very specific to the Latte/Panels situation, but I think the point are those, more generally, of lack of consistency: you get product A which is good at X and product B good at Y; people who value X more will go with A and suffer for lack of Y, and people who value Y more will go with B and suffer for the lack of X, although X and Y could be implemented in the same product; but since A target is people who mostly like X, developers will not focus on Y, and B developers won't focus on X. Making the two a single product could help to get both features. And I think that Latte features would really improve Plasma experience for the majority of users that will not search for a third party app, install it, remove normal panels, and find the FAQ to fix the super key, and will help promoting the Plasma environment as maker of quality products.

@niccolove personally I dont have any opinion in this, except that any help that would improve Latte it is more than appreciated!

concerning the Super key case, since Latte v0.9, Super key can be easily configured through:

in upcoming Latte v0.10.x that window discoverability will be easily found through right click context menu:

niccolove updated the task description. (Show Details)Jan 13 2020, 5:58 PM
ognarb added a subscriber: ognarb.

-1 from my side. Latte is awesome for a ricer who want to customize is desktop, but for the average user it isn't an improvement over Plasma. Anybody who want to use Latte can easily install it from Discover.

And I think Plasma opinion is quite important

And I think Plasma opinion is quite important

Of course. I absolutely value opinions of everybody. That's why I discuss. Let me say why I think Latte would be an improvement, and propose a possible win-win solution:

Let's divide Plasma users into three groups: Default, Tweaker, Ricer.

  • The Default users usually leaves everything as it is. It is at risk of accidentally getting stuck by clicking the wrong button, e.g.: remove panel.
  • The Tweaker user goes into the LnF KCM store and download already-done configurations to use. He's able to get out from situations such as no panels. He adds widgets.
  • The Ricer has complete control over the machine.

Of course, users are not equally divided into these groups, the first two are bigger for sure. You said in the chat that the Default user is the "Average" one. I think that the "Average Plasma user" is more like the Tweaker user, while the "Average Computer user" is a lot more like the Default one. The question is: will Latte benefit those users:

  • Default user: yes, a bit but. I do think that the Default user can benefit from Latte as a) it has some little features that could help them navigate around, such as shortcut badges when holding the meta key b) Most importantly, it has an "Advanced" toggle that hides to the default user what he should not touch. Currently, there's no option to remove the last panel which is instead very prominent on Plasma Panels. Even if it were to be added, it would be in the advanced mode and would be hardly clicked by mistake. In this case, the use of an "Advanced" toggle is very useful and justified in my opinion. Of course, there's the "but": if Latte were to be more slow or buggish than PPanels, as it might be now, this would be a downside for the Default user. I will get back on this later.
  • Tweaker user: a lot. Currently, there's either the choice to install a different application, manually replace the default panel, re-add widgets to make it look as before, or live without the small feature X the user was looking for. Instead, having Latte by default would greatly improve their workflow as they would only need to open the setting and change the specific thing. Furthermore, there are many features of Latte that benefit this kind of user, such as using justification instead of really buggy spacers.
  • Ricer users: yes, a bit. They are able to install Latte anyway, but it's easier for them to just have it by default and thus spending less time installing and configuring packages.

Thus, I think having Latte would generally benefit users. Even if you disagree and it does not benefit the Default user, this is no reason to dismiss the benefits to other users. Of course, there's the "but": will it be able to be stable and fast? I've heard complaints about this in the Plasma chat and I was of course very worried myself, so I tried to search for Latte bugs online and on the bugtracker. What I found is that most reported bug are fixed and there are few waiting for a fix; the developer is also very active and answers in various forums with advice. This is of course a good base, but not enough by itself. So, I propose this possibly win-win situation:

  • If people and the especially the developer is okay with it, we go through the following points:
  • Either me or mvourlakos (aka Latte dev) implement basic stuff that's required for Latte to be in Plasma (such as the config window actually being a window or following the theme)
  • We find, inside or outside the KDE Community, a good amount of people (=20/40 at least) that are okay with doing some QA. If someone think Latte is buggy, they're especially needed
  • Members of QA group could use Latte daily and report on bugs.
  • In this way, mvourlakos can get more feedback on what is going wrong and could improve Latte more easily
  • In this way, nobody's time is wasted, as the members of that QA group should only report bugs, and mvourlakos con work on Latte
  • Some months before Plasma 6, we ask all the members if latest Latte version is flawless for them and without any regression (and, eventually, anybody can check as well really!)
  • If they say that it's perfect, then it would probably be a good idea to ship it by default with Plasma 6, without downsides. Everybody gets something, so this is a win situation
  • If they say that it is still too buggy/slow/not-user-friendly/whatever, we keep Plasma Panels. Still, this would help improve Latte, and since nobody wasted their time anyway, this is also a win situation

Of course, this is just an idea I was considering, not an official/well-thought plan or whatever, so I'm really open to suggestions

There's another category of user you're missing: the productivity user. This person uses their computer for work. This person may or may not be a technical expert, but they know more about their computer than the novice. Because this person's computer is a work machine, they have better things to do than tweak things. This person is sensitive to good defaults and wants to be able to turn on the machine and immediately get to work. They may customize some things, but the customizations are more likely to be functional than visual. Because of this, if they go to customize something but find a huge number of visual tweak settings, they will get frustrated.

However clearly Latte's genesis was for people dissatisfied with the default appearance and functionality and wanting more control and a better look. So it makes sense that it targets tweakers and ricers. If Latte were to become the default panel solution, clearly it would be adapted to become more user-friendly for the default and productivity users.

I suppose the question is whether it makes more sense to make Latte more suitable for these people than it does to fix bugs in the default panel and add missing features to it, and accept that people who want more customizability and visual appeal can use Latte instead.

However clearly Latte's genesis was for people dissatisfied with the default appearance and functionality and wanting more control and a better look. So it makes sense that it targets tweakers and ricers. If Latte were to become the default panel solution, clearly it would be adapted to become more user-friendly for the default and productivity users.

I suppose the question is whether it makes more sense to make Latte more suitable for these people than it does to fix bugs in the default panel and add missing features to it, and accept that people who want more customizability and visual appeal can use Latte instead.

Personally, I think that it's technically easier to fix latte rather than plasma panel, especially since it's already quite user-friendly for beginners IMO. I guess you have the opposite opinion here?

There's another category of user you're missing: the productivity user. This person uses their computer for work. This person may or may not be a technical expert, but they know more about their computer than the novice. Because this person's computer is a work machine, they have better things to do than tweak things. This person is sensitive to good defaults and wants to be able to turn on the machine and immediately get to work. They may customize some things, but the customizations are more likely to be functional than visual. Because of this, if they go to customize something but find a huge number of visual tweak settings, they will get frustrated.

I had considered the productivity user as a Default user, but I get what you mean.

However clearly Latte's genesis was for people dissatisfied with the default appearance and functionality and wanting more control and a better look. So it makes sense that it targets tweakers and ricers. If Latte were to become the default panel solution, clearly it would be adapted to become more user-friendly for the default and productivity users.

I suppose the question is whether it makes more sense to make Latte more suitable for these people than it does to fix bugs in the default panel and add missing features to it, and accept that people who want more customizability and visual appeal can use Latte instead.

Personally, I think that it's technically easier to fix latte rather than plasma panel, especially since it's already quite user-friendly for beginners IMO. I guess you have the opposite opinion here?

Technically I have no idea actually. I'm not familiar with the codebase for wither Latte or Plasma panels. This would be a question for Plasma people.

gikari added a subscriber: gikari.Jan 13 2020, 10:28 PM
kkoma added a subscriber: kkoma.Jan 17 2020, 12:24 PM

There's another category of user you're missing: the productivity user. This person uses their computer for work. This person may or may not be a technical expert, but they know more about their computer than the novice. Because this person's computer is a work machine, they have better things to do than tweak things. This person is sensitive to good defaults and wants to be able to turn on the machine and immediately get to work. They may customize some things, but the customizations are more likely to be functional than visual. Because of this, if they go to customize something but find a huge number of visual tweak settings, they will get frustrated.

The productivity user described here would benefit a little from Latte's customization options. This is where the Advanced toggle really kicks in. If they only want to do minimal customization, and more functional than visual, the "Basic" mode is perfect for them. If they want more, they know to turn on Advanced mode and Advanced mode communicates clearly that they will have way more options to play with, so they expect it to be more cluttered.
Adding widgets is really easy without even opening Latte settings.

My addition is that I love the Plasma Panels customization overlay with the draggable handles and few buttons, but I love Latte's options and awareness of its surroundings. The benefit of the merge would be, according to my proposal, that when a Latte Panel is right-clicked, an "Edit Panel" option is shown, which brings up an edit overlay very similar to current Plasma panel editor. Inside are the "Add Widgets" and "Remove Panel" options, as well as a "More Options" button which opens the Latte config window of that specific panel. This would really harmonize with the KDE motto, and this way the merge wouldn't come as big a shock for people who are used to Plasma Panels. They would just think "Oh cool, panels have more options now and they are smarter". People who don't customize their panels would continue using their computers without noticing.

Of course for the merge to be feasible, Latte performance needs to be on par with Plasma performance (if it isn't already; benchmarks and profilings need to be done). Sane defaults have to be defined too, which cater for the needs of people in the Default/Productivity user category.

I also offer my help with testing Latte and translating to Hungarian.

Talking about replacing X with Y is a very binary decision to a non-binary problem.

There are things Latte does really well that are implemented well.
There are things that are more on the creative/R&D side of things that aren't in the same situation.

I would like us to work closer together and a Plasma6/KF6 is a good opportunity to see what ideas Latte had that we can see if we can do at a more correct layer (like the recolouring).
For Layouts and spacers I would like both of us sharing an implementation based on ContainmentLayoutManager. For panel awareness, I would like us all to be using an implementation of layer-shell.

On a more general point of view latte being the default for Plasma 6 would effectively mean latte moving forward would not have the freedom to do creative and experimental things. Upstream has to be safe, backwards compatible and "boring". That really stays as a question for @mvourlakos

alex-l added a subscriber: alex-l.Mar 8 2020, 7:53 PM

Please consider making Latte Dock just more integrated, for example presenting it as an "advanced panel" with its menu entry: right click on the desktop > add new panel > advanced panel. Maybe the process could still be "plasmashell" if possible. It could be shipped with an additional package ("plasma-advanced-panel" or something like that according to distro naming system) and each distro could decide to ship it by default or not. The release could be the same as Plasma to make clear that Latte Dock (or whatever would be it's name) 5.x.y is meant to work with Plasma 5.x.y. Maybe the layout manager could include classic Plasma panels.

Ok, my opinion on this...

Latte is an official kde project so I am not against it but I am a little skeptic about it. It would need massive work for Latte to become an official Plasma project. I am sorry but I can not personally guarantee my commitment. I prefer to not have time constraints because that is a hobby for me for my free time so I dont know if my involvement can follow the Plasma rhythms. Of course if such a decision is taken I will try to help as much as I can.

I would like us to work closer together and a Plasma6/KF6 is a good opportunity to see what ideas Latte had that we can see if we can do at a more correct layer (like the recolouring).

The recolouring is a good example... If Plasma provides an alternative solution of course and Latte will support it. only thing missing is a QML ColorScope that provides custom colours that can be set independetly of color groups. The colours/options that Latte is providing to applets can be observed at: https://phabricator.kde.org/source/latte-dock/browse/master/app/wm/schemecolors.h . The schemeFile property was needed from Window Buttons applet in order to forward it to KDecoration2 to paint its buttons.

For Layouts and spacers I would like both of us sharing an implementation based on ContainmentLayoutManager.

I dont know if this is feasible. The current Layout manager Latte is using was chosen in order to be able to survive with the Parabolic Effect. Any approach using GridLayout for applets like Plasma panels are doing could not survive with the parabolic effect. Instead, THREE independednt Grids where chosen for LEFT / CENTER / RIGHT applets placement. So what Latte is doing in order to support Plasma applets is that is REIMPLEMENTING the entire QML Layouts approach and it makes it work with Grids. Latte Justify Splitters are not really used in the Grids, they are only used in order to distinguish in which Grid each applet should be added. I have even found situations that Qt's Layouts where ignoring some Layout values from Layout.minimum/preferred/maximum/fill... that did not make any sense to ignore them...

For panel awareness, I would like us all to be using an implementation of layer-shell.

makes sense... except panel geometries lately I think that borders should be also provided through such API. It is the only way for panels to adjust to each other if they belong to different processes.

On a more general point of view latte being the default for Plasma 6 would effectively mean latte moving forward would not have the freedom to do creative and experimental things.
Upstream has to be safe, backwards compatible and "boring". That really stays as a question for @mvourlakos

yeah, I know... there are even chances that some of the features should be dropped...
I dont know if it would be feasible to split Latte in two different versions, one stable to be added in Plasma and one that could be on the edge...
The two versions could exchange code of course...

niccolove updated the task description. (Show Details)Mar 9 2020, 8:15 AM

I recently checked out Latte and was quite impressed with several aspects.

Can I suggest an Akademy BOF on the subject, I think a set aside time to discuss this could really benefit us.

I think it's a good idea.

mvourlakos added a comment.EditedMay 14 2021, 4:24 PM

I recently checked out Latte and was quite impressed with several aspects.

thank u :)

Can you please provide a bit more feedback to what aspects you found impressing? It helps me focusing development efforts.

Can you please provide a bit more feedback to what aspects you found impressing?

I think the most impressive was the detail on the task manager activation, with animations that worked properly and the little indicators.

I'm quite interested in the SessionManagement. Main plasma has an infrastructure that's both complicated and fails to deliver. I think it is something that needs to have user-configuration. The challenge is finding to present this to a user.

mvourlakos added a comment.EditedMay 18 2021, 4:12 PM

Can you please provide a bit more feedback to what aspects you found impressing?

I think the most impressive was the detail on the task manager activation, with animations that worked properly and the little indicators.

The task manager animations implementation took me plenty of hours and there are still some corner cases that break :) .
Plasma libtaskmanager is very rough to handle for animations because it continuously adds/removes different elements between tasks in different states,
Launcher <-> Startup <-> Task / GroupedTask but I wanted to base Latte on Plasma LibTaskmanager that is a benefit for everyone.

I'm quite interested in the SessionManagement. Main plasma has an infrastructure that's both complicated and fails to deliver. I think it is something that needs to have user-configuration. The challenge is finding to present this to a user.

I suppose you are referring to Layouts infrastructure. Layouts were introduced in order to solve the complexity appeared in Plasma 4.0 and it was the reason the plasma panels activities support was dropped. The Layouts are designed as follows:

  1. Each layout can contain ONLY panels and docks that are assigned on the same Activities. So docks and panels are responsible to be present only at the activities that its layout tells them to be.
  2. Each layout is responsible to add/remove docks and panels based on the Active Screens. So docks and panels are responsible only to be on the screen that its layout tells them to be.
  3. The default mode "Single layout at all times" works like Plasma, the specified layout file is loaded in Plasma::Corona and that is it
  4. The advanced "Multiple layouts based on activities" can be controversial from plasma devs point of view. What is happening is that there is a hidden file that acts as basket in which the needed layouts will be added. Each layout before being loaded to Corona is updating ALL applet/containment ids etc... and afterwards is loaded. On the end of the session each layout is unloaded and returns to each relevant file. So in this mode the applet and containment ids should not be considered consistent between different sessions.

Because of [4] infrastructure Latte can now support things that are unique I think. The user can right click the dock -> Layouts -> Edit Layouts... , choose any layout wants to and click on Docks, Panels... The user can handle ALL docks and panels independent of active/inactive screens and active/inactive layouts. The user can move/copy/duplicate/remove any dock or panel for all layouts... etc.... Any layout,dock or panel can become a template file that can be reused easily from the user. The Export Template dialog gives the user the option to choose for which Applets to keep configuration data or not. This way Personal Data can be dropped if the user wants to which is also a KDE Goal the last years.

@davidedmundson is there any update concerning your proposal to have a BOF for Latte in Akademy?

Nope, lets go pick a time. All the slots are empty currently.
I have all the availability. Does Monday afternoon work?

Nope, lets go pick a time. All the slots are empty currently.
I have all the availability. Does Monday afternoon work?

What is the date?

If it is 21 June it works perfectly.

It is the first time taking part, can you give me some hints what are we going to go?

https://community.kde.org/Akademy/2021/Monday#Room_03_-_21st_June

I had booked one for Monday, But Marco has a special "Plasma day" which we can maybe move to.

It is the first time taking part, can you give me some hints what are we going to go?

Effectively it's like this chat here, but over webcam so a bit faster.

mart added a subscriber: mart.Jun 14 2021, 9:10 AM

There are 3 hours booked for plasma on wednesday.
maybe we just can use one of those for this?

No prob for me whatever works best for you. Slots in Wednesday are 16:00 - 19:00 UTC so that makes it evening/night in Greece 19:00 - 22:00 and I can participate.

Are there any guidelines, how to connect, software that might be needed etc.?

mart added a comment.Jun 15 2021, 10:11 AM

No prob for me whatever works best for you.

ok, moving it there

Are there any guidelines, how to connect, software that might be needed etc.?

so, just your browser with working microphone, optionally webcam, and there will be a link under meet.kde.org. It will be on kde-hosted bigbluebutton server which is web based and both chrome or firefox works ok

mart added a comment.Jun 15 2021, 10:15 AM

I indicated the last hour 18-19 utc as Plasma/LAtteDock, though we can discuss about it at any point if is better for you as timing.
Of course you're invited to participate on the rest as well :)

so, just your browser with working microphone, optionally webcam, and there will be a link under meet.kde.org. It will be on kde-hosted bigbluebutton server which is web based and both chrome or firefox works okS

nice!

I indicated the last hour 18-19 utc as Plasma/LAtteDock,

no prob, it works fine

Of course you're invited to participate on the rest as well :)

thank u! I might be able to login earlier in order to test out also the platform

resdex added a subscriber: resdex.Dec 7 2021, 1:08 PM

@mvourlakos Do you have any updates on the current state of this topic?
What I would like to see, when using latte dock, is that it gets rendered before the Desktop is ready.
Right now after the Splash Screen I see my Wallpaper, and it takes 2-3 seconds for latte to start and render the dock.
You can make some beautiful Desktops with latte-dock. It would give plasma a boost if people could generate Global Themes with a latte-configuration that is a 1 click install.

abetts added a subscriber: abetts.Dec 7 2021, 1:11 PM

I guess something I am missing is the "WHY?" part of the argument. Why should Plasma integrate at a default level with Latte?

mvourlakos added a comment.EditedDec 7 2021, 2:35 PM

@resdex there are no updates. In last KDE Sprint it was decided that such an effort it eould require man power and commitment and there was noone that step in and say, I want this and I will lead the effort.

Personally this is not one of my goals.

On the contrary we concuded that whatever improves integration and sharing technologies between plasma and Latte that is really welcome.

I have sent two patches in that direction but noone is interested in them or for some reason they didnt get any attention.

https://invent.kde.org/plasma/plasma-workspace/-/merge_requests/1243

https://invent.kde.org/frameworks/plasma-framework/-/merge_requests/390