Responsible Evolution

Plasma Desktop running on top of Qt 5 and KDE Frameworks 5
Plasma Desktop running on top of Qt 5 and KDE Frameworks 5

Exciting times. I am working on the lower-right corner of the desktop right now, and thought I could give a quick visual update of progress there, as well as some sense of direction where we’re heading, how the user interface evolves, Plasma’s new architecture, and underlying software stack and the device spectrum. A whole mouthful, so grab a cup of tea.

Two areas in particular are catching my attention these days, the notification area (“system tray”, that row of icons which show you the status of all kinds of things), and the clock with its calendar popup. The calendar shows quite nicely some things we want to pay attention to in Plasma 2: consistency and elegance. We are making more use of pronounced typography, are fixing alignment problems, and are looking for a generally more elegant way of presenting the common functionality. In that, the plan is not to make a lot of changes to the functionality itself, not cutting down the UI, but polishing what is already there. By reducing the workspace’s mental friction for the user makes the tools take a step back and give more room to the content and interaction that is presented. Doing that, the workspace should be functional, yet elegant. The migration should feel like an upgrade of something familiar. We want to make it functionality-wise equivalent, but more polished. On top of that, we’re readying the technology for future use cases, and evolution of the underlying technology stack.

Calender popping up from the Plasma panel
Calender popping up from the Plasma panel

QtQuick 2 actually makes these things a lot easier, as it is much more correct in terms of calculating font metrics reliably, which we need to (sub-)pixel-perfectly align text and other UI elements. Trying to make this exact in Qt4 and on top of QGraphicsView was a shortcut into madness. Ever so slightly off font metrics, and wonky layouts get you to tear your hair out pretty quicky. This is much better now, (though certainly not perfect in all areas), so it allows us to finally fix these jarring little mis-alignments that nag the eye. The calendar already does it pretty well, and serves as a nice example. This implementation takes the physical size of the pixel on the screen into account by correcting for DPI in the whole layout, so it works nicely on all resolutions and pixel densities. With higher pixel-density displays, the rendering gets more details, fonts look neater, but the size of interaction areas, and the effective size on the screen don’t change much. The screenshots have been taken on a 170 DPI display, so if the fonts seem huge on your display (or small, as I hope for you), this would be the reason for that.

Battery Monitor
Battery Monitor

In the notification area, you might notice that the widgets that have been living in there are now contained in the same popup. This results in less window management and layering of small popups in the notification area, clearer navigation and a cleaner look. The currently active icon has slightly pronounced visuals compared to the others.
The calendar will of course show information about tasks and agenda (this part doesn’t work yet). One neat thing which the new architecture allowed use to do very easily is lazy-loading the calendar. As just loading the calendar can result in quite a bit of loading underneath, delaying to loading it on-demand speeds up start-up time and lowers memory consumption in a lot of cases.

Below the surface, the changes are more radical. Qt5 and with it the move to QtQuick 2, the scenegraph-based successor to QtQuick 1, a new QML and javascript engine which is smaller and more optimized for Qt data types and conventions than V8, new sandboxing features, being able to render and composite pretty much entirely on the graphics card, share textures between compositor and workspace shell, addition of Wayland as a fully supported target platform, and along with all that new input and security features.

Network ManagementNetwork Management in the notification area
Network Management in the notification area

Plasma 2 is a converging user interface. It allows to control the Look and Feel at different levels. On the lower level / higher detail side of the scale, we look at adjusting input areas, sizing of ui elements, and interaction schemes by swapping out and “overriding” parts of the UI toolkit with, for example, touch friendly versions of widgets. On a higher level, we support laying out the furniture of the workspace (think of alt+tab window switcher, log in, lock, etc. features) by more code sharing and a different logic to how they’re loaded (and swapped out). Plasma shell allows dynamic switching of shell layouts at run-time. The shell is equipped to morph between workspace presentations, so should your tablet suddenly get a keyboard and mouse plugged in, it changes its disguise to a traditional (actually your own customized) desktop layout. While this is cool, in reverse, it allows us to isolate changes that are done to suit other devices from the “Desktop Experience”. Just because the workspace support multiple devices, the user doesn’t get the lowest common denominator, but specialization. Different devices are different for a reason, and so should the UI be. “Mobile-friendly” shouldn’t mean “misses features”, but “responsibly designed” (excuse the pun).

