Skip to content

Welcome to Planet KDE

This is a feed aggregator that collects what the contributors to the KDE community are writing on their respective blogs, in different languages

Sunday, 5 April 2026

Saturday, 4 April 2026

The Kdenlive 26.04 Release Candidate is ready for testing. Many bug fixes and workflow adjustments should make your editing sessions nicer. It is also worth noting that we had quite a few new contributors helping our small team on this, so thanks to all those who helped us!

Please remember that this is an RC version, not yet final, to be used only for testing and reporting issues.

Features highlights:

  • Added animated previews for transitions
  • Added a feature to mirror the monitor to an external monitor, allowing you to see the image in the usual interface, while duplicating the output to a secondary monitor
  • Added an entry in the timeline context menu to directly import a clip to the project and add it at click position
  • Added an option to always zoom on the mouse position instead of the timeline playhead
  • Generate audio thumbnails for sequences
  • Dropping a transition to timeline will automatically adjust its duration to the above/below clips
  • Allow changing speed of multiple clips

Feedback Needed

Now is your chance to test it and let us know if you encounter any bugs or have suggestions to help us polish the final release. Share your feedback in the comments below

Available Binaries

The AppImage and Windows versions can be downloaded through the links below. Update: the MacOS binaries are now also available

Download the binaries from below and give it a spin!

Pre-release binaries can be downloaded here.

Last week I attended this year’s FOSSGIS-Konferenz in Göttingen, Germany, focusing on public transport and indoor navigation topics.

Group photo of about 1000 FOSSGIS 2026 conference attendees.
Photo by FOSSGIS e.V.

OSM indoor mapping

As it is tradition by now, Tobias and I hosted the Indoor OSM BoF.

The (translated) session notes are in the wiki. There’s some recurring themes, such as increasing the level of detail in the third dimension, as well as how to properly map inclined areas and two-dimensional walls. None of that has a good solution yet, so we are trying to get the right people together for a multi-day in-person workshop to finally progress those topics.

I’m also increasingly wondering whether we need to replace the term “indoor” in this context, as that means different things to different people:

  • Mapping physically within a building. That separation is all but clear-cut though, in particular in and around train stations.
  • Mapping using areas rather than ways. That’s also not unique for being “indoor”.
  • Using the level tagging from SIT. While referring to “floor levels”, this is the best way we have to place features vertically, and that’s also something that isn’t limited to buildings.

Kate getting syntax highlighting for ISO 10303-21 STEP files, a file format used in building information modeling (BIM) (ie. the best possible data source for importing building geometry into OSM) is of course purely coincidental.

Indoor routing

Triggered by talks on indoor navigation in previous years which weren’t as forthcoming with actually publishing their code or papers as one might expect for a conference with “FOSS” in the name already, I presented the work we did in KDE for OSM-based indoor routing for Itinerary and Kongress.

The implementation is part of the KOSMIndoorMaps library and uses Recast Navigation under the hood. This works solely on areas, without needing an explicit routing graph. And it allows for routing to/from any arbitrary point, which is a requirement for localization/navigation use-cases. There’s drawbacks as well, directional cost on inclined ways are hard to consider with this for example.

Myself on stage presenting the OSM Indoor Routing talk.
OSM Indoor routing talk.

Richard from TU Dresden presented an alternative approach for indoor routing, semi-automatically generating routing graphs inside areas. This provides visually nicer results in narrow corridors, but becomes more challenging in open areas. By pure chance both our talks used the same building for demonstration, quite useful for discussing the strength and weaknesses of both ways.

Another topic of discussions was how to scale this up from working on a single building to something a planet-scale router such as MOTIS could integrate. Neither approach is well suited for that out of the box.

Transitous

Transitous was featured in Felix’ and Robin’s talk about new developments in MOTIS. Many of the new features presented there can already be seen in use on Transitous.

The conference provided the opportunity to talk to data providers about what we would need or would like to have for Transitous, as well as to data consumers, such as CoMaps, who are exploring integrating public transport routing.

