On the Road to Plasma 6

After I accidentally screwed up my system Friday night, I ended up with no choice but to install all system updates from KDE neon “unstable” which now defaults to a Plasma 6 session. I certainly wasn’t planning on spending a few hours that evening fixing my setup. Alas, I am now taking “eating your own dog food” to the extreme and made my daily driver laptop run Plasma 6.

“About this System” dialog: KDE neon Unstable Edition.
KDE Plasma Version: 5.27.80
KDE Frameworks Version: 5.24.0
Qt Version: 6.5.0
There’s a few loose screws here and there.

Of course in the current phase of development it’s in a bit of a rough shape, a combination of packaging / co-installability woes, like some key components still stemming from a Plasma 5 build, and actual broken code suffering from changes in Qt, Frameworks, and Plasma itself. For instance, the Breeze SDDM theme already requires Qt 6 whereas SDDM is currently shipped as a Qt 5 build. The fallback theme it provides is quite broken, so it took me a while to log in again. On the other hand, Breeze temporarily isn’t provided for Qt 5 anymore, so those apps look hideous right now. Of course, this is all being worked on and will be resolved soon.

On the plus side, I now really have to fix everything that gets in the way of using this system productively. I already addressed a few issues Nate bugged me about at the Plasma Sprint in Augsburg earlier this month. For starters, my KRunner wasn’t working and aborted whenever I typed a query. I was completely oblivious to how reliant I have become on it until it stopped working. Luckily, it was just a stale KRunner plug-in I had been working on ages ago (one that lets me find emails in Thunderbird, sadly never finished due to massive performance problems in the relevant extension APIs). Once deactivated, KRunner was mostly usable again.

However, clicking results in KRunner doesn’t work, you have to use the keyboard to select them. While the items visually react on a mouse press, no action is triggered on release. It seems the ListItem inside steals the clicks from the surrounding MouseArea. The easiest solution is to shuffle the code and make the ListItem the root object, which also simplifies and speeds things up, but I’d really like to know what changed and where (is it Qt, Kirigami, Plasma Framework?) to break code that doesn’t appear to have changed much in years.

Another bug I just addressed was favicons not working in Plasma Browser Integration’s KRunner plug-ins (tabs runner and history runner), again a feature that I heavily rely on. Qt 6 introduced a qsizetype (something like size_t) which it now uses instead of int for properties, such as array size, image stride, etc. In some places this change was accidentally propagated to DBus signatures which subsequently broke an API contract.

Finally, the removal of the deprecated Qt.MidButton enum value (it’s now Qt.MiddleButton) broke middle clicking windows in the task bar to close them. Luckily, that was a straightforward change and at a glance I didn’t find any other references to the old name in Plasma repositories.

Over all, the system is quite usable and I encourage all brave developers to give it a try and help iron out all the bugs. Nevertheless, at the moment it’s pretty much just a Qt 6 port of Plasma 5, and I expect other things to break as we integrate more fundamental changes to the software architecture. For instance, the Plasmoid API is currently undergoing a major cleanup and Plasma Framework is being dismantled right now.

Going to Akademy, Thessaloniki, Greece

Leave a Reply

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