Our tricks allow to use the same system on a range of devices, with the user interface adopting to specialties of hardware it runs on, such as input, display, but also usage scenarios specific that device. Much like the Linux kernel, which “mostly figures out how to run properly in a device it’s booted on”, and which can be configured as small and as big as one wants, the user-interface uses “UI plugins” at different layers, and detects changes and adopts to the form factor. You use a media center “driver” if you want to use it on the TV in your living room, you use a tablet “driver” on your tablet on the go, you use desktop driver on the laptop, and you can switch the device’s UI when needed. Laptop or tablet + HDMI cable ~= media center, isn’t it?

Klipper manager showing the clipboard's content
Clipboard interaction

You see, many different construction sites. We’re working a lot on all these things and you should definitely consider joining. Nothing is set in stone yet, and you should consider the imagery functional mock-ups, rather than the final thing. It’s not perfect and lacking in all kinds of places, it even crashes in some and what is presented is just a snapshot of work in progress. Many details remain to be hashed out. Still, I’m running Plasma 2 about half of the time on my laptop now. It’s just about to be becoming usable and almost dogfoodable for more than just a very small handful of people with an elevated pain threshold and a debugger at hand.

“When?”, I hear you ask. We’re aiming at a stable, end-user ready release of the new Desktop shell in summer 2014, at the end of Q2. On of the next milestones will be a tech-preview, which is planned for mid-December, so just about a month away from today. From December, where we’ll reach the point of having the basic functionality in place, we’ll spend time on filling in the missing bits, making sure everything runs on Wayland, and on polishing and quality improvements. Integrating additional workspaces, such as Plasma Active and Plasma MediaCenter are also next year’s roadmap. These will become the tablet, resp. media center drivers.