And with several Transitous contributors around we also discussed a bunch of topics being currently looked into:

  • How to integrate the Danish Siri-over-AMQP feeds.
  • Parsing issues with the Swiss aerial lift NeTEx feed.
  • Sorting out the API key handling for the Baden-Württemberg Amarillo ride sharing feed.
  • Implementing spport for temporary POIs such as events.
  • Getting “DIID” elevator identifiers into OSM, for matching SIRI-FM realtime status feeds to OSM data for routing.
  • How to integrate empirical delay data into the MOTIS API.

KDE Itinerary

I also met a few Itinerary users and got feedback on current issues. An area that needs work is the fallback handling in the KPublicTransport library. We aren’t very good (yet) at switching to different sources when the primary one fails to deliver useful results. With the DB API becoming increasingly unreliable due to randomly blocking access (not just our apps, also affects their website), this becomes increasingly visible.

FOSSGIS e.V.

FOSSGIS e.V. is the German local chapter for OSM, and the organizer of the FOSSGIS-Konferenz. Given the significant overlap in topics (and some overlap in people) FOSSGIS e.V. has been one of the obvious organizational umbrellas for both the Open Transport Community Conference and Transitous.

This has been moving forward recently, and will solve a few practical problems:

  • Allow us to hold assets like domains independent of individual contributors, removing single points of failure.
  • Allows us to receive and spend money in a clean way.

This is rather important for the long-term sustainability of both initiatives. Being able to handle money is especially pressing for the Open Transport conference, as given the rather expensive location this year we’d like to offer some form of travel support for people who aren’t attending this as part of their job.

Dynamic traffic data

Following a joined HeiGIT/BKG talk on routing quality there were a lot of hallway discussions on dynamic traffic data, as well as a session during the unconference part, all focusing on a proper free and open solution for this.

Dynamic traffic data includes:

  • (Aggregated) realtime traffic flow data (ie. current traffic jams).
  • Raw traffic flow sensor data, ie. sensors counting vehicles or floating vehicle position/speed vector data.
  • Statistical traffic flow data (ie. high traffic expected during specific times).
  • Dynamic traffic sign data, such as adaptive speed limits.
  • Temporary closures due to construction work, accidents, etc.
  • Realtime availability data for bike or car parking spaces.

This is crucial information for road routing, traffic planning and research. However currently this data is collected and owned by a few proprietary vendors. Google is a particularly big player here, using the position data submitted by Android phones.

In order to build a free and open replacement the only chance we have is to do that jointly, between all parties with any interest in this, otherwise this wont gather the necessary critical mass. Doing this under the OSM umbrella seems to be the obvious choice, especially since this needs to be mapped on to the static OSM road network data anyway.

It would certainly be an ambitious project, but there’s a bunch of building blocks to work with already:

  • Sensor data from some public authorities, with various levels of processing applied.
  • A few cases of realtime data for dynamic traffic signs from their operators.
  • (Planned) construction site data in Datex II format by public authorities,
  • Floating vehicle information from GTFS-RT vehicle position feeds for busses (which we consume for Transitous already).
  • A community maintained road closure/construction database from SOSM.
  • Realtime parking data, partially even in standardized ParkAPI or Datex II formats.
  • Crowd sourcing in end user apps like CoMaps is likely also a viable option, similar to the work on crowd sourcing delay information for Transitous.

While this is mostly affecting roads (and thus cars and busses), construction work can also affect pedestrian and bike routing, either entirely or by changing e.g. relevant accessibility properties for wheelchair routing. There was agreement that any free and open effort should equally consider those modes of transportation.

The open source routing engines either already have support for integrating dynamic traffic data, or have adding support on their roadmap, Transitous would certainly integrate that as well. Public agencies were equally interested in open traffic data, but not all of them did show quite the same enthusiasm for also contributing to that yet.

All this gave me a slight déjà vu to the state of public transport routing prior to FOSSDEM 2024, there seems to be a critical amount of interest and willingness to join such an effort, somebody™ just needs to kick-start it.

Welcome to a new issue of This Week in Plasma!

This was a somewhat quiet week mostly full of UI and stability improvements, perhaps because many KDE contributors are gearing up for next week’s mega-sprint in Graz! For the same reason, expect next week’s post to be short or non-existent.

Notable UI improvements

Plasma 6.7

