08 Aug 2026

feedPlanet KDE | English

Week 9 & 10: Speed Ramp Implementation, MR Opened

This is a weekly update from my Google Summer of Code 2026 project with KDE, improving effect widgets in Kdenlive, a free and open source video editor. Combining two weeks here since the last post covered a lot of ground already.

From research to implementation

Following up from the last post, moved from investigating Speed Ramp to actually building it. The plan confirmed with Jean-Baptiste: reuse Kdenlive's existing keyframe type system rather than free bezier handles, and use KeyframeCurveEditor's per-pixel MLT sampling pattern as the reference for drawing the curve inside RemapView.

Implementation

Four commits, each built clean before the next:

Type

Type selector showing Linear

Type

Type selector showing Cubic In

Keyframe types follow their keyframes through drags, clip resizes, and deletion, and are captured in undo/redo alongside keyframe positions.

The curated list, and why

The full MLT keyframe type list also includes Bounce, Elastic, Exponential, and Circular, all of which overshoot outside the 0..1 range. On a time map, an overshoot means source time briefly runs backward, so the clip plays in reverse for a few frames at the keyframe boundary. That could be a real effect some people want, or a confusing artifact for everyone else. Left it out of the curated list for now and flagged it as an open question in the MR rather than deciding alone.

Manually verified

MR opened

Opened MR !928, referencing #2188 and #1454. Pipeline is running. No unit tests added this round since RemapView holds state directly in the widget, not reachable from the existing test harness without splitting the storage out first, noted this directly in the MR rather than skipping silently.

What's next

Waiting on Jean-Baptiste's review, specifically his call on the curated type list question.

08 Aug 2026 12:57am GMT

This Week in Plasma: UI Improvements Galore

Welcome to a new issue of This Week in Plasma!

This week we merged a number of features and UI changes that focus on user-friendliness - in addition to a nice crop of bug-fixes and performance improvements:

Notable new features

Plasma 6.8

If you try to print using a printer that's unavailable, Plasma now helpfully notifies you of this instead of just doing nothing. (Mike Noe, KDE Bugzilla #362143)

Notification about the printer that just received a print job being unavailable

Notable UI improvements

Plasma 6.8

