On Being More Convenient

As you may or may not know, Plasma’s mantra basically is “help you get stuff done”. This means it helps you to achieve your goals as easily for you as possible. Plasma 5.6 will be one of those releases where we’ve focussed a lot on getting in your way less and removing obstacles in the way between you and your tasks.

Unity Launcher Support

We at KDE believe in collaboration which means if there’s an API or library that works and is widely adopted, we’re happy to pick it up and add support for it in our software stack.

Chromium indicating the number of files being downloaded and total download progress
Chromium indicating the number of files being downloaded and total download progress, placement of widgets is heavily customized for this screenshot

Starting in Plasma 5.6, Chromium (and its proprietary counterpart) for instance, will indicate download progress in your Task Manager if you have libunity installed. There are many other applications that support these launchers, like Thunderbird and Telegram. It doesn’t stop there, however, KDE applications will also indicate progress in their Task Manager entry, like copying files in Dolphin.

Task Manager Media Controls

My personal Task Manager feature frenzy also involved media controls for Task Manager. While we have had the Media Controller applet since the initial Plasma 5.0 release, I have never managed to implement support for multiple players in there. Thanks to Plasma’s modular design, the MPRIS data engine infrastructure used by Media Controller was trivially reusable for the Task Manager.

Controlling VLC Media Player through its Task Manager entry
Controlling VLC Media Player through its Task Manager entry
Controlling Amarok through a pinned launcher while its tray icon is buried deep in system tray
Controlling Amarok through a pinned launcher while its tray icon is buried deep in system tray

Controlling your favorite music or video player, such as VLC player, Amarok, Audacious, Spotify (if it implemented the specifications correctly), and every other player supporting MPRIS is now as easy as hovering its Task Manager entry. You’ll get to see pretty album art there, too, which is much more descriptive than a tiny thumbnail of your playlist window. Of course, you still get a live thumbnail while watching a video. The player application doesn’t even need to have a window open, as long as it’s running and you have a launcher pinned, you can control it. While at it, I also ensured that the “on Desktop X” text is only shown if you actually have more than one virtual desktop.

Device Notifier Feedback

A thing which always made me cringe was the way Device Notifier provided feedback to the user. When unmounting a device failed, it would pop up and show a status bar containing a long text, mentioning the device the error occurred with but displaying this in no way connected to the actual device. The same happened when safely removing a USB drive.

This device is busy.
This device is busy.
This device can now be safely removed.
This device can now be safely removed.

In Plasma 5.6 the wording is much more concise and will be shown next to the device in question. I also rewrote large portions of the code that dates back to Plasma 4.7 to use QtQuick Layouts reducing code size and ensuring uniform spacing.

Note that I enabled displaying all storage devices just for demonstration, by default you would only have your USB thumb drive in there.

