This week in KDE: Wayland fractional scaling! Oh, and we also fixed multi-screen

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.

23 thoughts on “This week in KDE: Wayland fractional scaling! Oh, and we also fixed multi-screen

  1. That is a lot of cool stuff. I’ve heard about trying to balance “wow factor” and stability for Plasma 6, but at this rate 5.27 will be a goodbye to Plasma 5 with a bang.

    Liked by 1 person

  2. > Fixing Multi-Screen
    Oh yeah. I was so tired of disappearing panels. I have three monitors. And often panels are thinking they belong to another monitor than they are actually located on. I often needed to remove panel manually and recreate it. And because of that, I wanted to make a feature request to allow adding user-default panel (not just empty or default panel). Let’s see if that is not needed anymore.

    > allow XWayland using apps to snoop on the keypresses made in native Wayland apps
    Wow! Guys, you rock! I even thought of a scenario that I will test first with this functionality. An Input Leap app with a lead app (to allow detecting mouse near edges).

    > 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.
    But why I cannot assign Insert + PageUp and Insert + PageDown? I want (wanted for a long time) these shortcuts to switch next/previous clipboard content. Is it possible to acheive that? Maybe need to turn Insert to a modifier key?

    > Spectacle’s sidebar now uses pushbuttons to let you take a new screenshot
    Cool. Now as spectacle is actively gets improved, maybe shooting windows with context menus could be improved? https://bugs.kde.org/show_bug.cgi?id=462780

    Other bug fixes and automation improvements are also very cool, thank you all, guys!

    Liked by 1 person

  3. > Disabling middle-click paste in the Plasma Wayland session no longer makes it impossible to type text in some GTK apps

    This one was about selecting text, not typing. Also it was about apps crashing. 🙂

    Like

  4. I consider fractional scaling and multiscreen setups the two most relevant features that are still a bit buggy in Plasma. Plasma is already pretty good on highdpi displays, but this will make it awesome. This is an impressive work! Can’t wait to have it running in my system. A backport to Qt 5 would be very convenient. Thanks to the team!

    Liked by 1 person

  5. Is there a specific reason that the idea for selecting specific keys that could be passed to Xwayland apps was passed over for the less granular solution merged? I’m not knowledgeable enough to sift through the code to determine any obvious flaws or strengths.

    Like

  6. The previous Spectacle layout with that single “Take a New Screenshot” button was more straightforward. The new one is just hard to parse.

    Sidebar sections are also in a wrong order. Users parse forms from top to bottom, therefore this new layout implies you can set those settings AFTER you made your screenshot. Like turning off the mouse pointer and borders on an already captured screenshot. Not good from UX standpoint.

    Like

    1. The arrangement seems easily fixable.

      As for the workflow, we reasoned that users would appreciate a direct one-step workflow rather than an indirect two step workflow. We’ll see how it’s received once released.

      Like

  7. > 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.

    Is it possible to disable this at compile-time?

    Like

  8. Re: Welcome wizard. From a “don’t force the user to do everything at once, retain state across reboots, get out of the way but remain accessible until finished” point of view, I think a windowed app is the wrong format for this.

    Have you considered making it a Plasma widget instead? It would be available right there on initial start-up, wouldn’t be distracting if the user is trying to do actual work immediately, and can be found right away by minimizing/closing windows (or any other ways to see desktop widgets) which also happens to correspond with situations that the user is most open to trying out something new.

    Going forward, contributors can pack it as full as we like because we know it won’t be overpowering with as an extra taskbar item or by covering other windows. Preserving the current “page” in the wizard feels entirely natural, as opposed to closing the window where I’m not sure if the app will remember where I was before. The last step of the tour can be to show the user how to remove the widget from the desktop and/or re-add it if so desired.

    Liked by 1 person

    1. This is a really good idea.

      At the moment it’s an app with a window and this is probably too late to change for Plasma 5.27. But your comment makes me think that for Plasma 6, we should look into turning it into a widget. The Kubuntu Fucks people do a similar thing, and ship with an onboarding widget by default and I think it’s really cool. We could learn from it.

      Liked by 1 person

  9. Trouble with todays fixed pixel screens is that you can easily double the scaling such as X2 scale or 200% scale. But fractional scale means breaking up a pixel which you cannot do. We would be better off to match up a screen pixel density with a typical 200% scale to make it usable. Then use a resolution that does not work at 100% or 200% scale. Windows scaling with fractional scaling is better than Linux in my experience, but still, you deal with issues using fractional scaling.

    Like

Leave a comment