59 thoughts on “Responsible Evolution

  1. Looks awesome. :-) I imagine this to be a treat to an eye when it makes a final debut and to have such smooth experience all across Plasma 2 would be ecstatic. As Calvin would say ” Happiness is not enough. I demand euphoria”.

    My only wish is making system settings simpler. Okay – There has been enough debate about what is simple, basic, advanced,etc. but it would be really great if someone objectively looks in System Settings module and see what can be improved there for basic desktop users.

    Cinnamon tries to make lot of things simple, they are not perfect yet…You may want to pick some ideas from there.
    Heck, Clem admitted borrowing window tiling feature from KWin :-)

  2. At last! A calendar where you can actually make out what day it is, versus a lone holiday this month, at a glance! Hallelujia!

  3. Looks nice, but why do you show the battery vendor? I’m pretty sure i know which battery is in my laptop. So what’s the point?

    1. Maybe because of KDE Connect – that app can show your android battery status on your KDE desktop.

      1. That would be one reason (we have differnet batteries, e.g. main battery, mouse, UPS, …), and what you see is the expanded view, not the default. Here, the user has just chosen to look at the details.

  4. The calendar is a huge improvement, thank you for your work!

    But in the spirit of reducing mental friction, can we please have a calendar for once where I know at a glance which day is today, which day contains tasks and which day I am currently viewing (the detailed day overview on the left)? OpenSUSE did a good job with this because the current day is circled, days with events are colored (I believe.. my calendars are currently out of sync again) and the viewed day is bordered.

    That arrangement makes sense at once (though I’m not saying it’s the only one possible, you could make today bold or something) while on your screenshots I don’t know whether today is the 21th or is it the 13th and I’m simply looking at the events for 21th – and this has been true of all Plasma calendar styles I’ve used, other than the OpenSUSE one.

    1. Could you provide a screenshot showing this?

      If you actually use this calendar, it should be evident pretty quickly what’s the current day, btw, as its hover and highlight coloring has been aligned. Also, as the calendar is lacking features, we’re not done with this part yet. Work-in-progress, as they say.

      1. Sure: here

        I realise this is work in progress that’s why I wanted to provide feedback early :) I know the days are differently colored but somehow I never manage to remember ‘red is for today, blue is for events’ and my calendar is usually pretty sparsely populated so it’s not very obvious that there are more e.g. blue days, either. Besides, if you ever allow different calendars to have different colors, the color coding becomes problematic, too.

        Other calendars (r.g. Rainlendar) use the circle to mark today, too, so it should be pretty obvious to plenty people.

        1. I agree that circling the current date as done in openSUSE (which I use myself) is a quite intuitive indicator. The main problem with the calendar (which is also displayed in your screenshot is that if you click on (select) a date and afterwards hover over another date the event list is not for the date that is most prominently marked (orange). It is not a major problem, but I find it counter-intuitive.

          I am not sure what the purpose of the selected date indicator is – although I know that is the basis of the event list when no other date is hovered. Perhaps the selected date should be the basis of the event list as long as there was a selected date. Currently it is not possible to “unselect” without closing and reopening the calendar view. When no date is selected the hovered date (or current date if we are not hovering over the calendar) is the basis of the event list, and that is intuitive enough (for me).

          1. Well the indicator is probably there to make it obvious that you’re looking at the event list for a day different than today.. And you need the selected day mechanism for touch devices where hover doesn’t work. Not at my computer right now, but clicking on ‘today’ kind if cancels the selected day, does it not?

          2. That’s a new trick for me Gregor – but you are right about clicking the current date. That solves the issue when looking at the current month.

            Good point about touch-screens too – I just forgot that the touch+hover-detection screen isn’t invented yet.
            Removing the hover functionality would be a step back, so I don’t see that as a solution. However, perhaps it would be possible to automatically remove the selection if the cursor hovers say half a second over another date (or at least remove the selection if the selected date is clicked again which I imagine would be a much easier programming task and also require less resources in the system as there would be no need to have timers for hovering etc).

  5. Wow – that looks great!

    Can you just make sure there is sane behaviour when closing notifications. The current popups tend to resize in weird and unpredictable ways

    Based on this I really hope you’re the one who redesigns kickoff

  6. This is pretty awesome, Sebas, it is going in the best direction I could ever imagine.

  7. My personal wish as a former user of KDE 3 and Plasma Desktop (it just became too resource consuming and sluggish for my hardware on which KDE 3 has run just fine) would be to reduce the flickering of notifications.

    Let me try to explain: when you perform some activities (copy files in Dolphin, download files in the browser which uses kde notifications, send files over bluetooth), notifications appear in the notification panel and change their size upon termination. This causes the notification panel to change the size too, and this happens rather roughly and doesn’t create smooth user experience. This is not as smooth as for example in OS X where notifications just fade in and away :-)
    So if anything could be done to make notification transitions smoother it would be great.

    One more thing is the memory consumption. For example, on machine with 1 GB ram and 64-bit Linux KDE 3 consumed around 200-250 MB right after the startup, while Plasma consumes around 400 or even 500 MB (with nepomuk disabled), spending 50-100 MB on processes like plasma-desktop, kwin and krunner. Is it because of Qt4?
    I understand that new machines nowadays have 4-16 GB, but I still would like to see KDE consuming less resources (perhaps with possibility of disabling some functionality in advanced preferences?).

    These were my 2 cents of a long term loyal and dedicated user.
    I really appreciate your hard work of creating the UNIX desktop of the future!
    Thank you for your efforts :-)

  8. Please, can you extend the highlight mechanism we see in screenshot 3 to all plasmoids (not only system tray)? I’d like to have a visual clue of which plasmoid is active when I click on it; that enhances usability.

    1. As long as the items are in the system tray, they will get this treatment. I’m not sure it makes sense universally, so let’s try this for now. It’s easy to adjust to other plasmoids if we’re happy with that.

    1. A Plasma1 version is in the works, and has gone through a first round of review. Nothing’s happened since then, however.

      So it will eventually arrive.

  9. “This implementation takes the physical size of the pixel on the screen into account by correcting for DPI in the whole layout, so it works nicely on all resolutions and pixel densities.” – that sounds great! I’d love to see how this is done code-wise in the Qt5 Calendar plasmoid, but I can’t find that code. :( Can you give me a hint where I could take a look at it?

    1. The code is in plama-framework/src/declarativeimports/calendar and in kde-workspace/plasma/generic/applets/digital-clock/. Both use the master branch.

  10. The question has already been ask, but I would be very interested, concerning icons in Plasma components (for example in case of the toolbox). There might be use cases where people want to use a monochrome icon set. With the current design, this can be quite problematic, as the visibility of the icons depends on the plasma theme.
    It would certainly be nice if Plasma would use it’s own icons, for actions like add panel etc., as that would allow different themes and wallpapers without any visual problems.
    The following screenshot shows the problem (off course in an extreme situation: dark theme, dark wallpaper, monochrome icons):
    Some Plasma icons are already icon set independent as for example the buttons of krunner (Close button, question mark button, Settings button, System Activity button), or the “Screen Edge” and “Height” icons in the panel configuration.

    It would be really nice if you could report back what you think!

      1. First of all, thank you for the response!
        If I could provide patches, would that be something considerable? Again, the main idea is, making all the icons in Plasma independent from the icon theme of applications (for e.g. all the system tray icons are plasma specific and icon theme independent, but dependent on the plasma theme and theme creators are free to customize them).
        Imho, this would add more flexibility and consistence to Plasma and as I have understood, Plasma is a project aiming for maximal flexibility and not that kind of project defining a good default setting and not caring about other use cases.
        I think my messages was not quite clear in the first comment, as you wrote “If people want to use a monochrome icon set, and at the same time a theme which doesn’t contrast”. My idea does avoid that scenario, as plasma no longer uses the icons defined by the icon theme then. This would make Plasma more consistent.
        Again, I would be very grateful to hear your opinion!

        1. Well, all icons are defined by a theme, monochrome ones (by the Plasma theme), and Oxygen (full color) icons by the icon theme.

          I’d welcome more icons being available in monochrome versions, but reality is: we’re lacking artists who can help with that. (Just like in other areas.)

  11. Much interesting, lots of fun for challenge going on.

    In order to flatten the Shell UI and please the eye,
    try to completely hide Panel shadow under pop-up widgets and see;)

    Do you see a space for a “Settings” icon on upper-right corner of pop-up widgets?
    Like a wrench, but I’d rather prefer a Kogwheel :)

  12. haha Kogwheel.. The cog in KDE logo icon; <>.. the Konfigurable Desktop Environment? ~:)
    Wouldn’t be the only, but the best :)

  13. Why don’t you just use the best existing OS/GUI Mac OS X and spent your time with your friends/family???

    1. Possible answers (all respecting the time you spent on this comment, which might or might not be more appreciated than you spending time with your family):

      – You’re assuming I actually like spending time with my family
      – I just spent time with *your* family, especially your mother
      – Why don’t *you* “spent” some time with an English grammar book?

      I could go on, but you probably get the point.

  14. Transparency / contrast issue:

    I like the new design and I have one wish: please make to possible to easily disable all transparency effects from panel and popups like calendar etc. and make it possible to use a black (not gray) font color for the panel texts.

    Why? I recently switched from Windows to openSUSE 12.3/Linux/KDE on my private computer. The default themes settings have transparency and low contrast font colors enabled so it was hard for me to read the text. It also greatly depends on the background image if the things are readable or not. I think the user should be able to choose background image he/she wants and still be able to read all text as clearly as possible.

    See also

      1. Hi Sebas,

        it was raised several times by now that good contrast is very important. Indeed, I’d second that, and hope we can improve for Plasma 2 on this. This currently also holds especially for the task bar: Minimized windows are grayed out (both text and icon). So if you are searching for a minimized app, it’s especially hard to find it. That, interestingly, is pretty much counter-intuitive, since in the case you are searching for an app, the contrast should be as distinct as possible. I’m already looking forward to improvements here, maybe we can discuss this in coming blogs as well :-)

      2. Thanks. So I assume that the new algorithm results in higher contrast for the text than with the old algorithm. :)

        Did you also consider using that “virtual translucency” method one can enable on Windows 7? I don’t know how it is correctly named but it essentially looks like the following.
        1. In default setting (virtual translucency not enabled) the taskbar and window title bars are translucent to the windows and the background behind them as one would expect.
        2. In contrast, when the option is enabled they are now tranclucent to a fixed virtual background image that looks similar to the background images you are using in your screenshots above. Thus, when you drag around a window and you look “through” its translucent title bar one can see the blurred virtual background image no matter what actual wallpaper or other windows lie behind the window being dragged around. As a result one gets both: nice translucency effects and text that is always readable no matter what (maybe crazy) wallpaper was chosen or what content the background windows have got.

        1. We didn’t consider yet, and, to be honest, I don’t see the point of it. We’ve fixed the contrast issue in a different, IMO smarter way.

          1. Ok. Since I did not see your work in action yet I will wait for the coming release (and I am sure I’ll be happy) :)

  15. Great article. Seems like a lot of work, but behind the Plasma we still get old application, like dolphin, kopete ..etc. Their interface still stuck in ’90s even now they look not much pretty in plasma, especially kopete. It had horrible interface then was born and still have it now even on your screenshot we can see green round which on my opinion doesn’t look good with smooth and transparent Plasma background. Any works about that things?
    Also may be anybody know for that for use konqueror? In nowadays it’t weak as browser, may be wise abandon that and make port from FF or Chrome on Qt for KDE then develop dead unsupported by sites browser.
    KDE the best DE ever. Flexible and powerful.

    1. This.

      KDE’s applications need to be reformulated, not like a useless bubble like Gnome’s, but as a leaner mostly-standardized GUI. The System Manager for example is hellish ugly and have a plethora of design failures, I have the theory that most of the “bloat” people see in KDE could be addressed if the System Manager was better divide and had its navigation improved.

      One of those things that Gnome 3 has done right and I think that KDE could make even better is rebuild the simple utensils in a “cooler design”. QML Kcalc, Jukebox, Kmix, Ark and etc would be really interesting. Also, maybe, renaming the applications to kde- is something worth considering since it would make it simpler to identify some applications, kde-editor is easier to remember than kwrite.

      Also on Konqueror, rekonq is probably the most interesting addition to KDE in the sometime. It should really replace Konqueror as a whole since it’s better to have different, optimized and simpler browsers than a universal clusterf*ck.

  16. Wow, I like this. Looks really polished and cleaned up. I like that it used less colors, especially the calendar. And more space.

    I agree with Gregor on the calendar tough. Since current KDE SC 4.11 calendar applet is there I wondered what day is today. I really hope that the new calender will make that unmistakenly obvious.

    And I really hope those font-sensing dynamics will be *a lot better*. Heck, we have workable font-sensing GUIs since more than 20 years already and plasma applets have been quite a step backward for me in that regard. I often seen applets and notification which didn´t provide enough space for the text they showed or too much space.

  17. C’mon guys, look, I DO love KDE. to me is the most productiv desktop in GNU/linux and I try to use its apps always in any other desktop when I must to. but please guys, hire some graphic designers to improve the default eye candy Of the desktop, not deep changes but at least icons and gradients could be improved, for. example, the black typo + dark wallpaper + transparent popout make read the información not thet elegant. well is just one small thing. I know KDE lets us chante it the way we want to, but is kindda nice do not have to chante everything just to have and nice desktop.

  18. PD. are you working guía por hace something in mind forma music applet? I thing that is something that is missing currently, a good-looking and usefull sound/music applet. for example the cinnamon sound applet is beautiful.

  19. The calendar is much better than what we currently have, thanks a lot for that!
    A couple of minor improvement suggestions:
    * move the “Previous/Next month” arrows from the weekdays area, where it makes no sense, up to the month name area;
    * make month name centered.

  20. Awesome work! I’m using KDE 4.11 on a 270-ish DPI screen here, and plasma is one of the worst-scaling parts (besides some very bad HTML). So a big thanks!

Comments are closed.