Rather than blog about Morocco (which I will do once I've processed the experiences a little more) or Plasma Active, I want to catch people up with what's coming in Plasma Workspaces 4.8.
Screen locking has been moved into the KWin window manager. We did this to improve security, performance, X11 independence and the overall look and feel of things.
The security improvement comes from the fact that since the window manager, which is responsible for placing windows and when in compositing mode even making sure they appear at all on screen, now knows about the locker window it can ensure that no windows or glimpses of the desktop ever happen 100% of the time, something we could not achieve reliable elsewise.
The performance improvement comes from the window manager knowing when things are locked (and not). When locked, the compositor can simply not paint anything else but the lock screen, simplifying things a lot in the locked case.
The X11 independence and look and feel improvements come from supporting QtQuick (read: QML) for the lock screen. This allows us to provide non-password based systems (think: touch screen device friendliness) and simplify the interaction between what is being shown and the unlock mechanism significantly (limiting maintenane costs and eliminating bugs). It also allows us to simply make things that look better. Plasma Active uses this to provide a very beautiful lock screen that blends with the rest of the system and shows the current time along with a simple swipe-to-unlock gesture.
The X Screensavers are not supported with the QML lock screens due to the design of X Screensavers, which dates back to 1992 when things were a little different. QML gives us a huge amount of flexibility, however, and the opportunity to create things that are as good and better than what X Screensavers offered. (QML will support OpenGL shaders, at which point possibilities really open up wildly.) We surveyed our users first before making this change, and there was overwhelming support for the benefit/cost involved in this change.
QtQuick Splash Screens
A new splash screen implementation that uses QtQuick has also been added, thanks to the efforts of Ivan and Marco. It loads QtQuick, which implies Qt, so can not be as performant as the very small and slim tool that Lubos coded for the KDE desktop in the past. However, in our tests, the user experience is not diminished in the least by the difference and the ksplashx option remains and in fact is, in Plasma Desktop 4.8, still the default.
Just as with the lock screen changes, this gives us the ability to deliver visuals that are more beautiful, more flexible and easier to change. The start up splash in Plasma Active uses this new splash screen facility and it looks beautiful. The ability to add animations and position the images and other information on screen completely freely really opens up the field here.
Right now, we do not have documentation on Techbase for this new addition but if one looks in kde-workspace/ksplash/ksplashqml/themes it becomes very apparent. Writing a small tutorial would be an awesome way to give something back to the community that doesn't involve coding. Hint, hint ;)
Input Method Panel
The KDE Input Method Panel, aka "kimpanel", got a complete and much needed rewrite for the 4.8 release. It has a nice separation between visualization and logic, using the standard Plasma approach of Applet and DataEngine. It resolves many long-standing issues, has simpler code and a very active maintainer in Weng Xuetian.
Speaking of input, the on-screen keyboard has seen numerous improvements in terms of bug fixes and performance, some of which take performance from "sort of acceptable" to "so fast you don't notice its doing something anymore". There isn't much here that is user visible other than "it works better". For the next release, we plan to offer support for integrated layout switching, quick access to accented characters and more X11 independence.
Taskbars, Docks and libtaskmanager
We are in the middle of merging the improvements to libtaskmanager from Craig Drummond's Icon Tasks Plasmoid. Icon Tasks itself will end up in the Plasma Addons repository (kdeplasma-addons) as well. This means much improved support for launchers, nicer context menus, a few new features and a number of bug fixes. It's a very significant effort as Craig's fork was quite large: 2639 lines covering 30 files. Seeing as the library is only 6,300 LOC, that's a significant set of changes.
We also managed to track down and squash, though many heroic hours by Alex Fiestas and others, several of the last very visible bugs in the tasks widget and libtaskmanager. Things like the ghost items that would sometimes appear have finally been fixed once and for all. Some fixes exposed problems in Qt itself (in particular: an issue with event loop reference counting whenever inside of x11EventFilter) which we have worked around until proper fixes appear upstream.
Picture of the Day, Picture Frame
This one started quite innocently enough as a patch by Greg T who noticed that the Picture of the Day feature in the Picture Frame Plasmoid caused it to check the picture every two seconds. Wow!
While merging and testing his patch (and the next two he submitted :) a whole number of other issues jumped out at me. Picture of the Day now behaves a lot saner, only waking up at most every five minutes and changing the picture only once it's been on your system for 24 hours (making it your picture of the day, regardless of when it changes on the source server).
While working on this, I realized with a start that there was no wallpaper plugin that used this. I could hardly believe this, and so wrote one while sitting on a train. In Plasma Workspaces 4.8 you can now have a new astronomy, flickr, Wikipedia or other picture on your screen every day. Currently I am using the Wikipedia picture of the day.
Picture of the Day is plugin based, so new picture sources can be easily added. Just as with the new QtQuick splash screen, however, we don't have documentation for this. Looking in kdeplasma-addons/dataengines/potd/ should give a would-be tutorial writer everything they need, however.
This also led to cleaning up a few issues in the Picture Frame, such as not stalling on images that were deleted from disk but just skipping to the next available picture automagically.
This is a hugely significant addition as it means we now have a full set of QtComponents for use from QtQuick that integrates beautifully with Plasma interfaces. It is the result of Daker's highly successful Summer of Code project, which Marco mentored with patience, care and brilliance. We have also had interest and contributions from people who came by way of the Mer project.
This is a vital step towards even better looking Plasma user interfaces and the ability to step into the OpenGL-driven world of QML2 when we get there.
Documentation is being written and will be available in coming weeks.
QtQuick'd Devices Notifier
Building on the components project, a number of Plasma widgets and other UI pieces are being ported to QtQuick. The first completed one of significance that debuts in 4.8 is the devices notifier, which was part of Viranch's Summer of Code project. To the user, nothing changes except it feels smoother and looks a little nicer. It was a long, long path to get to the point that we could use QtQuick as a better-than-QGraphicsProxyWidgets replacement in Plasma .. but we're there now!
In upcoming releases we will have a new QtQuick battery widget and panel controller, among other shifts. This is part of the strategy I described at the end of last year of not distrubing Plasma Desktop or requiring that we rewrite everything all at once, all in the name of respecting our available development resources and not disrupting the user in the least while still marching towards an all-QtQuick world for Plasma Workspaces.
Control Panels in Plasmoids
By adding a X-Plasma-ConfigPlugins= list entry in the metadesktop.desktop, scripted Plasmoids can now have arbitrary control panels integrated into their settings dialog. It's a small thing, but it allowed the QtQuick devices notifier to be fully realized.
Improved Window Switcher
KWin, in its usual and amazing pace of improvement, also brings a new window switcher UI system that ... wait for it ... uses QtQuick. ;) You can read more about this great work on Martin's blog.
... and so much more
These are just some of the highlights and doesn't really cover the many performance and stability improvements that have also been worked on. Alas, already this blog entry is too long, and dinner becons as well, so I'll leave it here and follow up later with more changes in another entry.
Hopefully this already gives you all the reasons you need to try out the alpha and beta pre-releases when they become available to help us test and make Plasma Workspaces 4.8 the most stellar release yet. :)