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

Saturday, 14 March 2026

We feel how dependencies can hurt

There is a lot of talk about digital sovereignty. Being able to act as a state or as a company is obviously important. But there are real dependencies, and given the current geopolitical dynamics, there are real risks. Unfortunately, there are no easy answers. Digital sovereignty matters, but so do stability, efficiency, and innovation. Fortunately, there are options and some good examples of how to deal with it. I collected some material in an awesome list on digital sovereignty.

While it is complex at the state level, it is merely complicated at the personal level. Reaching something like personal digital sovereignty is possible. If you are informed about the technical landscape, you probably already have a good intuition about it. You feel the pain of having to stop using a service because the provider decided to discontinue it without you having a say. You can decide whether it feels right to upload your personal diary to a server in a jurisdiction you do not control.

Free Software provides a path

There is a clear path to personal digital sovereignty. The goal is nicely expressed in KDE's mission: "A world in which everyone has control over their digital life and enjoys freedom and privacy." The path is provided by Free Software. The freedoms to use, study, share, and improve give you exactly what you need to be in control.

For software you run yourself, this works well. Running Free Software on your personal computer gives you control. It feels good. It becomes more complicated when you use services you do not and cannot run yourself. The software freedoms do not transfer easily. There are a lot of services, which are mostly based on Free Software, but only the service providers enjoy the freedoms, not their users. I have written about this before when working on my Fair Web Services project.

A good testament to personal digital sovereignty is the Blue Angel for software. Its focus on resource and energy efficiency is one side of responsible software use. Maybe even more important is its emphasis on user autonomy: being able to use software without ads being forced on you, being able to choose what to install, and having transparency about what you run. These are the ingredients of personal digital sovereignty.

Finding the balance

Freedom is one side, but convenience is another. Sometimes it is easier to just use something a vendor has invested heavily in providing, even if you pay with your data and some independence. It is also a question of where you spend your time: do you build something for yourself, or do you use something that already exists? And sometimes it is about the limits what you can do yourself. Powerful tools can give you leverage so you can focus on your actual mission.

So it is also about compromise. One very important aspect for me is that I am still able to choose. That is the core of personal digital sovereignty. Sovereignty does not mean doing everything yourself. It means preserving the ability to leave, even if you choose not to.

Federated services make it easy to migrate. For git, for example, it does not matter so much where the server is or who runs it, because switching is as simple as changing the remote. For a proprietary note-taking service, this looks different. You may need special exports, format conversions, and you might lose functionality because it is not based on open standards. Choose your dependencies wisely.

It is important to remember that dependencies are not bad per se. We know this from Free Software. We know what it feels like to stand on the shoulders of giants. We rely on the collective strength of a global community. It is not about rejecting all dependencies or doing everything on your own. It is about creating alternatives and shaping an ecosystem based on openness, so that we can choose and act on our own terms.

My personal stack

I am quite happy with my personal stack, which gives me the control I need. My 12-year-old desktop runs Linux and KDE. I pay to host my own email, Nextcloud, and git services. One project I particularly like is GitJournal, which gives me control over my note-taking across all my devices. This covers the core of my computing needs, with my family, my friends, and what I decide to keep private.

To stay connected to the wider world, there is no way around being present on large networks. GitHub and LinkedIn are the compromises that give me reach without requiring me to abandon all my principles. I would not publish my writing only on LinkedIn, though, because I want to own what I produce.

AI is a difficult question right now. It is easy to switch between services, and with rapid development it is changing quickly what the best choice is. And it can provide tremendous leverage. So it remains an evolving compromise. An ideal future would offer open models powerful enough to serve your needs and that you can run locally.

Building digital sovereignty

On a personal level, you can decide for yourself. There are limitations, and you will have to build on the environment available to you. But there are alternatives, and you can choose to build your personal digital sovereignty.

At the corporate and state level, it is more difficult. The systems are more intertwined, but the pain of dependencies you cannot control and the risks of others making decisions for you are just as real. Alternatives exist there as well, often the same ones available on a personal level. It can be worth taking bold decisions.

Digital sovereignty at the state level is about national security. At the personal level, it is about personal freedom. Free Software provides a powerful path to maintaining control over our digital lives.

I am not arguing for tools. I am arguing for agency.

Welcome to a new issue of This Week in Plasma!

This week something very special landed for Plasma 6.7: the ability to type characters not on your physical keyboard by pressing-and-holding the keys that it does have:

The feature lives in the plasma-keyboard module, so you’ll need to have that installed and turned on in System Settings > Keyboard > Virtual Keyboard. After that, just press-and-hold keyboard keys!

Kristen McWilliam wrote this wonderful feature, and it’ll ship with Plasma 6.7. Kristen has written a whole blog post about it if you want to know more.