57 thoughts on “On Being More Convenient”

  1. Thank you so much! These are all the sorts of changes I’ve been waiting for in Plasma 5!

    I super love the libunity stuff!

  2. Now we only need file transfers systray icon to not suck up 100% cpu, fighting for resources with the transfer itself, and Plasma might become usable again for me.

  3. Kai you are saw awesome.

    the media control stuff look so awesome only the app icon and name look a little bit out of place. is the app icon and name defined in the plasma theme?

    1. The app icon comes the Breeze theme. The name is provided by the application, ie. either the title of the window or the application name itself.

      1. I guess he meant more why are they (app name and icon) there at all – or at least this is what I was wondering…
        I think it would be sufficient (and nicer to look at) to have only the album art and controls.

        Also there is something of in the amarok hover.

    1. There is currently no way to hide specific devices from device notifier. Care to explain why you would want this?

      1. Maybe because he use some always connected and mounted external HD over a USB and don’t want to see this “fixed” device in the tray.

      2. Hi,
        I’ve got a similar need.
        I would like to hide most of my numerous internal sata drive partitions (Linux but other distrib, NTFS) but not all of them. I would to hide my e-sata external drive as well.
        This feature was part of the device notifier before it was rewriten in QML with kde 4.8 (regression bug 290377). With the kde 4.7 device notifier, you could right click on the device and select “Hide this device”.
        It would be great to see it this behavior back.
        A cool addition could be a check box to “Hide System partition” in the properties pannel of the plasmoid, based on the properties UDISKS_SYSTEM=1 (udev).
        Exciting work anyway ! ;-)

  4. Very nice. Thank you very much! You are solving many little “issues” which are making Plasma 5 much more helpful. I was already missing the “dockmanager” functionality from KDE 4 which was showing the number of unread mails. Hopefully kmail/kontact will use libunity soon too.

    1. I was in fact looking at dock manager but it seemed pretty much unmaintained. I doubt KDE Applications will use libunity but I might write a KDE Frameworks library for it. Even if we come up with our own API for that purpose – the Unity API works on a per-application basis rather than per-window, so it doesn’t completely fit into our default workspace setup – it would be nice for those running KDE Applications under Unity. In any case my long-term goal is to get rid of applications minimizing to system tray but instead have them reside as launchers in task manager. For this we would need some infrastructure whose library could fall back to Unity launchers or something like that.

  5. http://i.imgur.com/nPVhWr9.png

    That is how the information should be deliver to be direct and easy.

    The text doesn’t cut it. Icons doesn’t cut it.
    When you connect the removable device, that device manager needs to pop-up and new device needs to have blue backgrounf for a few seconds in device manager as in the Dolphin and any other filemanager where the new removable is shown.

    When there is an error, that needs to be red. And when the device is removed without unmounting, it needs to be shown as yellow just to remind users that what device was removed and that it was unsafe remove.

    The background is same as in Dolphin or in System Settings is the notification pop-up top of the fileview. Just a few second long background color with the gradient that follows the used color theme (like the Dolphin does it).

    And then it is very informative and easy from first glance.

    Now look the device manager, you first spot the disk space usage bars as those are the main element. Then you look the eject icon and then the green check mark icon (never show green check mark as normal operation). And then lastly you start noticing that there is one textual element that say something “This device can now be safely removed”.

    User just did something, then highlight exactly that feature and element in the whole UI.

    1. The device was supposed to be highlighted automatically, if it showed a message but that didn’t work with the eject operation as the device is technically no longer in the list. Originally, the icon was supposed to be shown next to the error message. I’ll bring up your suggestions in the review request nonetheless.

      As for the green check mark, that’s actually the “mount” button but we use a wrong icon here. It is the “emblem-mounted” icon used to indicate if something is mounted, not for the task of mounting something. This worked fine with Oxygen icons where it used to be a plug; I already raised this issue and requested a proper icon.

      1. Thanks for the reply.

        I think that the eject operation info (blue color of that background rectangular) pop-up is crucial so the user knows that the device was removed. It doesn’t matter that it isn’t anymore there when it is informing the user it has been removed.

        So if user clicks “Eject” then it would turn to Green for few seconds and then be gone. Just so the user knows that the eject action was received and it is working and the device didn’t just disappear while looking elsewhere etc.

        And one thing I dislike is that if I eject something via software, but the device is still physically in the port. I can’t open the device anymore without going and removing it and then attaching it again. It is just that you want something to be safe by dismounting it, but not remove it physically.

        1. I just made a patch that highlights the item and slowly fades the highlight away until the dialog collapses again, Usability has another suggestion, however. We still have two months of time to iterate this. :)

          The problem is if we don’t power down the device, if you attach an external hard drive, it would keep spinning, so it’s either that or that. Thanks for bringing this up again, though, perhaps we can have a two state solution where clicking it once “safely removes” the device and then it turns into a optional “power down” (and a “mount again”) button.

          1. While I like to see the remounting issue solved, I wonder if “power down” is understandble for the common user, especially if the external device is an usb thumb drive for which powering down does not make any sense, right?

            Soo, how about detecting if the device is solid state or spinning rust. Solid state drives (including thumb drives) could be simply unmounted and then be remounted if needed. For HDDS, the solution you proposed seems fine to me, maybe with a little extra text explaining what is going on. The downside of my idea is that the process of unmounting depends on the type of the device which is umounted. I am not sure if this is straight forward.

            However, thank you so much for looking into this issue.

          2. That sounds very nice! I would like a two state option – How many times have I safely removed a device – it disappeared and I had to replug it to have it show up again.

  6. Nice changes! THX

    One more possible improvement that would come in my mind regarding device notifier:
    -> there is actually no progress indicator. That means when mounting a slow external medium, one is unaware if a click on the device was recognized. It also seems to hang the device notifier until the media is mounted.

    1. There should be a busy spinner and a text saying “Mounting …” but it doesn’t show up reliably for some reason.

  7. What libunity version would you recommend distros include? launchpad latest release is 6.12.0, but from several years ago…

    1. The version I have installed is libunity9 (7.1.4) provided by Ubuntu packages.

      Looking at Chromium source code, they support libunity.so.4, .so.6, and .so.9 (the latter I have installed) but I don’t know to which library versions that refers to.

  8. Nice additions :).
    Can the progress lib stuff be extended to stuff like firefox (most importantly), and stuff like wget/curl?

    I’m still on kde4…, app menu is keeping me back, can’t add apps to the main menu, only on sub menus…
    That prevent’s me from fully redoing the menu the way I want (qdbus stuff… and etc)

    I modded smooth tasks 2 or whatever it was, my task bar and panel is on the right, the mod makes it so the tasks appear on the top of the panel instead of the bottom.
    I can’t remember what all I did plus that but it would be nice to see such things in that.., ported in kde5.
    I like the way it folds out and kinda looks like a tab on folder thing lol, makes more use of the room.

    Never could figure out the 16px icons for the system tray even though I modded the files for it.
    Almost makes me wanna get a higher res monitor so the icons are smaller lol.

    I wish you guys would finish the classic app menu.
    I don’t even know where the code is for it, so I can’t even attempt to make it function like the old one.

    Anyways awesome work none the less :)

  9. Awesome job indeed. As always! I love Plasma 5, small incremental improvements are the way forward.

    But I have one concern: when will KDE properly support (i.e. be natively usable with) touchscreen devices? Touch devices make up for a fairly big portion of the market by now. Microsoft has kinda working interface… ugly, but at least optimized for touch. Plasma 5 doesn’t even have a virtual keyboard plasmoid (and the one in KDE4 was broken)!

    Last Randa theme was “Bring touch to KDE”, but since I have seen no touch capabilities in KDE. Sure, I can setup touchegg the way I like it, but that has nothing to do with KDE. Who is working on that, if someone is?

    Thanks!

    1. Making a touch-optimized UI for desktops/laptops is where Microsoft went wrong with Windows 8, and they rightfully reversed most of that in Windows 10.

      Yes, some details can be improved for touch in Plasma Desktop without any negative impact on mouse and keyboard interaction, but for touch-only devices (or convertibles in tablet mode), there has to be a completely touch-optimized shell.

      Plasma Mobile will eventually fill that role, but it’s still in a very early phase and will first focus on phones.
      We also still have the codebase from Plasma Active which has been ported to Plasma 5, but it would still need more work to become a fully functioning shell.

      1. I don’t mean that we need a full-touch UI, that would be awful. I don’t refer to touch only devices either (I should have been more specific), I refer to 2-in-1s, which are all the rage these days.

        Having tried many 2-in-1s I can safely say that those are mainly normal laptops, and the interface should stay like that of a normal Plasma. But touch-permitting actions could be implemented without disturbing the desktop design. Some examples:

        1) Accept swipes for changing tabs in tabbed views (e.g. dolphin)
        2) Accept screen border swipes and treat them just like the current hot corners
        3) Accept screen border swipes to show/hide panels and KRunner (I loved the U-Bahn prototype)
        4) Implement a working virtual keyboard (CRUCIAL!).

        This is Plasma’s philosophy, isn’t it? “Simple by default, powerful when needed!”.
        If the laptop is a 2-in-1, all the above actions come pretty natural even when using the computer as a laptop, and do not disrupt the normal desktop-like workflow for non-touch users.
        Non-touch users do not need to notice anything different: for them, Plasma is awesome as is. But I can assure you that using Plasma on a 2-in-1 right now feels like a let-down: not having a virtual keyboard, for instance, means I have to go back to laptop mode even just to type in a browser address when I’m simply lazily browsing. Extremely annoying.

  10. I really, really like that you are showing which applications are using the device that is being removed. I just wonder if more could be done instead of just showing the user the app names in future.

    Focus the window of the offending app?
    Open the task manager with those apps focused?
    Ask the apps to quit nicely?
    Force kill apps?

    It’s hard to decide on a behavior, but maybe it would be useful to users to have some action to execute when a device is in use.

    Just a thought. Excellent work though! I can’t wait to use 5.6, it looks like an exciting release all around!

    1. All we know unfortunately is the PID of the process that blocks it, no window ID or anything. I wanted to make the list a bit prettier, perhaos show app icon and its proper name. The only application I could find that actually blocked unmounting was Bash, however, all GUI apps handle this gracefully, so not sure how to proceed there.

  11. Cooler Typ, du!

    I think you are such a great addition to the KDE community and I cannot express my gratitude for your work enough. More than that, you would definately be nominated for the “employee of the month” award (if this would be a company).

    In any case if you are in Berlin, your next drink is on me!

    1. I actually looked at Global Menu a couple of times but nobody could tell me what “the” standard for this nowadays is, there’s a couple of different implementations as far as I can tell. Also, we would need to add this to our Plasma Qt Platform Plugin so applications export their menu over DBus. Overall, it’s much more complex than I hoped it would be.

    2. As a follow up: Yesterday I worked on a little Global Menu Plasmoid prototype. As of now, it only works with Chrome and is pretty ugly. The next step would be add support for that into our Qt Platform Theme so all Qt/KF5 applications export their menu via DBus.

      Unfortunately GTK (and I think Unity) applications use GMenuModel nowadays whose DBus interface is non-stable, so we cannot really use it. But at least for Qt/KF5 applications we can do this. :) It won’t be in 5.6 for sure, though.

      1. And I just noticed there’s someone actually implementing the Global Menu stuff upstream right into Qt, so eventually all Qt and KDE applications will be able to make us of it. Awesome!

      2. That’s a bummer, GMenuModel being unstable; is it really changing so often? I read that they believe in only having the C API stable but changing the DBus interface freely; that seems wrong to me.

        Yes we’d like to have dbusmenu support in a future version of Qt; we already did a chunk of the work to support tray icons and their menus, and are now getting some help from Dmitry to make the menubar itself work.

        Do you have a link to the code for your menubar plasmoid?

        1. See my recent blogpost about this. :) I haven’t published it anywhere yet but I’ll put it into a scratch repo. Beware that it’s really bare-bones and doesn’t support Alt activation or partial reloads. At least it shows menu entries and allows activating them. I’ll keep you posted.

        1. I hoped that it would work with Qt 5.7 out of the box but we have our own KDE Platform Theme which overrides the default Qt platform theme and not the “Unix” one (which isn’t exported/public) that has the global menu stuff. :/ I haven’t forgotten about it but it will take longer than I anticipated to get this right… sorry.

  12. There’s one big issue I have with the device notifier: It’s always around even if no device wold be listed in it. Sure, the icon hides itself into the popup list in this case, but it’s still bad design. Tray icons are only supposed to be there if there is a meaningful interaction that could be had. And a device notifier that doesn’t show me anything is pointless.

    Even Windows gets this one right: if there’s a removable device, it’s around, otherwise it’s gone. If the last device is removed, it may stick around for a few seconds to tell you it’s safe to remove and then it goes away.

    I actually hate the way the tray icon paradigm changed sometime in Plasma 4 when the hide icons by default choice got made. You should never hide any icons inside a popup by default. It can end up in a crazy state like in Windows where tons of stuff is still around but you don’t know it since some random decision makes the icon be hidden in the popup. Instead, don’t show me a icon for something I cannot have a reasonable interaction with any.

    Same for the notifications icon. If there’s no notification around, don’t even show an icon in the popup list. Just remove it. If there are notifications in the list, show the icon. And show me a different icon for unread notifications.

    1. Just recently we gained the infrastructure for an applet to hide itself completely, I think the Bluetooth applet will now completely disappear when you don’t have any Bluetooth hardware.

      The same could be done with notifications, device notifier, and some others. I fear that we might make their config options inaccessible by doing so, however. I’ll raise this issue with our Usability experts, nonetheless.

      Notification applet already sort of tracks “unread” vs “read” notifications, ie. if your session is idle, notifications won’t disappear; we could perhaps improve upon this. I also have a WIP patch to have notification applet indicate that you missed notifications while watching a video (ie. fullscreen window) but this still needs more thought to be production-ready.

  13. Hi, i really love the work on Plasma 5, thanks for all these hours of development (:

    I have a question, in KDE 4 i use a global menu, i used many years OS X with these workflow on menus. When Plasma 5 born to this 5.5 release … i don’t see any development for a new version of a appmenu … it’s the only thing that i miss from KDE … it’s possible see an option in Plasma 5? i dont will have problems if only Plasma applications, i dont use gtk apps … please add again a menubar plasmoid (:

    1. I have something in the works right now. It does not work with KDE applications yet but I’ll work on that as well. I hope we can get that in for Plasma 5.7 :)

  14. Is there any Wayland compatibility improvements planned for 5.6? For me at least KDE on Wayland is very buggy, regardless of the distro I’m using. Just wondering if 5.6 may be less buggy when run on Wayland.

    1. It’s still very much work in progress and marked as tech preview. It will take time until it is really usable for the majority of users. I doubt 5.6 will be it :)

  15. Great progress. However please consider Plasma’s robustness in addition to adding new features. A super robust Plasma with minimal features > A not so robust Plasma with a ton of features.

  16. Hi there! It seems I came here a little bit late, but anyhow… I just installed libunity9 package (I’m on neon 5.7 ue) and chrome (52 stable) started to show green progress bar while copying files. It’s amazing, but when you got window maximized and “Use system title bar and borders” option unchecked there is no window control buttons (min, max, close). Is there any way to fix this?

    1. Please do use “Use system title bar and borders”. That’s the reason client-side decorations are utter rubbish. Chrome tries to be smart and hides those buttons because Unity has them in the top panel but we don’t, so this breaks.

Leave a Reply

Your email address will not be published. Required fields are marked *