This week is a twofer! We have the long-awaited Wayland fractional scaling support, and the equally long-awaited ultimate fix for Plasma’s multi-screen woes! Let’s take them one at a time:
Wayland Fractional Scaling
The Wayland protocol for fractional scaling was finally merged last week. Kenny Levinsen proposed the protocol itself, and this week, the KDE and Qt implementations for Plasma 5.27 which have been done by David Edmundson were merged. Thanks a lot, everyone!
“What does this do?” you might ask. It allows the Qt toolkit to turn on its pre-existing fractional scaling support on Wayland that it always had on X11. No more rendering to an integer size and then scaling down! This should result in Qt apps that are scaled to anything other than 100%, 200%, or 300% scale having better performance, less visual blurriness, and lower power usage.
What about GTK apps? They’ll reap the same benefit once GTK also gains fractional scaling support and implements the protocol. Until then, GTK apps will continue to use the less efficient upscale+downscale method for fractional scale factors.
When is it coming? Well, KWin already has support in Plasma 5.27. Support in Qt is only in Qt 6 right now, meaning we won’t reap the benefits until Plasma 6. There’s a chance it could be backported to KDE’s Qt 5.15 patch collection, though. Stay tuned!
Fixing Multi-Screen
Multi-screen is a complicated beast because it touches so many parts of the software stack. Ultimately most of our problems arose from the use of connector IDs to identify screens and map Plasma desktops and panels (“containments”) to screens. This worked poorly, because connector IDs can and do change under various circumstances. As a result, things often became a scrambled mess, with the behavior either being random, or consistently wrong.
That’s all changed. You can read the details here. In a nutshell, we now use an index-based system, with index numbers bound very tightly to Plasma containments, but index numbers themselves being able to move between screens based on how many screens there are. So for example, when screen 1 with your Plasma desktop and panel becomes unavailable, a new screen becomes screen 1, and the Plasma desktop and panel bound move over to it.
This new system should result in vastly greater stability, reliability, and predictability with respect to how screens are enabled and disabled, positioned, and what Plasma desktops and panels they show. It fixes notorious bugs like Plasma containments being randomly moved around or lost and desktops sometimes losing their wallpapers, widgets, and icon settings. It also makes arrangements of screen layouts and Plasma containments stable across the Plasma X11 and Wayland sessions. Big stuff.
Now, let’s set expectations a bit: this doesn’t mean that literally every multi-screen bug is now fixed. Rather, it brings us a new platform that isn’t broken by design, upon which we can fix bugs without introducing new ones in the process. So now multi-screen can truly become even more reliable over time, rather than juggling a rotating whack-a-mole assortment of bugs from one release to the next. The work was done by Marco Martin, Ivan Tkachenko, Xaver Hugl, and David Edmundson. It will land in Plasma 5.27. Thanks a lot, guys!
Other New Features
You can now reverse the ordering of tasks in the Plasma Task Manager widget on vertical panels, to complement existing support on horizontal panels (Tanbir Jishan, Plasma 5.27. Link)
In the Plasma Wayland session, you can now allow XWayland using apps to snoop on the keypresses made in native Wayland apps, mimicking how things work on X11. This is required by some XWayland-using apps, such as Discord for its push-to-talk feature. Doing this reduces security, so it’s off by default and has various different on levels so you can choose for yourself the balance of security and support for legacy apps (Aleix Pol Gonzalez, Plasma 5.27. Link):
It’s now possible to use a modifier key (e.g. the Meta key) as the shortcut key when using the key input chooser to assign shortcuts to actions. This will allow us to replace the weird old modifier key handling in KWin and let you simply assign modifier keys to things like Kickoff and Overview directly. That’s not ready yet but will be coming soon! (Aleix Pol Gonzalez, Plasma 5.27 and Frameworks 5.102. Link 1, link 2, and link 3)
Discover now has a SteamOS backend, so it can perform system updates on Steam Deck devices from within desktop mode (Jeremy Whiting, Plasma 5.27, but possibly backported to SteamOS itself sooner. Link)
User Interface Improvements
Spectacle’s sidebar now uses pushbuttons to let you take a new screenshot, replacing the old two-stage UI wherein you would first have to choose a capture mode and then click the “Take New Screenshot” button. The new workflow should be much faster! (Noah Davis, Spectacle 23.04. Link):
Spectacle’s new annotations system once again draws drop shadows behind your annotations by default, just like the old one did (Marco Martin, Spectacle 23.04. Link)
KRunner no longer matches apps’ executable names, as this caused too many false positives when searching for unrelated things (Alexander Lohnau, Plasma 5.27. Link)
The User Feedback slider on System Settings’ Quick Settings page has been removed, because as of Plasma 5.27, you’ll have the opportunity to choose to share telemetry data with KDE developers–or not–in the new welcome wizard app (me: Nate Graham, Plasma 5.27. Link)
On System Settings’ Desktop Session page, the “Offer Shutdown Options” option has been removed, because we found that it actually didn’t do anything anymore after all the changes of the past few years (me: Nate Graham, Plasma 5.27. Link)
Adding new virtual desktops now increases the number given to the new desktop, instead of naming all new desktops “New Desktop” (Thenujan Sandramohan, Plasma 5.27. Link)
When changing indexing settings that require a reboot to take effect on System Settings’ File Search page, it will now present you with a message informing you of this, with a big friendly button you can click on to reboot immediately (me: Nate Graham, Plasma 5.27. Link):
When creating window rules and trying to match windows by their window class, the page will now give you a comprehensible error message when you target a window that doesn’t have a window class (Ismael Asensio, Plasma 5.27. Link):
Significant Bugfixes
(This is a curated list of e.g. HI and VHI priority bugs, Wayland showstoppers, major regressions, etc.)
Disabling middle-click paste in the Plasma Wayland session no longer makes it impossible to select text in some GTK apps or causes them to crash (Vlad Zahorodnii, Plasma 5.26.5. Link)
In the Plasma Wayland session, external screens now work when using various ARM-powered devices (Xaver Hugl, Plasma 5.26.5. Link)
When Discover installs updates for an add-on from store.kde.org that needs to present an error message or question as part of the update process, or tries to do so because the update failed, Discover now shows this to you instead of silently eating it and leaving it wondering why things aren’t working (Aleix Pol Gonzalez, Plasma 5.27. Link)
The Blend Changes KWin effect no longer triggers while the foreground window is fullscreen, so when you’re using the “Accent color from wallpaper” setting and a slideshow wallpaper, you’ll no longer, for example, experience brief choppiness while watching a full-screen video when the wallpaper changes (Xaver Hugl, Plasma 5.26.5. Link)
Disabling and re-enabling the top-left-most screen no longer causes it to become mirrored to the screen to the right of it after being re-enabled (Ivan Tkachenko, Plasma 5.27. Link)
The “Add Rule” dialog in System Settings’ Firewall page now works properly for the ufw
firewall (Paul Worall, Plasma 5.27. Link)
Other bug-related information of interest:
Automation & Systematization
We now have a whole framework for performing automated GUI tests using the accessibility API, which exercises both at once for double-whammy of a win! This has been rolled out for a start with the calculator widget (Harald Sitter, Plasma 5.27. Link) And don’t be shy, write your own! Here’s the documentation.
Added a basic autotest for Activities (Alexander Kuznetsov, Plasma 5.27. Link)
Dependency metadata for what kde code kdesrc-build
needs to compile for any given thing you tell it to build is now auto-generated from each repo’s continuous integration system metadata! (Nicolas Fella, right now. Link)
develop.kde.org now has a tutorial on writing advanced Plasma widgets that use C++ backend code (Chris Holland, Link)
2022 Fundraiser
KDE’s year-end fundraiser is halfway done! We’re more than halfway to the goal, but progress has slowed quite a bit. If you haven’t donated yet, please consider doing so! With all the hiring KDE e.V. has been doing, we need to significantly ramp up fundraising to keep up the pace to avoid getting into the red. Every little bit helps!
…And everything else
This blog only covers the tip of the iceberg! If you’re hungry for more, check out https://planet.kde.org, where you can find more news from other KDE contributors.
How You Can Help
If youâre a developer, check out our 15-Minute Bug Initiative. Working on these issues makes a big difference quickly! Otherwise, have a look at https://community.kde.org/Get_Involved to discover ways to be part of a project that really matters. Each contributor makes a huge difference in KDE; you are not a number or a cog in a machine! You don’t have to already be a programmer, either. I wasn’t when I got started. Try it, youâll like it! We donât bite!
Finally, consider making a tax-deductible donation to the KDE e.V. foundation.