But that’s not all! We’ve got some more features, a lot of user interface polishing, and some bug-fixing and performance work. All in all, a good week!

Other notable new features

Plasma 6.7

You can now install custom sound themes from downloaded files. (Sam Crawford, plasma-workspace MR #6115)

The Global Menu widget now shows menus for the active window even if it’s on another screen. This is configurable and can be turned off if you preferred the old behavior. (Trevor Jex, KDE Bugzilla #420418)

Notable UI improvements

Plasma 6.6.3

Did a round of polish on the “Add Widgets” sidebar to make sure the widget count numbers are always correct and the on-demand delete button disappears the moment it’s no longer useful. (Tobias Fella, plasma-workspace MR #6378)

The “Configure” button on an unconfigured desktop widget now always fits within it, even if it’s very, very small. (Tobias Fella, plasma-workspace MR #6374)

The Clipboard widget no longer shows you QR codes for non-text items, for which they didn’t actually work. (Tobias Fella, plasma-workspace MR #6392)

Browsing through categories in Discover now highlights the active one in the sidebar as expected. (Akseli Lahtinen, discover MR #1280)

Made Spectacle’s magnifier better at being pixel-aligned. (Noah Davis, KDE Bugzilla #517274)

Plasma 6.7

In System Tray’s Clipboard and Networks widgets, the normal back button now lets you go back a page, so sub-pages no longer have two back buttons. (Tobias Fella, plasma-workspace MR #6393, plasma-workspace MR #6391, and plasma-nm MR #542)

Plugging in a USB printer now shows only one notification about it, not two. (Mike Noe, print-manager #312)

The “Kate Sessions” KRunner plugin no longer advertises results if Kate isn’t installed or is installed as a Flatpak where its functionality doesn’t currently work — though that could change in the future. (Nicolas Fella, kdeplasma-addons MR #1018)

Quick tiling two adjacent windows now centers them in the available area excluding any panels, rather than squeezing the window closest to the panels. (Anthony Flammia, KDE Bugzilla #484975)

Notable bug fixes

Plasma 6.6.3

Fixed an issue that could prevent the system stats collector from working properly on Raspberry Pi devices. (Ben Murdoch, ksystemstats MR #127)

Fixed a few sources of glitchy behavior when resizing widgets on the desktop. (Tobias Fella, plasma-workspace MR #6373)

Worked around a bug in Samsung LS24D60xU monitors (yes really, a bug in the monitors themselves) that made them turn on and off again in a loop. (Xaver Hugl, KDE Bugzilla #516605)

Fixed a stubborn issue causing the Arch/CachyOS updaters’ System Tray context menus to sometimes be mis-positioned. (Vlad Zahorodnii, KDE Bugzilla #517093)

It’s now possible to change the keyboard shortcut used for KWin’s Mouse Mark effect. (Nicolas Fella, KDE Bugzilla #501537)

The reset button in System Settings’ SDDM configuration page now resets a few more things it had missed in the past. (Chandradeep Dey, sddm-kcm MR #103)

Plasma 6.7

Implemented a fix in Plasma code to prevent Electron apps’ System Tray icons from all following each others’ settings. This is an upstream bug in Electron which has been fixed, but most Electron apps haven’t yet been updated to include the fix, so for them, this new Plasma-side fix should also stop the issue from happening. (Nekto Oleg, plasma-workspace MR #6400)

wxWidgets 3.3.3

Fixed a bug in the wxWidgets library that broke certain copy-paste operations in wxWidgets apps, such as KiCad and Audacity. (David Edmundson, KDE Bugzilla #514317)

Notable in performance & technical

Plasma 6.6.3

Reduced CPU and GPU load for full-screen windows (also known as “direct scan-out”) for screens using more fractional scale factors. (Błażej Szczygieł, KDE Bugzilla #517264)

Plasma 6.7

Improved the robustness with which sandboxed apps can initiate screencasting and remote desktop requests. (Gabriel Maizo, xdg-desktop-portal-kde MR #526)

If you happen to have multiple GPUs and any of them don’t actually support OpenGL 3D acceleration, this no longer prevents the more capable ones from providing 3D acceleration. (Xaver Hugl, KDE Bugzilla #441409)

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, 13 March 2026

It’s been a busy few months for the development team! We’ve been focusing heavily on turning Marknote into a much more robust knowledge base while keeping the interface as clean and distraction-free as possible. Today, we're releasing version 1.5, and it’s packed with major additions and quality-of-life improvements.

Marknote v1.5

Here is a rundown of what we’ve added to this release.

Source Mode

One of the most highly requested features is finally here: Source Mode. Thanks to some fantastic work from our Season of KDE (SoK) contributor, Siddharth Chopra, you can now bypass the rich-text WYSIWYG interface entirely. If you’re the type of person who prefers looking at the raw Markdown syntax while structuring your thoughts, you can now seamlessly toggle into a dedicated source editing view.

Marknote v1.5

Notes are rarely isolated thoughts, so we’ve added internal wiki-style links with cross-notebook lookup. You can now easily link documents to one another, making it much simpler to build out a connected web of ideas.

Link your notes

Note management

We made it easier to manage your growing number of notes. Each notebook will now show you how many notes it contains. If you need to move notes between notebooks, it is now easy to do that via drag and drop. And finally, we added a new “Duplicate Note” action to make it simple to create templates and copy existing notes.

Duplicate notes

KRunner plugin

To help you get to those ideas faster, we also added a KRunner plugin. You don't even need to have Marknote open—just pull up KRunner on your Plasma desktop, type what you’re looking for, and jump straight into your note.

KRunner Plugin in action

Search and replace

Full-text search and replace functionality is also here to make your life much easier.

Search for text

UI polish and under-the-hood work

We added beautiful, all-new animations for note and notebook items, for the search bar, and brought back the smooth sidebar transitions to make navigation feel dynamic.

We added full Undo/Redo functionality to the Quick Sketch dialog.

We added several improvements to table formatting and actions to make managing grids much less frustrating.

On the technical side, we bumped our Kirigami Addons dependency to 1.11.0, fixed an annoying issue where opening a note updated its modification timestamp, and resolved a Flatpak bug that prevented notes from opening via file managers.

Try it out

Marknote 1.5 is rolling out now! You can grab it on Linux via Flatpak and Snapcraft. A massive thank you to everyone who contributed code, translations, and bug reports for this cycle. Happy note-taking!

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


Joint statement of scientists and researchers on Age Assurance

Tags: tech, law, surveillance

This is (IMNSHO) a very important open letter. This confirms to me that the whole set of age verification laws we’re seeing popup everywhere is severely misguided. Had my suspicions before of course but it’s getting clearer with this one. We should stay clear from those laws as a profession, it’s important to not comply, it’d be a disservice to our users.

https://csa-scientist-open-letter.org/ageverif-Feb2026


Secure Communication, Buried In A News App

Tags: tech, cryptography, security, privacy, journalism

Not sure it’ll keep being efficient if the political heat keeps going up. Still this is a nice idea.

https://hackaday.com/2026/03/09/secure-communication-buried-in-a-news-app/


LibreOffice criticizes EU Commission over proprietary XLSX formats

Tags: tech, data, foss, law, europe

We should indeed put an end to those proprietary formats. It’s sad to see the EU Commission contradict itself there.

https://www.heise.de/en/news/LibreOffice-criticizes-EU-Commission-over-proprietary-XLSX-formats-11202165.html


Tags: tech, foss, ai, machine-learning, copilot, values, commons, law

Excellent piece, indeed legal is not the same as legitimate. More often than not the law is lagging behind and things might be wrongly “fixed” at a later date. In that interval that’s when our communities need to build its own tools to protect the commons. We’re clearly reaching such an inflection point. Interestingly, I think there’s is a difference of reaction between the people with a Free Software culture and the ones with an Open Source culture.

https://writings.hongminhee.org/2026/03/legal-vs-legitimate/


Do the Illegible

Tags: tech, programming, engineering, ai, machine-learning, copilot

Obviously the essay from Peter Naur keeps popping up lately. It feels like an important piece, especially in the current atmosphere of vibe coding. This article lays out quite well why vibe coding is the opposite of what we should be doing.

https://ashwinsundar.com/posts/legibility-and-programming/


Moonforge

Tags: tech, linux, embedded

An initiative to monitor I guess. There’s clearly a need for a more “opinionated” setup for Yocto based embedded systems, this is going in that direction.

https://moonforgelinux.org/


The hidden compile-time cost of C++26 reflection

Tags: tech, c++, reflection, metaprogramming

Interestingly the issue for the compile time is not so much the feature itself but the STL headers required. It makes PCH pretty much mandatory.

https://vittorioromeo.com/index/blog/refl_compiletime.html


How to stop fighting with coherence and start writing context-generic trait impls

Tags: tech, rust, type-systems

Looks like an interesting approach to lift some of the limitations around the Rust trait system. The learning curve doesn’t look too great though, clearly requires effort to get into.

https://contextgeneric.dev/blog/rustlab-2025-coherence/


Parametricity, or Comptime is Bonkers

Tags: tech, zig, rust, type-systems, generics

Interesting look at Zig’s comptime feature. It’s not a purely Zig post though, does a good job of explaining parametricity and the implications of loosing it.

https://noelwelsh.com/posts/comptime-is-bonkers/


Ensuring correctness through the type system

Tags: tech, type-systems, safety

A good illustration of making illegal states unrepresentable. This definitely helps with code safety.

https://lindbakk.com/blog/ensuring-correctness-through-the-type-system


SPA vs. Hypermedia: Real-World Performance Under Load

Tags: tech, web, frontend, complexity

Probably somewhat self serving so the numbers would need to be confirmed with other experiments. That said that case gives a good idea of the price in terms of complexity and resources when choosing to go for an SPA.

https://zweiundeins.gmbh/en/methodology/spa-vs-hypermedia-real-world-performance-under-load


FontCrafter: Create Your Handwriting Font for Free

Tags: tech, fonts

This is definitely a cool project. I like the idea.

https://arcade.pirillo.com/fontcrafter.html


Code Reviews Do Find Bugs

Tags: tech, codereview, science

In praise of code reviews. This article does a good job showing all the advantages if properly managed. Teams have to pay attention to latency but otherwise you get lots of benefits for not so much time spent.

https://entropicthoughts.com/code-reviews-do-find-bugs


On The Need For Understanding

Tags: tech, programming, culture, hacking, debugging, complexity, foss

Yes, we have lots of layers nowadays. But you can read them to figure out when something doesn’t work like you expect. This is one of the most important skills of the trade.

https://blog.information-superhighway.net/on-the-need-for-understanding


The story of one of my worst programming failures

Tags: tech, system, programming, failure

There’s always an interesting lesson in this kind of failures. Here clearly it is in part a story of unchecked trust, and not planning for a bigger system. It came with real consequences too.

https://utcc.utoronto.ca/~cks/space/blog/programming/DevelopedTooSmallFailure


Prioritize Relatively

Tags: leadership, management, project-management

The point is interesting. Priorities are indeed relative and dynamic. It’s impossible to put an “absolute priority value” on what needs to be done.

https://boz.com/articles/prioritize-relatively


Autonomy and Clarity in Leadership Styles

Tags: leadership, management, organisation

Interesting framework of different leadership styles. They all come with their own pros and cons of course.

https://bjorg.bjornroche.com/management/autonomy-vs-clarity/



Bye for now!

Friday, 13 March 2026

KDE today announces the release of KDE Frameworks 6.24.0.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version

Attica
  • QtPlatformDependent: hide static thread local var in accessor. Commit.
  • Delete QtPlatformDependent if needed. Commit.
  • QtPlatformDependent: Simplify NAM handling. Commit.
Baloo
  • [Extractor] Remove Document from FailedIdDb on success. Commit.
  • [Extractor] Open the DB in ReadWrite mode from the beginning. Commit. Fixes bug #515918
  • [Engine] Protect against opening a ReadOnly database in ReadWrite mode. Commit.
  • Add missing include for syscall(). Commit.
Breeze Icons
  • Fix kleopatra-symbolic icon. Commit.
  • Create symbolic version of krfb icon. Commit.
Extra CMake Modules
  • With get_filename_component use DIRECTORY instead of legacy alias PATH. Commit.
  • KDECompilerSettings: Add option to force asserts. Commit.
KArchive
  • 7zip: insert al the values at once instead of one by one. Commit.
  • KCompressionDevice: avoid asserting on using unbuffered open. Commit.
KAuth
  • Fix memory leaks in BackendsManager. Commit.
  • Enable LSAN in CI. Commit.
KCalendarCore
  • With get_filename_component use DIRECTORY instead of legacy alias PATH. Commit.
  • Fix wrong iCal component parenting when serializing timezone information. Commit.
  • Fix memory leaks in unit tests. Commit.
KCMUtils
  • Mark Kirigami QML module as dependency. Commit.
KCodecs
  • [KEncodingProber] Replace nsCharSetProber raw pointer with unique_ptr. Commit.
  • [KEncodingProber] Replace SMModel external with internal linkage. Commit.
  • [KEncodingProber] Replace nsCodingStateMachine raw pointer with unique_ptr. Commit.
  • [KEncodingProber] Remove unused header files. Commit.
  • [KCharsets] Remove no longer used include. Commit.
  • [KCharsets] Verify entity table is sorted at build time. Commit.
  • [KCharsets] Fix sort order in entity table. Commit.
  • [KCharsets] Add benchmark for entity lookup. Commit.
  • [KCharSets] Specify the fromEntity input format more explicitly. Commit.
  • [KCharSets] Fix numeric encoding for toEntity(...). Commit.
  • [KCharSetsTest] Move test class declaration to implementation file. Commit.
  • [KEncodingProber] Switch state machine tables to plain uint8_t. Commit.
  • [KEncodingProber] Remove runtime unpack state machine. Commit.
  • [KEncodingProber] Use same class table for UTF16 BE and LE state models. Commit.
  • [KEncodingProber] Fix reset() method. Commit.
  • [KEncodingProber] Actually check if reset() works. Commit.
  • [KEncodingProber] Reduce variable scope. Commit.
  • Remember where to re-try RFC 2047 word decoding. Commit.
  • [KEncodingProber] Default empty constructors/desctructors. Commit.
  • [KEncodingProber] Remove unused unexported member functions. Commit.
  • [KEncodingProber] Remove unused member variable. Commit.
  • [KEncodingProber] Remove no longer used include. Commit.
  • [KEncodingProber] Drop declaration of unused GetDistribution method. Commit.
KConfig
  • Fix bounds check in KConfigPrivate::expandString. Commit.
  • Kdesktopfile: do not needlessly cascade desktop files. Commit.
  • Add oss-fuzz integration. Commit.
  • Remove old, commented out code. Commit.
  • With get_filename_component use DIRECTORY instead of legacy alias PATH. Commit.
  • KDesktopFileTest: Update testActionGroup. Commit.
  • KDesktopFile: Check for Name since it is required field. Commit. Fixes bug #515694
KConfigWidgets
  • ShortcutStyleDelegate: Init styleOption. Commit.
  • KRecentFilesAction: Avoid temporary allocations. Commit.
  • KRecentFilesAction: Avoid allocation when reading/writing config. Commit.
KCoreAddons
  • Autotests: increased safety margins for unstable tests. Commit.
KCrash
  • Metadata: make sure the KCrashComplete group has an entry. Commit. Fixes bug #516658
  • Avoid using qEnvironmentVariableIntegerValue. Commit.
KDeclarative
KFileMetaData
  • Ffmpegextractor: Extract Artist metadata. Commit.
  • Fix finding of poppler-version.h (Bad include). Commit.
KGuiAddons
  • Clipboard: Use buffered writes for data transfer. Commit.
  • Add manual large clipboard tests. Commit.
  • Ksysteminhibitor: Support Windows through PowerCreateRequest API. Commit.
  • Remove unneeded Qt version check. Commit.
  • Kiconutils: remove now unnecessary Qt version check. Commit.
  • Clipboard: Hold mutex before dispatching any wayland events. Commit. Fixes bug #515465
  • Mark WindowInsetsController as singleton in the documentation. Commit.
  • CMake: Find Qt6::GuiPrivate when USE_DBUS is enabled. Commit.
  • KKeySequenceRecorder: Accept some more keys that can be used with Shift. Commit.
KHolidays
  • Add more holidays to Bulgaria. Commit.
  • Quiet compiler warnings using inline pragmas. Commit.
  • DE: From 1954 to 1990, there was a “Tag der deutschen Einheit” (note the lowercase “d” in “deutschen”) in West Germany. Commit.
  • DE: Before 1990, there was no "Tag der Deutschen Einheit". Commit.
  • DE: Before 1990, there was no "Tag der Deutschen Einheit". Commit.
  • Generate the bison/flex code. Commit.
KI18n
  • KI18N_WRAP_UI macro: drop now unneeded support for unique image data names. Commit.
  • KI18N_WRAP_UI macro: inject klocalizedstring.h include by uic argument. Commit.
KIdletime
  • Remove unneeded Qt version check. Commit.
KImageformats
  • JP2: fix possible Undefined-shift. Commit.
  • IFF: fix buffer read overflow. Commit.
  • Fix Heap-buffer-overflow WRITE. Commit.
  • Fixed excessively frequent warning messages. Commit.
  • Ossfuzz: update aom, libavif, openjpeg. Commit.
  • ANI: fix possible QByteArray allocation exception. Commit.
  • Jxl: adjust metadata size limits. Commit.
  • RGB: fix a possible exception on the new. Commit.
  • TGA: fix Undefined-shift. Commit.
  • PSD: improve conversion sanity checks. Commit.
  • IFF: fix compilation warnings. Commit.
  • ANI: check for array allocation size. Commit.
KIO
  • Refactor and improve paste dialogs. Commit.
  • Add title for dialogs opened when pasting content. Commit.
  • KNewFileMenu: Strip proper ellipsis, too. Commit.
  • KFileItemDelegate. Commit.
  • Trash: fix typo and use correct device id for home dev. Commit.
  • Visual changes to KFileWidgets to bring it closer to Dolphin. Commit. Fixes bug #516063
  • Widgets: Make use of nanosecond timestamps when appropriate. Commit.
  • Workers: Populate nanosecond timestamps in KIO workers. Commit.
  • Core: Extend UDSEntry with nanosecond precision timestamps. Commit.
  • FilePreviewJob: Stat MountId and use it to look up the mount. Commit.
  • KMountPoint: Add findByMountId. Commit.
  • Filewidgets/placesview: add mountpoint tooltips for network mounts. Commit.
  • KFileItemActions: Use OpenUrlJob::isExecutableFile for "Run executable". Commit.
  • Kfileitemactions: Add i18n context inmenu. Commit.
  • Trashimpl: use mnt_id as trashId instead of dev_id. Commit. Fixes bug #513350. Fixes bug #386104. See bug #490247
  • Kmountpoint: expose mnt_id_unique and isPseudoFs. Commit.
  • KFileItemActions: Add API for service menu keyboard shorcut. Commit.
  • Drop Worker::workerProtocol. Commit.
  • Kpropertiesdialog: Use MIME type we already have for default icon. Commit.
  • Core: Drop unused code. Commit.
  • Filepreviewjob: Add timeout. Commit. Fixes bug #504067
  • Deleteortrashjob: Remember whether AutoErrorHandling was enabled. Commit.
  • Deleteortrashjob: Don't overwrite job delegate, if it exists. Commit.
  • Gui/openurljob: Stops job on missing Type in desktop files. Commit.
  • Core/mimetypefinderjob: Fix missing early return in KIO::MimeTypeFinderJobPrivate::scanFileWithGet. Commit.
  • Trashsizecache: Fix look up of directory size cache. Commit. See bug #434175
  • Drop WorkerConfig::setConfigData. Commit.
  • Simplify SimpleJob::slotMetaData. Commit.
  • Drop special handling for internal metadata. Commit.
  • Storedtransferjob: Drop secret OverriddenPorts option. Commit.
Kirigami
  • Workaround crash due to QTBUG-144544. Commit. Fixes bug #514098
  • Platform: Deprecate PlatformTheme::useAlternateBackgroundColor. Commit.
  • Platform: Move useAlternateBackgroundColor from Theme to StyleHints. Commit.
  • Platform: Introduce StyleHints as common API for extra style behaviour. Commit.
  • InlineViewHeader: Create a template and utilize it. Commit.
  • NavigationTab Bar/Button: Create templates. Commit.
  • Heading: Create a template, base control on top of it. Commit.
  • Mark QML singletons in documentation. Commit.
  • Remove duplicate since documentation. Commit.
  • Add missing documentation module dependency. Commit.
  • Autotests: Mark test_absolutepath_recoloring of tst_icon.qml as skipped. Commit.
  • Controls: Port kirigamicontrolsplugin to use Qt::StringLiterals. Commit.
  • Controls: Use componentUrlForModule for looking up controls files. Commit.
  • Platform: Port BasicTheme to use StyleSelector::componentUrlForModule. Commit.
  • Platform: Greatly simplify StyleSelector::styleChain. Commit.
  • Platform: Deprecate componentUrl, rootPath and resolveFileUrl in StyleSelector. Commit.
  • Platform: Simplify StyleSelector::resolveFilePath. Commit.
  • Platform: Add StyleSelector::componentUrlForModule. Commit.
  • Move all controls in own import. Commit.
  • Fix Kirigami.InputMethod.willShowOnActive. Commit.
  • Fix placeholder. Commit.
  • Reduce text duplication for shortcut tooltips in action toolbar. Commit. Fixes bug #515958
  • Show keyboard shortcut in action toolbar tooltips. Commit.
  • Work around Qt bug causing kirigami components to not load when multiple qml engines are involved. Commit.
KJobWidgets
  • Don't show empty error notifications in KNotificationJobUIDelegate. Commit.
KService
  • Make updateHash slightly faster. Commit.
  • Ksycoca: do not allow for recursive repairs. Commit. Fixes bug #516426
  • Kservice: correctly type the unused legacy field as 8 bits. Commit.
  • Ksycocafactory: do not crash when failing to find a factory stream. Commit.
  • Ksycocafactory: guard against integer underflow. Commit.
  • Enable LSAN in CI. Commit.
  • Fix KServiceAction+KService memory leak. Commit.
KTextEditor
  • Search: add a way to clear the history. Commit. Fixes bug #503327
  • Enable Werror on CI. Commit.
  • Reduce QLatin1Char noise. Commit.
  • Fix clipboard warning, check if QClipboard::Selection is supported. Commit.
  • Ensure we write a BOM if wanted for empty files, too. Commit.
  • Avoid temporary allocations when saving the file. Commit.
  • Properly pass parent pointer for document. Commit.
KTextTemplate
  • With get_filename_component use DIRECTORY instead of legacy alias PATH. Commit.
KUserFeedback
  • Don't report nonsensical screen information. Commit.
KWallet
  • Fix TRANSLATION_DOMAIN. Commit.
  • Fix Messages.sh to cover all of src/runtime. Commit.
  • Added translation_domain. Commit.
KWidgetsAddons
  • Kacceleratormanager: Avoid unnecessary allocations when searching for used shortcuts. Commit.
  • Kactionmenu: Be more forgiving about menu ownership. Commit.
  • Kactionmenu: Fix ownership of default menu. Commit.
  • Enable LSAN in CI. Commit.
  • Avoid mem-leak in KDateTimeEditTest::testDateMenu. Commit.
  • KAcceleratorManager: Avoid unnecessary allocation. Commit.
  • Kmimetypechooser.h: Remove default arguments from an overlapping constructor and mark it as deprecated for 6.24. Commit.
KWindowSystem
  • Remove unused include. Commit.
  • Port createRegion to QNativeInterface. Commit.
  • Port surfaceForWindow to QNativeInterface. Commit.
  • Wayland: Don't try to export window that isn't xdg_toplevel. Commit. Fixes bug #516994
  • Port xdgToplevelForWindow to QNativeInterface. Commit.
  • Wayland: Fix importing window that's not exposed but already has surface role. Commit.
  • Remove unneeded Qt version check. Commit.
  • Platforms/wayland: Manage blur, contrast, and slide globals with std::unique_ptr. Commit.
  • Platforms/wayland: Add missing initialize(). Commit.
  • Platforms/wayland: add missing blur capability with ext-background-effect. Commit.
  • Wayland: implement background effect protocol. Commit.
  • Platforms/wayland: ensure we always react to surface destruction. Commit.
  • Run clang-format on all files. Commit.
Modem Manager Qt
  • Add new cell broadcast interfaces from MM API. Commit.
  • Update modem firmware interface to latest MM API. Commit.
  • Update modem voice interface to latest MM API. Commit.
  • Update call interface to latest MM API. Commit.
  • Update modem interface to latest MM API. Commit.
  • Update bearer interface to latest MM API. Commit.
  • Update modem messaging interface to latest MM API. Commit.
  • Update modem signal interface to latest MM API. Commit.
  • Update modem location interface to latest MM API. Commit.
Prison
  • Bump minimum ZXing version from 1.2.0 to 1.4.0. Commit.
  • Make zxing and libdmtx required dependencies by default. Commit.
Purpose
  • Add missing CI dependencies. Commit.
  • Fix QML module dependencies. Commit.
QQC2 Desktop Style
  • Use Kirigami.StyleHints for tick marks in Slider. Commit.
  • Use Kirigami.StyleHints for useAlternateBackgroundColor in list item background. Commit.
  • Use Kirigami.StyleHints for icons in ComboBox. Commit.
  • Use Kirigami.StyleHints to determine ScrollView background visibility. Commit.
  • Menu: make sure implicitWidth/height is never 0. Commit. Fixes bug #516151
  • Make sure that the default behaviours of onPressed and onLongPressed are not trigger if the even is accepted. Commit.
Solid
  • Devicemanager.cpp replace "Ok" with "OK". Commit.
  • Mark network mounts as ignored if user is missing rights for it. Commit.
  • Fstabhandling: add static wrapper method for '_k_isFstabNetworkFileSystem'. Commit.
  • Use directory name as displayName for fstabdevices. Commit. Fixes bug #501658
Syntax Highlighting
  • Move comment after white space for some shells and Perl. Commit. Fixes bug #510666

Plasma Keyboard has interesting news to share!

Plasma Keyboard started out life as KDE's virtual / on-screen keyboard, and now it is evolving to also support tools and features for our physical keyboards.

FLOSS/Fund

Plasma Keyboard was granted funding from the FLOSS/Fund program's second tranche, for which we are very grateful! This funding has ensured we will be able to put some sustained effort towards refining and improving the project — and I have been doing just that for the past couple of months.

I began by getting more familiar with the codebase, lists of open bugs, and feature requests. I also did some refactoring and cleanup, improved the CI and MR review process, etc.

Diacritics

https://invent.kde.org/plasma/plasma-keyboard/-/merge_requests/83

The first feature I tackled is the first one that is for physical keyboards rather than virtual/on-screen keyboards: diacritics — the variants of a character that indicate a difference in pronunciation, such as ç, ñ, or ü. Though it is more than just diacritics, because it also supports common/popular symbols, such as ™, — (em-dash), →, ¡, ‽, ¼, ≥, ≠, etc.

Diacritics light theme screenshot

Diacritics dark theme screenshot

If you'd like an idea of which diacritics and symbols are currently included, you can check out the base mapping json. Further mappings are included depending on which language(s) you have enabled for Plasma Keyboard in your system settings.

This feature allows users to long-press a key on their physical keyboard to access a popup menu of diacritics and symbols related to that key, and select one to input it. This is a common feature on mobile keyboards, and I personally think this is a great improvement over using something like a compose key for the same purpose.

Selecting an option from the popup menu can be done multiple ways:

  • Pressing the associated keyboard number key shown below the option
  • Clicking on the option with the mouse
  • Using the arrow keys to navigate to the option and pressing Enter

This was pretty challenging to implement; I previously had no experience with Wayland protocols or input methods, so it required a lot of research, reading, learning, and experimentation to figure it out. Difficult, but rewarding!

One of the really cool things about Plasma Keyboard is that it is available as a Flatpak — so if you are adventurous and want to try out the diacritics feature before it is released to the stable version, you can do so with the nightly Flatpak builds!

flatpak install --user --or-update https://cdn.kde.org/flatpak/plasma-keyboard-nightly/org.kde.plasma.keyboard.flatpakref

Then simply enable Plasma Keyboard in System SettingsKeyboardVirtual Keyboard! 🤯 If you already have a version of Plasma Keyboard installed, a quick restart or log out/in might be needed for the new version to take effect.

Future Plans

In addition to the diacritics feature itself, I also laid the groundwork with it for future features that will make use of the same overlay/popup system and physical keyboard integration — stay tuned for more news on that! 😉

There are a bunch of other plans for features and improvements that we'd like to work on, for example: swipe typing, voice typing, making the on-screen keyboard movable and resizable, adding tests and improving performance and reliability, etc.

There is a lot of work to be done, and we are excited to keep improving Plasma Keyboard and making it even more powerful and user-friendly — just like the rest of Plasma! 🚀

If you are interested in contributing, please check out the project on KDE's GitLab: https://invent.kde.org/plasma/plasma-keyboard

Thursday, 12 March 2026

The latest Qt release, Qt 6.11, is just around the corner. This short blog post series presents the new features that QML tooling brings in Qt 6.11. You can find part 1 on new qmlls features here.

Image
We are happy to announce the release of Qt Creator 19!

Release 19 for the Qt Creator IDE adds a minimap for text editors, easier configuration of remote devices, a basic MCP server, lightweight support for various project types for various languages, and many more improvements.

Image

In two sessions, the Krita developers discussed what they want to work on in 2026, after Krita 5.3 and Krita 6.0 are released. That is, actually, one release, but one version is built with Qt5 and one with Qt6. The release is planned for next month.

Krita Sketch User Interface

Last year, Timotheé created a prototype for a mobile user interface for Krita (there is an APK you can install to play with). At the same time Wolthera finished her work on the new text shape and text tools. Both projects use the QML and QtQuick features of Qt to implement the user interface.

This year, we intend to work on replacing the tool option dockers with QML so we can use those both in the mobile and in the desktop version of Krita.

Alvin Wong experimented in 2025 with embedding an OpenGL based canvas inside a QML application. Dmitry and Carsten will continue that work and see whether we can use Krita's canvas to show an image inside Timotheé's prototype.

Agata has already started work to make the current user interface more suitable for tablet use.

Working with Files

There are a couple of plans we have with regards to file handling. On Android, working with the file sandboxing is seriously complicated, and we're looking into a solution for that.

The Krita .kra file format is pretty old by now (not 25 years, since it came into being a few years after Krita started being developed). It can, obviously, load and save everything Krita can handle, but it is not a particular fast file format. Carsten proposed to look into an SQLlite based file format. This could potentially mean that we could save the image after every change without the user noticing, making saving completely transparent.

Agata is already working on improving the autosave dialog. There is already a mockup for this.

Ivan is looking into sharing settings and resources across a user's devices, ideally in a cross-platform way.

Color Management

While Krita supports HDR displays, there are issues with the user interface. Wolthera wants to start improving there.

Now that Qt 6 includes support for color management, CMYK and higher-bit depth images, it should be possible to add color management to Krita's vector layers, and that's something we are eager to implement.

We also discussed Wayland. We now support color management on Wayland on Linux, but there are plenty of problems there. We decided to only support the KWin Wayland compositor that comes with KDE Plasma for now.

Performance

Dmitry wants to work on "region based updates", and has already started on that: this will make working with large images faster.

Ivan and Wolthera are interested in using vectorization in filters, possibly replacing the use of LittleCMS for color transformations.

Continuous integration

Continuous integration is how we build Krita: after changes, Krita is built automatically for every platform. Now that we've access to Windows ARM hardware, we need to find a way to extend our builds to Windows ARM, but the CI factory doesn't have an ARM builder, so we'd need to cross build.

We also intend to update all Krita's dependencies to the latest version, but only after we release Krita 5.3 and Krita 6.0. And of course, we intend to keep releasing bugfix and feature releases this year! For now, Krita 5.3 is the standard release, and 6.0 is considered experimental, but that should have changed by the end of the year.

Wednesday, 11 March 2026

Qt World Summit 2026 is moving to a virtual format. After careful evaluation with key stakeholders, we've decided to transition the event from an in-person gathering in Germany to an online experience.

Image