Task Manager thumbnails now feature nicer padding around the labels near the top. (Michal Malinowski, plasma-desktop MR #3916)

Task Manager tooltip with better padding around the text

When creating a new user account, the restrictions around which characters are allowed for the username of the new account are now clearly indicated via warning messages if you try to use invalid ones. (Mradul Pal, KDE Bugzilla #521545)

Warning about character restrictions when typing the new user’s username

Kup 0.11.0

Kup now offers an improved set of default exclusions, with a simplified way of toggling them on or off. This should result in much less data being backed up that doesn't actually need to be backed up - like cache files, state files, Btrfs snapshots, and more. (Bharadwaj Raju, kup MR #52)

User-friendly list of comprehensibly-phrased exclusions for Kup-based backups
This settings page is still a bit old and crusty. A visual refresh is also planned, JFYI!

Notable bug fixes

Plasma 6.6.7

If the xdg-desktop-portal-kde process crashes while it's being used to allow an app to control the pointer and keyboard, control now instantly returns to you rather than getting stuck until the system is restarted. (Marcus Renheim, KDE Bugzilla #523515)

Using a panel's "Floating Applets" feature no longer breaks the ability to drag files onto Task Manager representations of grouped tasks. (Antonio Rojas, KDE Bugzilla #510643)

The Task Manager widget no longer lays out items incorrectly when you rearrange them while the widget is using right-to-left mode. (Christoph Wolk, KDE Bugzilla #504898)

The "Identify Displays" feature no longer shows weird hexadecimal numbers in the labels for some screens. (David Wild and Marco Martin, KDE Bugzilla #523181 and kwin MR #9655)

Plasma 6.7.4

Fixed a UI glitch in the Disk Quota widget. (Nicolas Fella, KDE Bugzilla #523618)

Plasma 6.7.5

Syncing your settings to Plasma Login Manager now includes the ~/.config/plasma-localerc file, which makes the login screen respect your preferred language and time settings. (Nate Graham, KDE Bugzilla #516964)

Fixed or implemented support for the "highlight changed settings" feature for multiple System Settings pages. (Tobias Ozór, kwin MR #9675, KDE Bugzilla #521974, powerdevil MR #660, KDE Bugzilla #521978, and KDE Bugzilla #469914)

System Settings' Spell Checking page no longer erroneously prompts you to save unsaved changes when you navigate away from it without having made any changes. (Antti Savolainen, KDE Bugzilla #521712)

The "OS Version" sensor in System Monitor widgets now works more reliably to handle KDE Linux and other non-traditional operating systems. (David Redondo, KDE Bugzilla #523727)

Plasma 6.8

Fixed a bug in Plasma's built-in remote desktop server that could present certain clients with a black screen instead of the expected content. (Shouvik Kar, krdp MR #222)

Switching between virtual desktops no longer makes the Window List Widget show the wrong window. (Marco Martin, KDE Bugzilla #523409)

The Applet::Index() property in Plasma scripting now actually returns the correct index. (Marco Martin, KDE Bugzilla #523675)

Notable in performance & technical

Plasma 6.8

Plasma's built-in remote desktop server now exhibits less latency and better performance when using less-than-ideal network connections. (Shouvik Kar, krdp MR #190)

Plasma now loads the clipboard pop-up on demand rather than at launch, which saves some memory. (Nicolas Fella, plasma-workspace MR #6899)

How you can help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!

Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE - you are not a number or a cog in a machine! You don't have to be a programmer, either; many other opportunities exist.

You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.

To get a new Plasma feature or a bug fix mentioned here

Push a commit to the relevant merge request on invent.kde.org.

08 Aug 2026 12:00am GMT

07 Aug 2026

feedPlanet KDE | English

KDE Goals - Last Call For Submissions

Last Call

Last chance to submit your KDE Goals proposal

The call for submissions for the next KDE Goals cycle closes tomorrow, August 8.

As of the time of writing we've received nineteen proposals, covering a variety of topics like enterprise, gaming, personal well-being, documentation, accessibility, semantic desktops, color management, design, user experience, mobile and more.

Current proposals (by order of submission):

Join in

If any of the proposals above spark your interest, then by all means join the effort as a co-champion or contributor. And if you don't feel inspired by any, then there is still time to submit your own and champion a new KDE Goal.

Remember that you do not have to be a developer to participate. Read the selection process carefully before you send your proposal. If you have any doubts, join our Matrix room or create a topic at the KDE forum.

What's Next?

Once the submission period is over, we'll move into the refinement phase, where champions and the community work together to polish their proposals and finalize them so they're elligible for voting.

Timeline:

07 Aug 2026 1:17pm GMT

Web Review, Week 2026-32

Alright, this will be the last review of the Summer. I'll take a break until September as I really need to unplug for a bit. The next edition will be at the end of the first week of September. See you then!

But first… let's go for my web review for the week 2026-32.


Kill the Cookie Banner!

Tags: tech, gdpr, web, europe, law

This campaign is definitely worth a try. Hammering people with cookie banners exhibiting dark patterns isn't exactly a good way to seek people consent.

https://killthecookiebanner.eu/


Stop Sending Me Your Errors

Tags: tech, email

Yes please! The amount of email system which get it wrong nowaday is really kind of sad.

https://kramkow.ski/article/2026/08/05/stop_sending_me_your_errors.html


Offensive Internet Posture

Tags: tech, internet, security, self-hosting

Indeed, so many things to do to deter bottom feeders. Lots of good funny ideas in there.

https://bruceediger.com/posts/offensive-machine/


Atom is better than RSS, in ways that matter

Tags: tech, atom, rss, blog

Indeed Atom is a better standard than RSS for feeds.

https://chrismorgan.info/atom%3Erss


The DISTINCT in your COUNT

Tags: tech, databases, postgresql, performance, optimisation

Careful how you use DISTINCT or ORDER BY on very large tables. You might want to reevaluate (after checking if there's a problem of course).

https://boringsql.com/posts/distinct-in-your-count/


C++26: #embed

Tags: tech, c++

Another nice addition to the standard for dealing with embedded assets.

https://www.sandordargo.com/blog/2026/08/05/cpp26-embed


Crubit: C++/Rust Bidirectional Interop Tool

Tags: tech, c++, rust, interoperability, bindings

Interesting tool. Maybe more chances for C++ and Rust hybrids?

https://crubit.rs/


rust-lang/rust is adopting an LLM policy

Tags: tech, ai, machine-learning, copilot, foss, codereview, rust

Interesting policy. I think it strikes a good balance.

https://blog.rust-lang.org/inside-rust/2026/08/05/rust-langrust-is-adopting-an-llm-policy/


A Guide to Watchdog Timers for Embedded Systems

Tags: tech, embedded, reliability

Long and nice guide about watchdogs in an embedded context.

https://interrupt.memfault.com/blog/firmware-watchdog-best-practices


Elevators

Tags: tech, algorithm, simulation, complexity

Nice little post with simulations about the algorithms behind elevators. It's quickly more complex than it sounds.

https://john.fun/elevators


The Wheels We Keep Reinventing

Tags: tech, architecture, complexity, supply-chain, vendor-lockin

There is truth here that our profession reinvents the wheel way to often. Some problem are solved, they don't need reinventing. Be careful on your dependencies though, this is where lies the tradeoff.

https://blainsmith.com/articles/reinventing-the-wheel/


The development pipeline is a production system

Tags: tech, developer-experience, production

And indeed that makes it as important as the final product.

https://sundry.jerryorr.com/2026/07/31/development-pipeline-is-a-production-system


Committing to creativity

Tags: creativity, motivation

Interesting take. It's indeed mostly about committing to something on the long term and doing the grunt work which begets creativity. It's not just motivation between grit teeth or waiting to be blessed by a muse. Those won't get you as far in your craft.

https://herman.bearblog.dev/creativity/



Bye for now!

07 Aug 2026 12:22pm GMT

What's new with SAML support in Nextcloud

Several months ago, as part of my internal move to the "IdP" team at Nextcloud, I started to co-maintain the user_saml application. This application allows Nextcloud users to implement single sign on with the SAML and Kerberos protocol. This protocol is based on XML and is mostly used in combination with Active Directory Federation Services (AD FS), Microsoft Entra ID, Authentik, Okta, Google Workspace and more.

New Admin Settings

The most visible change for administrators is the new admin interface to configure SAML. I completely rewrote it from a mix of PHP templates and jQuery to Vue3. This allows the interface to make use of all the @nextcloud/vue UI components and improve the user experience for admins who want to set up SAML on their instance. The user interface is now also more similar to the OIDC integration.

 
 

Nextcloud Login Form

The SAML app provides its own login page and previously didn't integrate at all with the default one from Nextcloud. We had an interface IAlternativeLogin to expose one alternative login provider but it had to be static, this allowed, for example, the registration application to expose one Registration button, but wasn't enough for applications exposing a variable number of login providers like the user_saml and user_oidc do.

Since Nextcloud 34, I added a new interface IAlternativeLoginProvider which applications can implement to expose zero or more IAlternativeLogin objects. The SAML and OIDC applications were both ported to use this interface.

For the SAML application, switching to the default login form is still behind a config flag which can be turned on in the admin settings, but this might change in the future.

Login form with ‘Authentik’ button
Login form with 'Authentik' button

Flexible User Matching between LDAP and SAML

SAML is often used in combination with LDAP. This is because SAML is a pure authentication protocol, whose main feature is to log a user in, but it doesn't provide something very essential: user provisioning. This is where LDAP takes over and from the LDAP server we are able to get a list of users with their attributes as well as their group membership.

The only requirement is that the unique identifier used by the LDAP backend and the SAML backend are the same. This can be a UUID, a username, an email address, or any other field that the admin configured, but we recommend it to be the UUID as this value doesn't change over time. With this identifier, Nextcloud is then able to identify that a specific user from LDAP is the same as one from SAML.

With Nextcloud 34, we now have a flexible user matching, meaning the SAML backend is able to try to query another field from the LDAP backend when matching the SAML user with an LDAP user (for example an old email address) making migration easier.

PHP Code Modernization and Cleanup

Since SAML is a security critical application, we have to ensure the code quality of it stays high. For this we use various tools.

Finally, annotations in phpdoc comments were converted to proper PHP attributes and most deprecated usages of the Nextcloud internals were replaced with modern alternatives.

Integration Testing

Integration tests are an important part of making sure that the application works correctly. Previously, we only tested the usage of this application with the SAML protocol, and after ending up with a regression with the usage of the Kerberos protocol, I added tests to also check the combination of Kerberos authentication with an SMB/Samba.

Performance Improvements

Aside from cleanups, the user backend and group backend now implement several optional interfaces that allow Nextcloud to query the user and group data more efficiently by using batch processing of users or limiting the size of the SQL queries.

The new interfaces we implement are IBatchMethodsBackend, ILimitAwareCountUsersBackend and ISearchableGroupBackend.

Additionally, display names of groups are cached when querying groups (which avoids doing n+1 queries in many places).

In total and with some other changes in the Team folder (groupfolders) app to make use of these new APIs, this managed to reduce the amount of queries done by 70% for some API requests.

Developer Experience Improvements

And finally to make it more convenient to work on this app, Maxence and I worked on improving the Nextcloud developer docker setup, to automatically configure a SAML provider and Nextcloud by only typing one command:

docker compose up nextcloud authentik

This saves a lot of time as I use a lot of ephemeral instances of Nextcloud and tear them down when switching between stable versions.

And this also works with a Global Scale Setup:

docker compose up portal proxy lookup authentik gs1 gs2 gs3 database-mysql

07 Aug 2026 12:00am GMT

06 Aug 2026

feedPlanet KDE | English

This Quarter in KDE Digital Sovereignty: Q2 2026

Welcome to the inaugural edition of This Quarter in KDE Digital Sovereignty!

This blog series will cover the work done throughout KDE's software stack that's funded by the investment KDE received earlier this year from Germany's Sovereign Tech Agency.

Commissioned work on a variety of projects has been done by KDE contributors working for KDE e.V. itself, as well as the Techpaladin Software and enioka Haute Couture companies.

This post will cover the work done in the second quarter of 2026. Let's get into it!

Quality assurance and testing

The bulk of the work consisted of getting KDE's house in order when it comes to automated testing - ensuring things that are working stay working, and providing early warnings about incompatibilities from updated dependencies.

The Sovereign Tech Agency's investment in KDE included substantial funding for this work across KDE Plasma, KDE Linux, and KDE PIM, providing a strong technical foundation for all of the future funded work.

On the PIM side, we set up a dedicated test suite and an extensive set of newly-created tests for both IMAP and CalDAV/CardDAV resources. You can read more about it on Kevin Ottens' blog. In any case, it helped uncover some issues which were promptly fixed (most notably recurrence exceptions are properly handled now), and identify dead code which has been cleaned up.

A similar process unfolded on the KDE Linux side, with a dedicated testing server managing a new openQA-based system that runs integration tests for many high-level cases relevant to Plasma in general and KDE Linux specifically. You can read more about it in this blog post by Thomas Duckworth. And it has also already borne fruit, including detecting an accidental regression in KWallet and protecting users from a KWin crash caused by a brief regression in Arch Linux's gcc tooling.

IMAP4 revision 2

Beyond the QA, work also proceeded on the PIM side for the topic of improving support through the KDE PIM suite for IMAP4 revision 2. This led us to add support for more IMAP4 extensions in our stack like BINARY, LIST-EXTENDED, or LIST-STATUS. We also completed support for CONDSTORE and QRESYNC. Altogether, it allowed us to speed up IMAP resource syncing while using less network bandwidth - sometimes in a fairly drastic way, lowering the sync of a given mailbox to a single server round trip in the best cases!

We had more good news on this front too. It turned out to be less work than expected, as our IMAP implementation is in a fairly good shape! It will free some time to go further on the QA and testing side.

Automatic account configuration

Additional PIM topics included initial work to build a system for automatically discovering and setting up resources based on nothing more than an email address and password. We already have partial support for this kind of magic in KMail, but it doesn't go beyond configuring email; that will change soon!

For this work, we're preparing a new library which will implement the relevant draft RFC. The API is mostly in place, although we keep improving it. We're now at the stage where we can plug this new implementation into KMail, and later on integrate the whole feature set via System Settings' Online Accounts page. It will be nice when you just give an email and password there, to automatically see all your PIM apps automatically configured: mail, calendar, and identity.

WebDAV push notifications

The latest work started on the PIM side is about supporting push notifications for DAV calendars. This is based on a draft specification proposed by the DAVx⁵ folks. We're currently mostly in the design phase, even though some adjustments to KDAV are already being made.

Ultimately this should lead to more targeted syncing when something changes on the server, reducing the network bandwidth requirements. It will also make your calendars sync with the server almost immediately instead of waiting for the next poll interval.

Network share handling

On the Plasma side, work also began to overhaul the way network shares are handled throughout KDE. So far the work has concentrated on beefing up KDE's FUSE-based network share mounting in a variety of ways.

Perhaps the most notable way being explored is to create the FUSE mount in response to a request to access a file on a network location even if the user has not already accessed it from Dolphin. This work is in progress.

Work is also in progress to mount these FUSE mounts at a standardized and predictable path, and to surface them in the standard Places panel for ease of access.

Data integrity

To improve data integrity throughout KDE, we created a new service for interfacing with Btrfs snapshots. This will form the backbone of various user interfaces integrated throughout KDE software (starting with Dolphin) to offer users the possibility to restore earlier versions of their files from snapshots, and use those snapshots for traditional backup systems.

In addition, we put some work into improving KDE's Kup backup system, in the form of UI improvements for determining what gets included in backups, and modernizing the user interface of its Plasma widget.

Configuration management

Work began on an overhaul of KDE's configuration management infrastructure in the form of porting software to use the more modern KConfigXT system. This system uses a declarative syntax with defined schemas, allowing KDE software's available configuration options and default settings to be knowable without having to read the source code.

This effort will eventually open up the possibility of writing a management app similar to GNOME's DConf Editor tool that can offer administrators the ability to graphically visualize and change configuration options.


Looking forward

So it was a busy quarter of shoring up some of the foundations in KDE to lay the groundwork for future efforts. We're very grateful for the Sovereign Tech Agency's investment in KDE that made this possible! Once the QA efforts wind down, we'll be in a great position to start working on the more user-facing elements of the investment.

06 Aug 2026 4:00pm GMT

Week 8 + Week 9: Reviews and subsetting form fields

Hi!

Past 2 weeks of my GSoC work about font subsetting in Poppler involved a lot of:

I also made the discovery that I need to also do the following (maybe in the GSoC period or maybe outside):

Deciding to keep the blog short this time :)

Thanks, Bye!

06 Aug 2026 11:51am GMT

05 Aug 2026

feedPlanet KDE | English

Union: Summer 2026 Update

Union: Summer 2026 Update

A lot has been happening with Union recently, so it is time for another update. As a reminder, Union is a project to build a new style engine for applications that tries to unify all the different ways Qt and KDE applications can be styled.

Union in Plasma 6.7

Image
A screenshot of Plasma System Settings' Application Style page showing the Union application style selected.
Union in System Settings

As mentioned in the [spring update], Union had its first release as part of the Plasma 6.7 release. Before release we had some back and forth as the intent was to use it as default for QtQuick applications, but that turned out to not be feasible. Instead, we came up with a solution where we use a proxy style as the widget style, which allows Union to be selected from System Settings. For widgets, we forward the styling to the Breeze style still, but when you select the Union style, QtQuick applications will (after restarting the application) use Union for their styling.1

This allows anyone with Plasma 6.7 to opt-in and test how well Union works with their favorite applications, with an easy way to go back should things not work correctly. We already received several bug reports of things not working quite correctly, most of which have been resolved. If you have not yet checked how well Union works for you, give it a try!

Styles and Style Selection

The above solution for selecting Union is mostly intended as an easy way to test Union with Plasma 6.7. It is not meant to be a long-term solution. Instead, we want applications to use Union by default, with a page in System Settings that allows selecting which Union style to use. Initially, that page and the current Application Style will live side-by-side in some form. Once there are a lot more Union styles, we can look at dropping the current Application Style page or moving it somewhere less prominent.

Creating a style selection page required some extra work to make sure that we are able to correctly identify styles and associate metadata with those styles. This work has recently completed, resulting in a fairly big overhaul of the core style loading of Union. Unfortunately, this does mean any styles that have been created so far will need conversion to the new format. The advantage is that now the style determines what input format is needed for the style, which leads to reduced code, increased robustness and easier backward compatibility in the future.

Image
A screenshot of Plasma System Settings showing the in-development Union style selection page.
A screenshot of the in-development style selection page for Union.

With Union now having a proper definition of what constitutes a "style", it became fairly straightforward to build a System Settings page to allow selecting the active style. The first version is mostly a copy of the current "Application Style" page, but this will evolve over time as that design is not ideal for what Union is capable of. In addition to the System Settings page, there is also a command-line tool to make it easier to work with Union's styles.

Widgets

Image
A screenshot of the Oxygen Demo application showcasing progress on the Qt Widgets style.
The Oxygen Demo application running using the in-progress Qt Widgets support of Union.

Over in Qt Widgets land, Akseli Lahtinen has been chipping away at building a proper Qt Widgets style for Union. This is slow going, as there is little documentation on how to actually work with the QStyle API and it is also showing its age.

Still, progress is being made. At this point, the Union widgets style is no longer a proxy style, with everything being rendered by Union itself. Things are starting to look similar to both the Qt Quick side and to the Breeze QStyle. We are unsure if the work will be finished by the time Plasma 6.8 is released, but we are certainly trying to get it there.

Image
A screenshot of Dolphin runnin with the in-development Union widgets style.
A very much work in progress screenshot of Dolphin running with the Union Qt Widgets style.

Other

There have been several discussions with regards to what capabilities Union needs to have to make it possible to support other styles. This includes discussions around porting Oxygen over to Union to increase the compatibility of Oxygen with Qt Quick applications. There is also ongoing work to build the new Ocean style using Union.

Hopefully with Plasma 6.8 we can move things from being in a tech preview state to become a core part of KDE's experience. But there is still a lot of work ahead of us. If you would like to help get things done, take a look at the Union repository or come talk to us over on Matrix.

Discuss this post at KDE Discuss.


  1. Assuming the application does not hardcode the style to use as several KDE applications did.

ahiemstra

05 Aug 2026 10:22am GMT

Akademy 2027 Call for Hosts

Want to make a meaningful contribution to KDE beyond coding? Help us organise Akademy 2027!

Every year, Akademy brings together KDE contributors, users, partners, and the wider Free Software community to collaborate, learn, and innovate. Now it's your chance to help shape the next Akademy by hosting it in your city.

We are looking for proposals to host Akademy 2027 during June, July, August, September, or October. Download the Call for Hosts guide and submit a proposal to host Akademy in your city to akademy-proposals@kde.org by October 1, 2026.

Have questions? We'd love to help! Whether you need advice, guidance, or support while preparing your proposal or organising the event, the Akademy team is here for you every step of the way.

Let's work together to make Akademy 2027 an unforgettable event!

05 Aug 2026 7:00am GMT

04 Aug 2026

feedPlanet KDE | English

KDE Plasma 6.7.4, Bugfix Release for August

Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.7.4.

Plasma 6.7 was released in June 2026 with many feature refinements and new modules to complete the desktop experience.

This release adds three weeks' worth of new translations and fixes from KDE's contributors. The bugfixes are typically small but important and include:

View full changelog

04 Aug 2026 12:00am GMT

03 Aug 2026

feedPlanet KDE | English

Wayland pain points – kgamma

In the feedback about dropping X11 support, one very surprisingly common comment is from users saying they "need" kgamma, a simple tool that allows the user to adjust the gamma, red, blue and green that gets drawn to the screen operating directly on the X server.

On our Wayland session we have colour management that blows simple gamma adjustment out of the water, so on the face of it it seems weird that this would come up. However at the same time, I get it. ICC profiles are very confusing and it's not the same as a few basic sliders that anyone can understand.

We want people to have the best transition to Wayland we can offer and this is a relatively easy fix.

The new tool

I have made a simple tool that edits the relevant part of an ICC profile - VCGTs.

"VCGT (Video Card Gamma Table): An optional, private tag inside an ICC file that stores 1D grayscale/gamma curves loaded directly into your graphics card's hardware Look-Up Table (LUT)."

That's a lot of fancy terms, but the key point is it's a tiny subset of the thing Kwin already supports. We can add a UI around those few values and not need to add a second code path in kwin or kscreen.

The UX is deliberately similar to the old UI.
Obviously it needs a round of polish (volunteers welcome!), but it's functional.

Why this is even better than on X11

Unlike KGamma on X11, this new tool:

What next

Whilst changing your red/green settings wtih sliders might be something a few users do, and we got a few comments it remains a niche case.
My intention is to post it as a standalone application on Flathub and not as part of Plasma. I think that strikes the right balance of providing support without holding ourselves back longterm.

Getting it

The new tool is available at:

https://invent.kde.org/davidedmundson/kgamma2

Usual CMake + build instructions apply.

Feel free to make pull requests and let me know if it helps solve your issue!

03 Aug 2026 9:00am GMT

This month in KDE Linux

… is now hosted on KDE infrastructure, instead of this blog! Check out the July 2026 post, or the entire series here.

03 Aug 2026 4:21am GMT

This Month in KDE Linux: July 2026

Welcome to the inaugural edition of This Month in KDE Linux hosted on blogs.kde.org!

Previously, these posts lived on Nate Graham's personal blog. But KDE Linux is growing up and becoming a more important part of KDE, larger than its individual contributors! So it's time to move the public communication to KDE infrastructure, and that's where you'll be able to read these posts going forward.

Without further ado, here's how KDE Linux evolved in July:

QA & testing

This month, Thomas Duckworth and Bhushan Shah integrated the next-gen QA system they've been building!

It's now testing tons of conditions to make sure KDE Linux continues to work as expected, and it also acts as a full-stack integration test suite. To illustrate the utility of such a thing, it's already identified and protected users from two significant issues:

  1. A login-breaking KWin crash caused by a regression in gcc from Arch Linux (already fixed).
  2. A regression in automatically unlocking your wallet at login (also already fixed).

These tricky problems could only have been caught by the kind of full-stack integration test suite that KDE Linux has now.

If you're interested in the details, Thomas Duckworth's blog post on how the system works is worth a read. Thanks very much to Thomas and Bhushan for building this lovely system!

Security

Hadi Chokr implemented some kernel-hardening tweaks we learned about from the SecureBlue project that were relevant to KDE Linux and wouldn't noticeably burden users.

Efficiency & performance

Nate Graham removed the kernel modules for various hardware watchdogs that aren't relevant for desktop use, which slightly reduces CPU usage and improves boot times.

Thomas Duckworth switched the CUPS printing system to use socket activation, which allows its services to only run when needed.

Software support package downloader + support for Java and DOS apps

Hadi Chokr implemented a major improvement to the "Package Compatibility Helper" tool that now allows it to - with the user's consent - download software from Flathub to handle files that the user tries to open, but that nothing on the system can currently open.

Hadi then made this work for Java apps; the first time you try to launch one, the tool will ask you if you want to download a Java Runtime Environment (JRE). If you approve, it will do so and then launch the app using the JRE:

After that, Hadi implemented support for DOS apps; trying to launch one will offer up DOSBox. Now you can have that authentic 1993 Doom experience:

This system can be extended to support even more things in the future! And it's been written in a generic enough way that it would be useful for any other image-based OS using Flatpak, as well.

Bugs fixed

Philip Grant fixed the mechanism that ensures that existing KDE Linux systems have the same Flatpaks installed as are pre-loaded on new systems, as it had various bugs that prevented it from working properly.

David Fundament fixed the script that disables USB auto-suspend for input devices so that it works with devices lacking a product name.

WenChao Zhang restored the esp4 and esp6 kernel modules that had been removed to mitigate the "DirtyFrag" vulnerability. The vulnerability has been fixed now, and missing those modules had broken IPsec VPNs, so they're back now.

Hadi Chokr made WWAN modems work out of the box.

Documentation

Thomas Duckworth documented how to use and extend the new QA system.

Nate Graham documented how to make the Fcitx 5 input method (for CJKV input) work with apps still using the XWayland compatibility layer.

Hadi Chokr documented how to set up bootloader menus so you can choose between booting KDE Linux or another OS on the same computer. However, setting up such a system is left as a manual exercise for the reader, as currently the KDE Linux installer does not yet formally support complex disk setups. This will come later.

Grab bag

Prajna Sariputra pre-installed vulkan-virtio, improving performance in VMs whose graphics drivers support Vulkan.

Thomas Duckworth made the set-up-systemd-extension and toggle-developer-mode tools only prompt for authentication once.

Nate Graham removed the "Push Services" library and System Settings page, because it's not mature enough for shipping yet.


How you can help

KDE Linux is making steady progress towards its Beta milestone, and is now 83% of the way there.

There's lots to do! If you're a fan of the project, please help out; there are many ways:

03 Aug 2026 12:00am GMT

02 Aug 2026

feedPlanet KDE | English

Implementing Rich Text in Drawy

for the past few months i have been working on implementing rich text in drawy as part of google summer of code 2026.

Overview on the old implementation:

The old text logic depended on a manual implementation, almost everything was built from scratch using a string. Placing the cursor, caret movement, selection operations, line and word boundary detection, editing operations were all implemented from scratch.

I found implementing all of this impressive, but while it worked for plain text editing, this code was hard to maintain / extend, and it would have been nearly impossible to add the features that were added.

Phase 1: Refactoring
Goal: Rewrite without breaking anything

I replaced the string with QTextDocument , all the things that were written manually before was gone and now editing operations are handled by QTextCursor.

Operation How it was done How it is done now
Placing cursor Binary search over the line, measuring substring widths with QFontMetrics to find which character the click landed on. documentLayout()->hitTest()
Caret movement Manual index calculation increment/decrement; up/down walked to the previous/next \n cursor.movePosition(Left/Right/Up/Down/WordLeft/WordRight)
Selection Two indices, with selection rectangles rebuilt line-by-line using QFontMetrics QTextCursor anchor/position, drawn via QAbstractTextDocumentLayout::Selection
Word/line boundary detection Manual scan for separator characters or \n cursor.select(WordUnderCursor / LineUnderCursor)

Phase 2: Rich Text

1. adding IME support
An Input Method Editor (IME) is how the OS handles input for languages that can't be typed with a single key press per character without it user can't type with Arabic, Japanese, Chinese, dead keys, etc The OS sends this as a QInputMethodEvent, which Drawy previously didn't handle. IME now works correctly here is demonstration of how it works with CJK input:

https://youtu.be/2W2R9udyKKU?si=BLwUmLpcg_E9XE9T

2. Properties:
user now have much more control over properties i added support for choosing font family, font style, text alignment, list format.

per range formatting is also now implemented meaning user can set different colors, size, font, style to different parts of the text.

3. Word Wrapping:

When the text box is resized, text now wraps to fit within its bounds.

https://www.youtube.com/watch?v=AqGJd5Bf6sw

4. undo / redo:

text history is managed by two stacks: drawy global stack, and QTextDocument's internal one. Only one is active at a time. While the user is editing text, the global stack is disabled and QTextDocument's internal stack takes over, handling text edits and property changes, etc. Once the user exits edit mode, the internal stack is disabled again, any changes go through Drawy's global stack instead, stored as HTML.

5. Spell checking

In my proposal, I didn't plan much time for spell checking, I thought that I'd just wire Sonnet in and be done with it. I later found out that Sonnet's ready-made integrations are built for QTextEdit and QML, so I had to write my own spell-checking pipeline instead.

  1. Each block (paragraph) is passed to Sonnet::gusser to guess its language and determine which dictionary to use.

  2. Text is split into words using QTextBoundaryFinder.

  3. Sonnet::Speller checks whether each word is misspelled.

  4. Misspelled words are highlighted using QSyntaxHighlighter.

added new menu to settings using Sonnet::ConfigWidget to allow customizing spell checking:

Note: Everything mentioned in this blog is on the gsoc2026 branch currently and will be merged once GSoC is completed.

Gratitude:
I am very grateful to my mentor Laurent Montel for his time and effort guiding me throughout this project.

02 Aug 2026 1:56pm GMT

01 Aug 2026

feedPlanet KDE | English

June/July in KDE Itinerary

Time for another bi-monthly update on what happened around Itinerary! Since the previous report there's a new combined journey view, support for ride sharing services and new Apple Wallet pass formats, among many other things.

New Features

New combined journey view

With more and more journeys being backed by online realtime and schedule data, access to the journey details (intermediate stops, journey map view, etc) via nested actions has become increasingly cumbersome. Therefore Jonah redesigned the details pages for all transport entries (trains, buses, ferries, flights) to have a new bottom toolbar to easily access that information.

Screenshot of Itinerary showing intermediate stops of a train trip.
New tabbed journey details view.

The journey details view now also allows to query public transport departures at any intermediate stop, which is useful e.g. when doing manual rerouting in case of more complex disruptions.

Ride sharing

After Transitous got support for ride sharing earlier this year, this has now also reached out client applications. Both Itinerary and KTrip have a mode filter for this now, and Itinerary can add ride sharing trips to the timeline.

Screenshot of Itinerary's mode of transport filter options for journey searches, with the newly added option for ride sharing services.
Mode of transportation filter options.

New Apple Wallet pass formats

Itinerary can now display a new variant of the Apple Wallet pass format, so-called "poster event tickets". Conceptually those are similar to the existing event tickets but have very different layout and content, which wouldn't render at all so far.

Screenshot of Itinerary rendering an Apple Wallet poster event ticket test pass.
Test pass with the so-called poster event ticket layout.

The background blur effect and some of the font sizes are still off, but at least the relevant content is now displayed correctly.

There's also a few format additions affecting all pass types that are now supported:

A few gaps in the existing format support were also fixed while at it:

Besides the visual representation Apple Wallet passes can in newer versions also contain machine-readable semantic information about their content, something that is now used in the travel document extractor as well.

Infrastructure Work

Booking links in Transitous

Thanks to Jonah's work, MOTIS, the routing engine behind Transitous got support for the GTFS Transit Ticketing Extension. This makes booking links available for more operators, which are then shown by Itinerary or KTrip.

Android and Linux platform integration

There has been generic work on platform integration for all of KDE's (mobile) apps, which of course also benefits Itinerary.

For Android there's a dedicated blog post. Since then locale-aware comparisons have been fixed in Qt (for 6.13), and Itinerary got built-in crash reporting that is already helping during development. Some necessary changes to finally fix not being able to open files from cloud shares is still stuck in review though.

For Linux the focus has been on permission checks and GPS access in a Flatpak sandbox (blog post). The foundation for the Qt permission API to support the Flatpak persmission system has been integrated meanwhile, for Qt 6.13.

Indoor OSM standardization

There also have been efforts on evolving and standardizing modelling and mapping of indoor spaces in OpenStreetMap. While that is of course done with the entire OSM ecosystem in mind, it also benefits Itinerary, Transitous and Kongress. There it helps with improving routing through buildings and with visualizing building interiors.

GBFS v3 support continued

The previous report had mentioned work on improving the support for GBFS v3 sharing vehicle data. This continued and now also has some more visibile results:

Screenshot of Itinerary's station map showing the opening hours of a bike rental station.
Opening hours of a rental service.

Events

A few members of the Transitous community will be at State of the Map 2026 in Paris end of August, and I'll be speaking about Transitous there.

State of the Map 2026 logo

In September there's KDE Akademy 2026 in Graz, which is probably one of the largest gatherings of the Itinerary community. I'll be presenting how continuous delivery helps Itinerary with QA.

I'm going to KDE Akademy 2026 banner

Beginning of October we have the second Open Transport Community Conference in Bern, both the Transitous and the Itinerary community will be present there. A few tickets are still available.

Fixes & Improvements

Travel document extractor

This has been made possible thanks to your travel document donations!

Public transport data

All of this also directly benefits KTrip.

Itinerary app

How you can help

Feedback and travel document samples are very much welcome, as are all other forms of contributions. Feel free to join us in the KDE Itinerary Matrix channel.

01 Aug 2026 6:15am GMT

This Week in Plasma: Emoji Resizing

Welcome to a new issue of This Week in Plasma!

…but before we start, here's a quick reminder that we've entered the last week to submit your proposal for the next KDE Goals cycle! If you're not ready to champion a goal, you can still get involved by joining one of the existing proposals as a contributor or supporter.

And now, without further ado…

In addition to the headliner feature and expected UI improvements and bug fixes, this week features some promising technical and performance improvements. Have a look:

Notable new features

Plasma 6.8

You can now make the emojis in the Emoji Selector window bigger or smaller. (Jason Uithol, plasma-desktop MR #3878)

On System Settings' Display Configuration page, you can now move screens pixel-by-pixel using the arrow keys while in layout editing mode. (Antti Savolainen, kscreen MR #476)

Notable UI improvements

Plasma 6.7.4

The Emoji Selector window is now always tall enough to accommodate its sidebar without scrolling. (Christoph Wolk, KDE Bugzilla #523090)

Spectacle now detects QR codes in screenshots that you take in such a manner that the main UI is never shown; if you click "Annotate" from the notification about it, the QR code will be detected there. (Kai Uwe Broulik, KDE Bugzilla #521097)

Plasma 6.8

In Spectacle's settings window, image quality controls are now only available for image types whose quality level is adjustable. (Zhora Zmeykin, spectacle MR #568)

Clarified the instructions on System Settings's Remote Desktop page a little bit. (Nate Graham, krdp MR #224 and krdp MR #225)

Kup 0.11.0

Modernized the UI for the Kup backup system's System Tray widget, so now it matches other Plasma widgets that can similarly show multiple items, each with their own actions. (Bharadwaj Raju and Tomáš Hnyk, kup MR #53 and kup MR #54)

New New
Old Old

Notable bug fixes

Plasma 6.6.7

Fixed a case where the ksystemstats background service could crash seemingly randomly. (Méven Car, KDE Bugzilla #523562)

Fixed a recent regression that made blank document icons appear in the notification history view. (Kai Uwe Broulik, KDE Bugzilla #522846)

Fixed a bug that could make extremely long words in Plasma tooltips overflow rather than wrapping. (Nate Graham, KDE Bugzilla #523614)

Fixed a bug that made third-party widgets fail to inhibit power management more than once. (Vincent de Robert, KDE Bugzilla #523605)

Plasma 6.7.4

Fixed a visual glitch where the highlight area for expanded list items in various System Tray widgets would sometimes be too small to fit its contents. (Bharadwaj Raju, KDE Bugzilla #506295)

Plasma 6.8

Fixed an issue that could sometimes corrupt very large screenshots taken in Spectacle when they were pasted elsewhere. (Cezar Craciunoiu, spectacle MR #566)

Frameworks 6.29

Opening various windows and dialogs using Kirigami components no longer makes the content scroll into view for no particularly good reason. (Manuel Alcaraz Zambrano, KDE Bugzilla #515811)

ddcutil 2.2.8

Fixed multiple issues that could make the powerdevil background process freeze or crash. (Sanford Rockowitz, ddcutil issue #581 and ddcutil issue #587)

Notable in performance & technical

Plasma 6.8

Significantly improved performance with external GPUs. Read more about this on Xaver's blog! (Xaver Hugl, kwin MR #7101)

You can now change the size (and effective resolution) of virtual screens created for screencasting, rather than them being fixed to a resolution of 1920 × 1080 pixels. (David Edmundson, KDE Bugzilla #512620)

Panel floating-ness can now be changed using Plasma desktop scripting. (Ramil Nurmanov, KDE Bugzilla #521549)

KWin now recognizes the "Pick up phone" and "Hang up phone" keys on some keyboards, allowing them to be used in keyboard shortcuts to trigger actions. (Méven Car, kwin MR #7892)

Frameworks 6.29

Fixed a performance issue that could make Plasma freeze when it sent a notification with a lot of emojis in it. (Devin Lin, KDE Bugzilla #508070)

How you can help

KDE has become important in the world, and your time and contributions have helped us get there. As we grow, we need your support to keep KDE sustainable.

Would you like to help put together this weekly report? Introduce yourself in the Matrix room and join the team!

Beyond that, you can help KDE by directly getting involved in any other projects. Donating time is actually more impactful than donating money. Each contributor makes a huge difference in KDE - you are not a number or a cog in a machine! You don't have to be a programmer, either; many other opportunities exist.

You can also help out by making a donation! This helps cover operational costs, salaries, travel expenses for contributors, and in general just keeps KDE bringing Free Software to the world.

To get a new Plasma feature or a bug fix mentioned here

Push a commit to the relevant merge request on invent.kde.org.

01 Aug 2026 12:00am GMT