For the last couple of months I have been running sway on my main desktop system after having been forced away from hikari because of its practically halted development and incompatibility with newer wlroots versions.
I never felt completely satisfied with it and the whole experience was rather joyless, so about a week ago I decided to give KDE Plasma 6 a try after a surprisingly decent experience on the KDE Neon live image.
Whilst undoubtedly greater in its complexity and code size than sway, to me Plasma 6 seems like one of the last decent desktop environments still remaining. It’s incredibly customisable (but still comes with good defaults), looks nice out of the box, and most importantly seems to care about providing a nicely integrated and featureful experience. This even includes a companion app on Android, KDE Connect. It remains to be seen whether it will fully convince me in the long run, but for now I am very satisfied with it.
This last week was mostly spent learning about the desktop environment and setting everything up exactly how I want it to be, but there were two notable bugs to squash as well.
The first one reared its ugly head once I enabled backwards-compatibility with Qt5-based apps. I have a couple of such apps still, most prominently Mumble and Quassel IRC. Once the latter was built against the KFramework libraries, no more notifications were shown…
Fixing this ended up taking about two days, most of which were spent discovering
exactly how
KNotifications
work. KDE provides apps with a tighter integration to the notification service,
allowing users to specify which types of notifications to show, and how.
Applications specify their notifications by shipping an <app>.notifyrc
file.
KDE ties this file to the application by matching its base name to the name
given to the application (usually through a call to
QCoreApplication::applicationName
or when creating
KAboutData).
It turns out that Quassel had recently been
patched
to fix an issue where desktop environments did not show its icon correctly. This
required a call to setDesktopFileName
in KAboutData
to make environments
aware of the connection. However, Quassel’s application name was
changed in the same commit,
severing its link with the name given through its quassel.notifyrc
file. This
seems to have been done in addition to the setDesktopFileName
call and was not
necessary to solve the issue the commit was trying to address.
I prepared a pull request fixing this issue by reverting part of the offending commit.
The second bug I randomly came across whilst perusing journalctl
and seeing
the following error from Dolphin, KDE’s file
manager:
QString(View)::contains(): called on an invalid QRegularExpression object
(pattern is '\A(?:file:///home/wolf/[Z-A]/?)\z')
Seeing this immediately made me wonder whether Dolphin plugs a URL straight into a regular expression without escaping it, and the answer, of course, is yes. I spent most of today’s afternoon hunting this issue down and preparing a merge request that fixes it in an elegant way.