KDE's Plasma Team presents a first glimpse at the evolution of the Plasma Workspaces. Plasma 2 Technology Preview demonstrates the current development status. The Plasma 2 user interfaces are built using QML and run on top of a fully hardware accelerated graphics stack using Qt5, QtQuick 2 and an OpenGL(-ES) scenegraph. Plasma 2 is a converged workspace shell that can run and switch between user interfaces for different formfactors, and makes the workspace adaptable to a given target device. The first formfactor workspace to be demonstrated in this tech preview is Plasma Desktop, showing an incremental evolution to known desktop and laptop paradigms. The user experience aims at keeping existing workflows intact, while providing incremental visual and interactive improvements. Some of those can be observed in this technology preview, many others are still being worked on.
Architecture & Roadmap
While the underlying graphics stack changes fundamentally in the new Plasma edition—moving it to a fully hardware accelerated OpenGL(ES) scenegraph—the user interface components have been ported to make use of this new technology. As such, this is not a rewrite from scratch, but a port to a new graphics system. Plasma 2 Technology Preview builds on top of Qt 5.2, QtQuick2's OpenGL scenegraph and the KDE Frameworks 5.
KDE Frameworks 5 is a modular version of the KDE Libraries and will be released independently from the Workspace. A preview of KDE Frameworks 5 has been postponed slightly to early 2014, a first stable release is planned for later that year. Together with Plasma's converged Workspace shell, which supports switching between different, modular device-adaptable Workspaces, Plasma is more suitable for deployment on a wider range of devices. The team planses to release the first stable version of Plasma 2 this summer, with an end-user ready desktop Workspace. More formfactor Workspaces, such as Plasma Active and Plasma Mediacenter are planned to be added as they reach stable ports to Qt5, KDE Frameworks 5 and the Plasma 2 Framework.
Plasma 2 is in heavy development; this tech preview reflects a snapshot of this process. While the basic functionality is there, it contains many known and unknown bugs. The team is working on completing and improving the underlying infrastructure and smoothing out the user experience in more and more workflows. Plasma 2 is "dog-foodable", but not yet fit for wider testing of its functionality. The Plasma team will open the issue tracker in the coming weeks, after most of the show-stoppers have been fixed. Session- and power management services have been ported and are functional. Components that together make up the desktop, such as the task manager, launcher menu, notification area, clock and calendar have basic, but functional ports available. The coming weeks and months will be spent on finishing this functionality, ironing out bugs, visual polish and applying some smaller architectural updates to a number of parts of the workspace experience.
Plasma 2 Technology Preview starts up with a basic default desktop layout, providing an application launcher, a pager to manage and switch between virtual desktops, a taskbar, notification area and a clock. It comes with a number of example widgets. All of these components are basically functional, and will be further polished in the coming weeks and months.
KWin Window Manager and Compositor
The window manager and compositor of the Plasma Workspaces, KWin, has reached a close-to-production-grade quality in this technical preview. This is a very important milestone, given that KWin was the application most difficult to port by the KDE community.
The porting of KWin was difficult because it made heavy use of low-level windowing system specific API inside the Qt libraries, which was removed due to the introduction of the Qt Platform Abstraction in the Qt 5 releases. More details about the required changes are available in the KWin maintainer's Akademy talk. Most of the required API changes were already incorporated in the 4.11 release.
The Qt plugin for the X11 windowing system switched from XLib to XCB. This required rewriting large parts of the event filter inside KWin - a step which could only be done after porting to Qt 5. It was completely unknown what kinds of problems would be hit by such a port. There are not many window managers and compositors which have been ported to XCB. During the port the KDE team needed to add new features to Qt, was hit by regressions and bugs both in Qt and the XCB protocol bindings. Given that KWin had to be rebased on top of a new windowing system abstraction inside Qt, it is a great achievement to have a near-production-quality X11 window manager and compositor after such a short time.
A third area of unknown issues was the usage of OpenGL inside the compositor and QtQuick. This introduced a completely new area of threading related issues, which are explained in more detail in this blog post. Overall these issues are mostly solved, though the Aurorae-based window decorations have not reached production-ready quality; the Oxygen window decoration is recommended at the moment.
Although there was lots of porting involved, there are also new features which became available in the technology preview. The window decorations are now able to follow the color scheme of the decorated window—an important feature for the excellent image and photo applications Krita and digiKam by the KDE community that prefer a dark color scheme. This feature is also available through the window rules framework.
In the scope of Google Summer of Code, the configuration module for Desktop Effects was rewritten. It is making strong use of the new QtQuick Controls to enable a more flexible configuration. One of the first new features added to this configuration module is the integration of video previews of the effects. These videos have been created by Google Code-In students.
Getting the Plasma 2 Tech Preview
We recommend building Plasma 2 Tech Preview from our git repositories. Git tags for this tech preview have been created. Packagers can pull the source code with the "plasma2tp" tag from the respective git repositories. Most people will want to regularly update to the latest version of the KDE Frameworks 5 in order to get a constant stream of improvements. This is best achieved with kdesrc-build, which automates the fetching, building and installing and updating of the respective source code modules. Regular testing ISO images have become available, and are in the process of receiving the last set of updates that have gone in.