I have realized I haven’t had a Lancelot-tagged post in a really long time. This just has to change.

After the release of Plasma Active 2, I decided to take a few days off, and do something else. After Martin’s port of Kickoff to QML, I got the idea that I could finally start porting Lancelot to QML. I have entertained this idea in the past, but I was unsure about how backwards compatible QML2 will be and whether I’ll have to rewrite large parts of Lancelot for the fifth time due to changes in Qt.

With all those doubts still present, I decided to bite the bullet.

I’ll try to keep things on the /safe side/ by keeping the Lancelot-specific hacks to a minimum. This means I’ll try to use Plasma Components and standard Qt Quick as much as possible instead of writing my own like before (at the time, there were no pre-made UI components for QGraphicsView).

Data models

The first to port were the data models - instead of a custom ActionListModel class, I’m now using the standard QAbstractListModel, and all the models are exported as QML components in the namespace of org.kde.lancelot.components.data.

This means that any KDE/QML application, plasma applet or something else, will be able to use these models by doing a simple import.


After the models were converted, it was the time to test them, and what better way than to re-implement the Shelf applet. As you can see in the screenshot, even the KRunner-based search works.


There will be regressions in this process. Some intentional (aka permanent feature removals), some not. At first, there will be no click-free activation, no drag-and-drop, no …

I don’t plan on releasing Lancelot 2 until most of the current features are reimplemented, but this is not the case for the Shelf. It will go into KDE Plasma 4.9 regardless of state it will be in. It is almost usable now, more than a half a year before 4.9 is released to the wild.

Lancelot 1.x

There will be no major changes in the current branch of Lancelot, unless someone steps up to do the work. I’ll try to find the time to fix openSuse-specific (I don’t use oS, so can’t reproduce) crashes that have been flooding bugs.kde.org recently, but that might be after 4.8 is released.