Breeze-themed menu items throughout KDE’s software ecosystem now visually change when clicked. (Akseli Lahtinen, breeze MR #605)

A variety of tooltips throughout Plasma now follow the styling of the active Plasma theme as expected. (Nicolas Fella, libplasma MR #1435)

Improved the Mouse Mark effect’s support for touchscreens: now you can draw multiple lines at a time if you have a multi-touch-capable screen. (Tin Dao, kwin MR #8951)

Synchronizing settings to the Plasma Login Manager now includes the current set of keyboard layouts. (Oliver Beard, KDE Bugzilla #516778)

Simplified the UI for the Clipboard widget’s QR code page: now the copy button is in the header, rather than all alone on its own row. (Tobias Fella, plasma-workspace MR #6451)

Removed the feature to force the Task Manager and System Tray widgets to use a large spacing and icon size while in touch/tablet mode; it just didn’t work out, and caused un-resolvable sizing bugs. (Nate Graham, KDE Bugzilla #511439)

Improved the accuracy of widget positioning on the desktop: dragging a widget somewhere it won’t fit will now show its preview rectangle in the nearest place where it will fit, which is where it will end up. (Tobias Fella, plasma-workspace MR #6452)

Discover now uses consistent terminology when it asks you to restart. (Nate Graham, KDE Bugzilla #517630)

Frameworks 6.25

Trying to paste when your clipboard is empty now fails silently rather than showing a notification about it. (Tobias Fella, kio MR #2168)

Notable bug fixes

Plasma 6.6.4

Hardened Plasma against crashing while trying to load a broken widget. (Harald Sitter, libplasma MR #1456)

Fixed a case where the KDED background daemon could die with a Wayland protocol error when changing the screen resolution. (Xaver Hugl, KDE Bugzilla #516217)

Fixed a bizarre issue that mangled certain text formatted with Markdown styling while Plasma’s on-screen keyboard was enabled but not visible. (Devin Lin, KDE Bugzilla #516511)

Fixed a case where System Settings’ Plasma Style page could crash on certain distros shipping Qt 6.11 with asserts turned on. (Ismael Asensio, plasma-workspace MR #6458)

Fixed usage graphs for certain NVIDIA GPUs being broken in the System Monitor app and widgets. (Bernhard Friedreich, libksysguard MR #465)

Popups for editing widgets while in Plasmas’s edit mode now work with a touchscreen. (Marco Martin, KDE Bugzilla #509880)

Hardened KWin against XWayland apps being sized incorrectly on systems with config files containing inappropriate scale values. (Xaver Hugl, kwin MR #9049)

Rolled out a more complete fix for context menus of System Tray icons sometimes having ugly square black corners. (Nate Graham, KDE Bugzilla #513307)

Plasma 6.7

Made two technical fixes to the process of configuring OpenConnect VPNs (Aviral Singh and Alexander Becker, KDE Bugzilla #385395 and KDE Bugzilla #518289)

Notable in performance & technical

Plasma 6.7

Implemented support for the xx-fractional-scale-v2 Wayland protocol, which improves visual fidelity by reducing gaps between adjacent items. (Vlad Zahorodnii, kwin MR #9023)

Continued with the work to add Vulkan support. (Diego Gomez, kwin MR #9027)

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.

Friday, 3 April 2026

Let’s go for my web review for the week 2026-14.


The Last Quiet Thing

Tags: tech, ux, design, business, attention-economy

A good piece, well designed too. Shows how demanding our current devices are. So much attention requested and so much complexity the user has to deal with. We clearly lost the plot as an industry.

https://www.terrygodier.com/the-last-quiet-thing


What we think is a decline in literacy is a design problem

Tags: tech, philosophy, learning, reading, design

Indeed it’s not simply books vs screens. It’s about design and how our attention gets fractured (on purpose). We need to recognise there are many ways to learn and to produce ideas, then design for it. We’d be better off as a civilisation rather than staying with the current attention economy.

https://aeon.co/essays/what-we-think-is-a-decline-in-literacy-is-a-design-problem


Here’s why I’ve installed a Dead Man’s Switch on my home server

Tags: tech, self-hosting, life, death

You’re self-hosting? Better keep in check what happens to the people who depend even indirectly on your services when you’re gone.

https://www.androidauthority.com/home-server-dead-man-switch-3648903/


LinkedIn Is Illegally Searching Your Computer

Tags: tech, linkedin, surveillance

Are we surprised? Of course depends on the browser and they’re looking mostly for extensions. Clearly they try hard to map what people use, it’s corporate espionage.

https://browsergate.eu/


DRAM pricing is killing the hobbyist SBC market

Tags: tech, embedded, memory, economics, ai, machine-learning, gpt

The price hike on RAM due to the LLM as a service bubble is really killing interesting fields. Can’t we have nice things? Will the arm race end soon?

https://www.jeffgeerling.com/blog/2026/dram-pricing-is-killing-the-hobbyist-sbc-market/


Nations priced out of Big AI are building with frugal models

Tags: tech, ai, machine-learning, gpt, research, innovation, economics

Real innovations come from constraints. The frugal AI movement is clearly where we will see interesting things emerging. Interestingly, those approaches are closer to what AI is about as a research field than the industrial complex which got unleashed with all its extractive power.

https://restofworld.org/2026/frugal-ai-big-tech/


The Comforting Lie Of SHA Pinning

Tags: tech, supply-chain, security, git

We’re not helped much by our tools here… Clearly provenance needs to be double checked.

https://www.vaines.org/posts/2026-03-24-the-comforting-lie-of-sha-pinning/


handymkv: A tool to simplify use of MakeMKV and the HandBrakeCLI tool

Tags: tech, bluray, video, codec, tools

You got bluray discs to encode for use on your NAS? This looks like a nice option.

https://github.com/dmars8047/handymkv


Running out of Disk Space in Production

Tags: tech, architecture, storage, failure

Are you sure your understand how your reverse proxy works and the impacts it can have in production?

https://alt-romes.github.io/posts/2026-04-01-running-out-of-disk-space-on-launch.html


your hex editor should color-code bytes

Tags: tech, hex, data-visualization, debugging

Interesting color coding for hex editor. It indeed brings interesting properties.

https://simonomi.dev/blog/color-code-your-bytes/


Git Bayesect

Tags: tech, git, tools, tests

Git bisect won’t help much for flaky tests… but maybe this bayesian approach can.

https://hauntsaninja.github.io/git_bayesect.html


slowql: SQL static analyzer for performance, security, compliance and cost

Tags: tech, databases, sql, tools, performance, security, ci

Looks like an interesting tool to check your SQL queries on the CI.

https://github.com/makroumi/slowql


Joins are NOT Expensive!

Tags: tech, databases, performance

Interesting article which goes deep in comparing joins vs denormalised big tables. The conclusion is in the title, bit it’s worth a read for the other insights.

https://www.database-doctor.com/posts/joins-are-not-expensive


C++26 is done!

Tags: tech, c++, standard, reflection

The new standard is upon us and it’ll be massive. It indeed looks like another C++11. If used it’ll feel like a very different language.

https://herbsutter.com/2026/03/29/c26-is-done-trip-report-march-2026-iso-c-standards-meeting-london-croydon-uk/


What happens when a destructor throws

Tags: tech, c++, exceptions

A good reminder of why destructors shouldn’t throw. It really has to be a last resort measure and only carefully considered. There’s a reason why they are nothrow by default since C++11.

https://www.sandordargo.com/blog/2026/04/01/when-a-destructor-throws


Why Don’t You Use String Views (as std::wstring_view) Instead of Passing std::wstring by const&?

Tags: tech, c++, c, memory

Indeed be careful at how you use strings when interacting with C APIs. String views are likely not what you want in that context. There is a reason why they don’t have c_str().

https://giodicanio.com/2024/05/14/why-dont-you-use-string-views-like-std-wstring_view-instead-of-passing-std-wstring-by-const-reference/


Watch out for missed warnings on vendor C++ toolchains

Tags: tech, c, c++, compiler, embedded

Vendor toolchains should see only a limited trust. Like in this case they’re often partial or old.

https://blog.poly.nomial.co.uk/2026-03-31-watch-out-for-missed-warnings-on-vendor-cpp-toolchains.html


Why Fakes Beat Mocks and Testcontainers

Tags: tech, tests, fake, failure

I vehemently agree with this piece. Fakes are unfortunately underrated. They’re the most powerful test double, I wish more projects would invest in them (can be quite an investment, which the article doesn’t quite show unfortunately).

https://pierrezemb.fr/posts/why-fakes-beat-mocks-and-testcontainers/


Working software runs locally

Tags: tech, developer-experience, tests

This is indeed very important to ensure the tooling around your project supports running the whole thing locally. Too often projects sacrifice the ability to do this, it’s clearly a hindrance to testability and a short feedback loop.

https://nickmonad.blog/2026/working-software-runs-locally/


Scaling a Monolith to 1M LOC: 113 Pragmatic Lessons from Tech Lead to CTO

Tags: tech, architecture, debugging, observability, orm, backend, frontend, organisation, leadership

Lots of good insights in here. Of course YMMV and some definitely depends on your context. That’s a lot of dimensions to keep in mind though.

https://www.semicolonandsons.com/articles/scaling-a-monolith-to-1m-loc-113-pragmatic-lessons-from-tech-lead-to-cto


Why the verb “to be” is so irregular

Tags: linguistics, history, english

Fascinating origins of “to be”. As usual to understand this kind of phenomenon, or at least start to build a theory, you have to go back quite far in history.

https://www.deadlanguagesociety.com/p/why-the-verb-to-be-is-so-irregular



Bye for now!

Wednesday, 1 April 2026

Here are the new CMake changes in Qt Creator 19:

KDE Linux logo

Welcome to the March 2026 edition of development news for KDE Linux, KDE’s up-and-coming general-purpose operating system.

I’m going to try to publish one of these posts every month, so you get this one just two weeks after the last one! Despite the abbreviated timeframe, the weeks were fairly busy in KDE Linux land.

Hardening updates against breakage

Probably the most consequential thing to happen was several users experiencing a series of bad updates that rendered the system unbootable.

Harald Sitter has root-caused everything and is working on making the issues impossible to experience in the future. But this is the reason why https://kde.org/linux recommends against deploying KDE Linux’s Alpha release on your non-technical uncle’s computer or across the accounting department at work!

“Wait, you told me this distro uses atomic updates that can’t ever make the system unbootable, you filthy liar!”

Well, it turns out that our updates weren’t as atomic as intended. 😬 You see, a system update in KDE Linux consists of multiple steps:

  1. Download an image file that contains the OS
  2. Download a “unified kernel image” (UKI) that tells the boot manager about the OS image
  3. Reboot, choosing the boot manager’s entry for the new OS image
  4. During the boot process, relevant changes from the new OS image are deployed to /etc, which is not immutable

A fairly serious bug in systemd’s newly-released version 260 made step 1 fail silently while step 2 succeeded. Thus, the boot manager would let you try to boot into a non-existent OS image, which would fail. Eek.

But no problem, right? Just roll back to the previous OS image!

Well, here’s where a bug in step 4 broke that. Our custom system for deploying changes to /etc was not hardened against the case where the OS image was missing but the boot manager let you try to boot into it anyway; doing so would erase much of the content in /etc and prevent booting into a known-good OS image. Oops.

Fortunately, KDE Linux includes built-in Btrfs snapshots of /etc, so there’s a documented set of recovery steps. And Harald Sitter has since improved error logging for this situation and fixed the bug on our side so rolling back from a botched update won’t damage /etc anymore.

Our focus now shifts towards implementing a system to automatically roll back and forward /etc as you roll back and forward OS builds, so each OS build is permanently associated with the version of /etc it was known to work with. This would have also prevented the issue.

In addition, we’re looking into merging steps 1 and 2 as much as possible so this type of failure can’t even happen in the first place.


But that wasn’t all the “excitement” around updates: systemd-260 also opted the “sysupdate” functionality that KDE Linux uses out of systemd’s API stability guarantee, and then broke compatibility — resulting in Discover being unable to update the system. updatectl update in a terminal window remained working.

Fortunately, Akseli Lahtinen has already adapted Discover’s sysupdate support to the new approach in systemd-260, so that’s working again.

We also uncovered a few more bugs introduced by systemd-260, including https://github.com/systemd/systemd/issues/41303 and https://github.com/systemd/systemd/issues/41299. And if anyone from Systemd is reading, https://github.com/systemd/systemd/issues/41288 is also a highly relevant issue; this really shouldn’t happen.

I’ve been told that sysupdate is expected to return to the API compatibility guarantee in systemd-261 or -262, so expect some more churn here. If it gets too bad, we’ll consider rolling back to systemd-259 (or even -258, since -259 broke many TPM chips).


Thankfully there’s also good news!

Better memory management

I tweaked the parameters of our zram setup to stop causing system freezes when close to the limit. I also fixed our “out of memory” handler so that it works, and now memory-hogging apps will be terminated instead of letting the whole system freeze.

This whole endeavor came out of some deep research into memory management that I expect to yield more positive changes in the future.

More user-friendly handling of incompatible packages

Thomas Duckworth integrated a component he’s been working on that displays sane feedback when you try to open a package or app that isn’t supported on the system, like a Windows .exe or a .rpm package.

A dialog informs the user that RPM packages are not supported on KDE Linux, and suggests alternative courses of action

Better out-of-the-box hardware support

John Kizer pre-installed usbmuxd, which makes plugged-in Apple iOS devices visible in Dolphin and file dialogs. So now you can, for example, plug in one such device and copy pictures off of it.

Thomas Duckworth fixed an issue that prevented non-NVIDIA systems from fully sleeping. This workaround was only needed for systems with NVIDIA GPUs, and no longer takes effect for systems with other GPUs.

Vishal Rao slightly increased the amount of time that the OS image chooser is visible on screen, making it less likely that you’ll miss it entirely when using KDE Linux with a TV or a slow monitor that takes a while to turn on.

Better out-of-the-box software support

Hadi Chokr added support for mounting optical disk images.

I added support for SSTP VPNs, and also for encoding audio on CDs using the Opus format, indexing really old Microsoft Word documents, and opening archives compressed with more types of compression algorithm.

Internationalized “command not found” handler

I made the “command not found” handler display translated text if you don’t use your KDE Linux system in English. Thanks a lot to Albert Astals Cid for helping me with the details here!

Smarter settings

Yago Raña Gayoso disabled screen locking and update checking while in the live session, as these don’t really make sense there. Yago also disabled canceling the installation in the middle, as this is not supported right now and would produce a broken system.

Thomas Duckworth configured the sudo command-line tool to display a little “*” for every character you type, instead of nothing. This matches the standard behavior in password fields that people are familiar with.

I configured the cp and rsync command-line tools to preserve metadata (such as modification times, extended attributes, and ACLs) when copying files.

Fixed spellchecking, at least for English

I fixed our spellchecking setup by installing the English backend for hunspell, and removing the redundant aspell to save some space. These language packages can be quite large, so it’s not super feasible to ship them all in the image right now. In the future we’ll be building a system to let them download at runtime.

KRunner helps the user spell "itinerary" by suggesting it in response to being asked if "itineray" is a word

Technical changes

Thomas Duckworth fixed an issue that made newly-installed OS images sometimes get de-prioritized in the OS image chooser for no good reason.

Akseli Lahtinen set the $SSH_ASKPASS environment variable to to point to KSSHAskPass by default, smoothing out some SSH-based workflows.

Hadi Chokr added ~/.local/bin to every user’s default $PATH variable, allowing kde-builder and other user-installed binaries to work without an extra setup step.

How you can help

Does this project sound exciting? I hope it does! We’re building a general-purpose operating system for normal people, aiming to integrate all components out of the box in a way that rivals Windows and MacOS. If you’d like to help out with the project, there are multiple ways.

If you’re an adventurous and technical person, install KDE Linux and report issues.

If you’re good at writing, KDE Linux’s documentation can always use improvement. Submit merge requests here.

KDE Linux leans heavily on Flatpak, so fixing packaging or code issues in Flatpak-packaged apps is very helpful.

You can even help us build the OS itself! The Beta milestone is currently 71% complete, and there’s plenty to do:

And if you’re already using KDE Linux, let us know how your experience has been! Is it good? What can we do better?

Tuesday, 31 March 2026

pURL and SWHID are both software identifiers with similarities, but they are fundamentally different. pURL is assigned by a registry. SWHID is derived from the code itself. They are not competitors — they complement each other.

Today we're releasing Krita 5.3.1 and 6.0.1.

This release mainly fixes an issue for Windows users: some applications, like Microsoft Windows Powertoys' Fancy Zones or the Google Drive plugin cause problems for Krita. These applications query all running applications for their accessibility abilities.

Until Qt6, Qt's QML module, which is used extensively in the new text tool, would then recursively query all active screen objects, like comboboxes or buttons, and up and down the entire class hierarchy for accessibility features. This slowed down Krita to the point where even menus would be slow to open.

It was extremely tricky to figure this out, since none of the Krita developers actually use these external applications... But it should be fixed now!

There are more fixes in this release:

  • The mutator shortcut is now Ctrl-alt-shift-m instead of Z in accordance with the plugin's manual.
  • On Android, the canvas will not pan up when you use the text tool
  • On Android, the OnePlus stylus middle click button works
  • Animation Key Frame copy pasting now works in Krita 6
  • On Wayland, drag and drop is fixed (Wayland clears the clipboard when a new window is opened, so now we have to cache the data.)
  • The canvas resize dialog now works correctly when changing units (bug: 517857)
  • The Incremental Backup/Version saving function now works in Krita 6.
  • On Android, text fields should no longer block stylus movements, pressing spacebar should work as a shortcut and the view should no longer turn blue when pressing a keyboard key. These issues only occurred on some devices.

Check out the release notes for a full overview of all the new features in Krita 5.3 and 6.0.

[!WARNING] One again, we consider Krita 5.3.1 suitable for productive work; 6.0.1 is, because of the many changes from Qt5 to Qt6 more experimental.

5.3.1 Download

Windows

If you're using the portable zip files, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.

[!NOTE] We are no longer making 32-bit Windows builds.

Linux

Note: starting with recent releases, the minimum supported distro versions may change.

[!WARNING] Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.

MacOS

Note: minimum supported MacOS may change between releases.

Android

Krita on Android is still beta; and is meant to run on chromebooks and tablets only.

Source code

For source archives, please download one of the 6.0.1 archives and build with Qt5.

md5sum

For all downloads, visit https://download.kde.org/stable/krita/5.3.1/ and click on "Details" to get the hashes.

Key

The Linux AppImage and the source tarballs are signed. You can retrieve the public key here. The signatures are here (filenames ending in .sig).

6.0.1 Download

Windows

If you're using the portable zip files, just open the zip file in Explorer and drag the folder somewhere convenient, then double-click on the Krita icon in the folder. This will not impact an installed version of Krita, though it will share your settings and custom resources with your regular installed version of Krita. For reporting crashes, also get the debug symbols folder.

[!NOTE] We are no longer making 32-bit Windows builds.

Linux

Note: starting with recent releases, the minimum supported distro versions may change.

[!WARNING] Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.

MacOS

Note: minimum supported MacOS may change between releases.

Android

Krita 6.0.1 is not yet functional on Android, so we are not making APK's available for sideloading.

Source code

[!NOTE] Note for distributions: if you package both PyQt5 and PyQt6, you will want to patch our source code with this patch: Disallow importing conflicting version of PyQt

md5sum

For all downloads, visit https://download.kde.org/stable/krita/6.0.1/ and click on "Details" to get the hashes.

Key

The Linux AppImage and the source tarballs are signed. You can retrieve the public key here. The signatures are here (filenames ending in .sig).

Sunday, 29 March 2026

Strand is a PWA runtime for running web applications in a more integrated manner for KDE Plasma.

Right now Strand has two parallel development tracks; an AI-driven prototyping track to test the feasibility of features, and a second human-driven track where I’m building the final product.

I’ll mostly cover the events of the AI track in this post, which I’ve been dogfooding as I slowly get the human track on-rails. The usual caveats of code quality and security are in full effect.

Performance & Structure

The first version of the runtime used one WebEngine per application process. Part of this was me receiving incorrect information from the AI. After understanding the WebEngine and WebEngineProfile structure more thoroughly, I decided a system of dynamically determining the host process would lead to better resource efficiency.

Now, instead of one process per app, when a webapp starts it generates a “Process hash” based on the configuration and flags being applied to WebEngine. It will then see if there’s a Strand process running with that hash, using it if available. This immediately lead to hundreds of megabytes in savings when running multiple instances, while still allowing apps to potentially use alternative settings if required.

One major pain point is hardware acceleration. I’m having significant of trouble getting it to work as it really requires the stars to align quite precisely. Right now there’s just no acceleration for reasons ranging from my specific hardware, to Wayland, to a witches brew of flags – and if anything is wrong there’s just no acceleration. I checked to see if I could run another KDE QtWebEngine-oriented app at full speed – Falkon – but it also suffered. Commentary online is underwhelming.

My new benchmark. I’ll score the hardware acceleration based on how long I get before the lag kills me. Right now it’s “202”.
New Features Tested

The most significant new feature is header integration, which is the culmination of 3 smaller features.

The most visually obvious is the addition of custom CSS with system color support. Strand injects CSS variables into applications with system colors, and when used by the custom CSS, can easily give web apps much more cohesive headers. Strand pays special attention to header-oriented colors, guaranteeing their availability along with the accent color. These apps are also smart enough to update their colors when changed on a system level. Of course, custom CSS can be disabled. The only caveat is that some apps still have the scrollbar peeking in, which could potentially be fixed case-by-case with CSS.

The next addition is the ability to list “Drag Region Selectors” in the manifest files. These are simple DOM selectors which trigger native window dragging when an element matches the selection criteria. This system accounts for interactive child elements, so things like buttons and fields in drag areas work as-expected.

Toolbars and menubars are no longer mandatory. In the manifest file you can specify “Safe Toolbar Removal” selectors paired with URLs. If the selector criteria is met and “Allow Smart Hiding of Toolbar” enabled for the app, Strand will auto-hide the toolbar. This works very well! The toolbar will re-appear if the app navigates away from a “Safe Situation”, allowing users to access browser-like navigation. A good example of this is an SSO flow; if SSO is occurring, the toolbar re-appears, and the user can navigate back to the app if the sign-in process is interrupted. Even then a user holding the alt key will re-show the toolbar, and if Strand blocked an outgoing link, the toolbar will resurface so the user may interact with that event.

These 3 features together make headers in web apps feel shockingly native at times. I’m particularly impressed by how integrated Teams feels. Placed between Dolphin and Kate it looks great, and the dragging behavior of the header areas are spot-on.

The header-centric features are also designed to degrade gracefully. We are connecting to ever-changing websites and I didn’t want to introduce injections libel to break entire applications. In the event a web app changes significantly, only the integrations should be lost, so at worst you’ll still have a functional web app. This is also one reason why I won’t be introducing app-specific Javascript injection.

Stand applications can now be added to menus via the welcome screen, and applications are appropriately categorized when added. The next step will be to have a complete installation flow.

Strand doesn’t yet have an installation flow, but launching Discover from FlatHub worked as expected.
Conclusion / Future / The Human Track

Right now the AI track is getting very, very close to what I’d like in terms of functionality and main-window presentation. As the AI churns overall code quality goes down, but it does continue to feed me methodologies which would have easily cost me weeks of research, letting me research on the actually important topics. It also continues to show me what’s possible in general, and when it starts to fail I know I’m probably moving in a bad direction.

Next steps for the AI track are likely going to be in the permissions system, and ensuring advanced functionality like streaming and various portals work. After that there will only be minor additions to the prototype software.

I’ll end with an update on the human track; progress is going intentionally slowly. I wanted to flesh out the process management in the AI track first before over-committing to what will ultimately be the final structure. The human track has the first steps of the startup sequence, and a much better organized set of utilities and data-management classes. I’m also re-assessing the use of Kirigami/QML for building the GUI, as it just leads to nicer interfaces and I do have some experience with it.

Anyway, that’s the updates so far!

If anyone knows the secrets of WebEngine + Wayland + Nvidia, I’d love to hear. I might assemble some memory benchmarks in the next week or two as well, too. There’s also a .deb package I can produce of the AI track; I wholly would NOT recommend installing it, but if people want to see where this idea is going, or even the AI slop source, I can put it up. But I’ll literally name it the “eatYourCat” deb and put it in the “shootYourDog” repo, and it will be with the express understanding that it’s not fit for use and will not be maintained.