diff options
Diffstat (limited to '')
-rw-r--r-- | content/19/index.md | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/content/19/index.md b/content/19/index.md new file mode 100644 index 0000000..792a6dd --- /dev/null +++ b/content/19/index.md @@ -0,0 +1,87 @@ ++++ +date = 2024-09-18T21:16:12+02:00 + +title = "KDE Plasma 6 and two bugs" + +[taxonomies] +tags = ["bugs"] + +[extra] +related = [] ++++ + +For the last couple of months I have been running [sway](https://swaywm.org/) on +my main desktop system after having been forced away from +[hikari](https://hub.darcs.net/raichoo/hikari) because of its practically halted +development and incompatibility with newer +[wlroots](https://gitlab.freedesktop.org/wlroots/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](https://kde.org/announcements/megarelease/6/) a try after a surprisingly +decent experience on the [KDE Neon](https://neon.kde.org/) 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](https://kdeconnect.kde.org/). It remains to be seen +whether it will fully convince me in the long run, but for now I am very +satisfied with it. + +{{ img(path="kde-plasma.png", alt="A picture of the KDE Plasma 6 desktop +environment, with a browser window, a terminal, and an instance of Dolphin, a +file manager.", caption="KDE Plasma 6 with a few windows open") }} + +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](https://www.mumble.info/) and [Quassel IRC](https://quassel-irc.org/). +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](https://api.kde.org/frameworks/knotifications/html/index.html) +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](https://api.kde.org/frameworks/kcoreaddons/html/classKAboutData.html)). + +It turns out that Quassel had recently been +[patched](https://github.com/quassel/quassel/commit/020c163421691fa37330826df92ac0a248721290) +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](https://github.com/quassel/quassel/commit/020c163421691fa37330826df92ac0a248721290#diff-c72daad7d2269a2ee21584002ef1f30f4415335358a6c6f7e7296d3290a51a91R117), +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](https://github.com/quassel/quassel/pull/619) fixing +this issue by reverting part of the offending commit. + +{{ img(path="notification.png", width=412, format="png", alt="A picture of a +notification from Quassel IRC saying 'yay for notifications'.", caption="Glad to +have these back") }} + +The second bug I randomly came across whilst perusing `journalctl` and seeing +the following error from [Dolphin](https://apps.kde.org/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](https://invent.kde.org/system/dolphin/-/blob/5c069471fccc41051b967be69f95655b3e0b73ef/src/dolphinviewcontainer.cpp#L554-557). +I spent most of today's afternoon hunting this issue down and preparing a [merge +request](https://invent.kde.org/system/dolphin/-/merge_requests/831) that fixes +it in an elegant way. |