18 Sep 2026
Planet KDE | English
Web Review, Week 2026-38 — The Graz Edition
Made it to Graz for Akademy 2026. Looking forward to meeting my fellow gearheads. In the meantime, let's go for my web review for the week 2026-38.
25 Years of Mass Surveillance Is Enough
Tags: tech, surveillance, politics, democracy
This essay is fairly US centric but since other countries used the US surveillance apparatus as a blueprint for their own it's widely applicable. It's 25 years of failures and constitutional hazard, maybe it's time to finally respect the right to privacy? Or are our governments too hooked to controlling the population and hunting dissent?
https://www.lawfaremedia.org/article/25-years-of-mass-surveillance-is-enough
What kind of Software should we fund?
Tags: tech, foss, fundraising, supply-chain, ethics, business
The article it refers to is interesting as well of course. Still it shines a crude light on the biases it has. We might have a way to fund libraries available via registries. That's a good thing… But it ignores a lot of what Free Software is about. We need solutions for more software than just a specific family of libraries.
https://tante.cc/2026/09/17/what-kind-of-software-should-we-fund/
Inside 'Project Lily': The Humans Reading Your ChatGPT Chats
Tags: tech, ai, machine-learning, gpt, surveillance
Of course unsurprising. Still it's important to get the proofs out.
https://www.404media.co/inside-project-lily-the-humans-reading-your-chatgpt-chats/
'Doom Loop': OpenAI and Microsoft Admits LLMs Are Destroying the Web and Built on Theft
Tags: tech, ai, machine-learning, gpt, ethics, copyright
They claim fair use in public court but they know full well what they've been doing.
Be alert: targeted attacks on prominent Rustaceans
Tags: tech, rust, supply-chain, security
Bad actors clearly want to compromise supply chains. Stay safe and keep your eyes open.
https://blog.rust-lang.org/2026/09/17/targeted-attacks/
what if my git host were a static site generator?
Tags: tech, tools, git, self-hosting
Looks like an interesting tool to expose git repositories read-only on the web.
https://char.lt/blog/2026/09/sorcery-repo-viewer/
A Design Space Exploration of Async/Await
Tags: tech, asynchronous, reliability
You think async/await works in the same way across languages? Think again! There are several choices of implementation behind it. You better know which choices your particular runtime did, otherwise you will get surprises. It also means it's harder to reuse language from a given runtime and carry it over somewhere else.
Of course I recommend reading the full paper, but this short summary gives a good idea of the content.
https://cel.cs.brown.edu/blog/design-space-async-await/
How fast is C++23's std::flat_map?
Tags: tech, c++, data, performance
Indeed it's a very good new type of maps in many cases. Again a good illustration that nowadays memory layout is often more important than algorithmic complexity.
https://lemire.me/blog/2026/09/16/how-fast-is-c23s-stdflat_map/
C++26: Trivial infinite loops are no longer undefined behaviour
Tags: tech, c++, reliability, safety
It's about time that it got fixed… This was really a language defect.
https://www.sandordargo.com/blog/2026/09/16/cpp26-trivial-infinite-loops
How to Recognize a Change in Capacity to Stop Pressure
Tags: management, productivity
Doesn't feel too actionable on how to detect the change of capacity. That said the advice on how to deal with it is correct.
Clear as Mud
Tags: management, delegation
A few things to keep in mind when delegating tasks. This seems trivial but it's harder than it sounds.
https://managementblog.org/2026/08/28/clear-as-mud/
Proper English is a Myth: There's No 'Correct' Way to Write
Tags: linguistics, writing
I'd say it goes a bit too far in its stance at times. That said it's a good reminder that English like any other languages is in a constant state of flux.
https://brennan.day/proper-english-is-a-myth-theres-no-correct-way-to-write/
Bye for now!
18 Sep 2026 12:50pm GMT
Canvas2D: New QML canvas element using Qt Canvas Painter
In the earlier blog posts about Qt Canvas Painter we have looked at what it is, the new rendering features it brings, how fast it is compared to QPainter, and how path caching makes even a million line segments render smoothly. All of those earlier blog posts used the QCanvasPainter C++ API. At the end of the path caching post I teased that a QML element was coming, and it is here now: Canvas2D, available in Qt 6.12.
![]()
18 Sep 2026 8:12am GMT
17 Sep 2026
Planet KDE | English
Meet Marknote's New Block Editor
About Block Editors
A block editor is an easy to use rich text editor which treats every component of your text as a block. You may be familiar with apps like Notion and the editor you see there is exactly that. A block editor allows you to easily re-order your components and make your editing workflow feel more interactive. Most block editors that you will see online support a subset of CommonMark's features such as headings, lists, quotes, and tables which makes editing even more seamless.
Why?
Traditional text editors feature one continuous text field for you to write down content. This is fine if you need simple formatting and do not need frequent rearrangement. However, if you need structured and extensible content, reusable components, easy rearrangement, and better pragmatic control, block editors are an excellent choice.
Marknote has been a popular note taking app for Linux for a few years now. It supported a subset of Markdown in edit mode and Qt's built-in markdown parser that's present in the TextArea QML component to load markdown files. This means that markdown parsing was handled in two separate ways, when you launch Marknote, Qt's built-in markdown parser would render the content, but when you edit the document in real time, a bunch of pattern matching rules decided how to auto-transform the current text into formatted text. For example, rules like "Is the current word surrounded by asterisks (*)?". These rules worked fine for simple use cases, but they introduced unhandled edge-cases and were very hard to extend and maintain.
Marknote's New Block Editor
This is Marknote's new block editor. It supports the full CommonMark spec, powered by KDE's new markdown parser known as md4qt . It supports everything you might expect from a markdown editor and more. You can drag-and-drop component anywhere you want. It features an easy to use command prompt which you can invoke by pressing slash (/) on your keyboard. You can see it in action in the video above.
Challenges
Implementing this block editor was challenging yet fun. The first challenge was to render nested components in QML. This challenge and how I solved it is described in detail here . After this, I was able to easily render markdown documents using nested QML components. The next challenge was to allow editing those blocks.
Editing Blocks
MD4Qt parses markdown in the form of abstract syntax trees (ASTs). You can traverse the tree, modify it, or delete nodes from it. What I needed was a way to edit the text content. When you edit a block in realtime, parsing its markdown content on every keystroke is not a good idea because of potential performance issues. This is why, the block editor is implemented this way: you will see the raw markdown of the paragraph block you're currently editing. Only when the current block goes out of focus (by switching to another block or pressing Esc), the content will be parsed. This means you can paste an entire markdown document in a block and it will easily expand into blocks as if you had pasted actual blocks! Auto transformation for blocks based on very simple rules is still present. For example, you can create headings by pressing one or more times # followed by a space. These are only a handful of rules so there aren't any edge cases.
Implementing Tables
Tables are very complex in nature. Each table has multiple rows and columns, which means multiple text fields. I took inspiration from other block editors here. Each table is just one block. It can not have nested blocks inside it. This made it easier to implement them. In the old editor, tables were very simple. They didn't have any controls to delete or modify rows. Since each component here is designed in QML, I had a lot of flexibility in how I want the tables to look and be controlled. So each table now has buttons to insert and delete rows and columns. I'll soon also add the ability to drag and drop table columns and rows.
Drag and Drop
The next challenge was to implement drag-and-drop. Since markdown can become complex with its nesting features, I needed a way to make sure it feels very natural. The most important thing was to place the drag handle in a place which does not make it look awkward. Since blocks can be nested, each nested block had to have its own drag handle. Most block editors either don't support nested blocks or the ones which do, do not allow dragging them when they're nested. I wanted both, so after many trials, I made the handles invisible at first. When you hover over a block, you will see its drag handle, and when you hover over the drag handle, the entire block shifts a little towards the right, clearly indicating which part of the block you're about to drag (which is essential to know here because of nesting). I immediately liked this way of doing it so I stuck with it. Implementing the remaining logic was pretty straightfoward with QML's DropArea and DragHandler elements.
Fixing Existing Features
Marknote had a good list of features implemented by many different contributors, for example, search and replace, a table of contents drawer, source mode, GUI formatting controls, internal note links, and an emoji picker. These are strictly tied to the old text editor. Fixing them required understanding the old code and making them work with the new editor. For some features like search and replace, I had to go with workarounds due to lack of enough time. Searching within the block editor works as intended, however, when you open the replace field as well, you will be moved to the source mode which contains the raw markdown of the file. I have plans to change this behavior in the future, but it does the job for now.
Conclusion
This project was part of my Google Summer of Code 2026 project. I had a lot of fun implementing it and learned a lot. I'm very grateful to my mentors Carl Schwan and Mathis Brüchert for their support in the development of the block editor. My plans are to continue working on Marknote to make it the best note taking app on Linux. I'm also involved in other KDE projects such as Drawy and am planning to contribute to Plasma as well as I recently switched from Hyprland to KDE Plasma and have been loving the convenience it provides. I believe the KDE ecosystem is the future of Linux and I want to contribute to it as much as I can. Thanks for reading this blog. As always, no AI was used to write this blog and all words are my own.
17 Sep 2026 6:30pm GMT
A Cross-Platform C# UI Framework via Qt’s Bridging Technology
Every C# UI framework comes with a familiar pattern: Windows-first, Linux absent, roadmap uncertain. WPF stalled, MAUI skipped Linux, WinUI 3 stays Windows-native. At the same time, demand for embedded Linux grows and C# teams feel the lack of good UI alternatives for C# on Linux. Qt Bridges, a bridging technology in public beta for C#, provides access to a UI framework that allows preserving your existing C# codebase while utilizing Qt Quick's feature-rich UI libraries and APIs, hardware acceleration, and cross-platform capability.
![]()
17 Sep 2026 3:45pm GMT
Imprint 1.0 and Kirigami Addons 1.14.0
Happy to announce a new version of Kirigami Addons, as well as the first version of my new app: Imprint.
Kirigami Addons is a collection of many useful modules for your QML and Kirigami applications, and Imprint is a new PDF editor.
Let's start with the more user facing of the two.
Imprint 1.0
Imprint is a very basic PDF editor. Right now it allows you to merge multiple PDFs together; re-order, remove or delete pages; and add or remove password protection.

There are also ways to modify a single PDF page, by for example cropping it.

Or adding basic annotation:

Additionally, all actions made in Imprint are based on commands which are undoable.
On the technical side, I use both Poppler and QPDF. Poppler is used for rendering the PDF, and QPDF is used for editing the raw PDF. The annotations for the editor use the new QtCanvasPainter module from Qt, which is great as it allows moving most of the code to C++.
For now, this really provides the foundation of a powerful PDF editor and in the future I hope to be able to come near feature parity with proprietary apps like iLovePDF. I expect as always to release another version soon with a lot of bugfixes :)
Kirigami Addons 1.14.0
As always when working on a new application, this is the occasion to improve Kirigami Addons even more :)
FormCard
The FormCard modules received a new component FormDelegateCollapsible contributed by Robert French. As the name indicates, it allows you to make a section of a FormCard collapsible.

Another improvement is that any FormCard delegate can now be injected into a FormGridContainer.
FormCard.FormGridContainer {
FormCard.FormButtonDelegate {
text: "Open"
description: "Open a document"
}
FormCard.FormSwitchDelegate {
text: "Enable sync"
}
}

Since KAboutData was extended with more data that application developers can provide, the AboutPage component was also extended in terms of the data we display to the user.
We now support Mastodon and Matrix links, and when clicking on the application name, we display the changelog.

This module also received numerous performance improvements based on the results of qmlprofiler and I did some internal refactoring to take advantage of newer Qt/QML APIs (e.g. LayoutItemProxy).
Actions
The actions modules of Kirigami Addons also received numerous updates to cover the cases of a document editor like Imprint. The biggest change is that there is now a QML API in addition to the existing C++ API; that there is a way to define and render menus; and a way to add context to an action, so that a group of actions is enabled or not depending on a state (e.g. document open, document modified, one page selected, multiple pages selected).
Packager section
You can find the package on download.kde.org (kirigami addons) and it has been signed with my GPG key.
For Imprint, it is for now a personal project not part of KDE, and you can find a tarball (checksum: 1b44d0f138ac175dc13cb00cef5740336f006b2a4dd4737266938278408bd34f) on this website and it is also signed (checksum: 70073cb71f970e94a5d3c7dd4dba6dc5c17a0d19b331a1556e739dc91f748994).
Akademy 2026
I am also going to be at Akademy, but this time only for the weekend as I am afterward taking the sleeper train on Sunday evening to get back to Berlin in the morning for the Nextcloud Community Conference.

17 Sep 2026 3:00pm GMT
QML and C# without C++: Qt Bridge for C# 0.4.0 Beta Released
As part of the on-going development of Qt Bridges, and beyond the two Beta versions already released, we've continued to add new features to the C# bridge, and we're now announcing the release of a new Beta version 0.4.0. The highlight of this release is the possibility to develop C# + QML applications without the need for a C++ compiler. This means that C# developers can now take full advantage of Qt's UI framework capabilities while keeping their familiar development workflow. Other features that we've added in this release include support for macOS and Windows on ARM.
![]()
17 Sep 2026 2:32pm GMT
Oxygen 6.8 – more polish for KDE’s classic theme
The big KDE Plasma 6.7 release ushered in the summer. Now, as summer draws to a close, a new 6.8 release is cooking, due to arrive in about a month's time. Most of the development is done at this point, and we have a few changes to report for our classic Oxygen theme that you...... Continue Reading →
17 Sep 2026 9:47am GMT
16 Sep 2026
Planet KDE | English
KDED refactoring Progress Update!
The past couple of weeks moved on to the other half of the editor work- the kded dialogs that pops up on NetworkManager's behalf - the secret prompt, the SIM PIN dialog, the mobile broadband wizard.
Why this needs doing
The Connection Editor isn't the only place libs/editor gets used. kded's network management module runs as NetworkManager's secret agent: whenever NetworkManager needs a password, a PIN, or a fresh mobile broadband connection, it asks the agent, and the agent has been popping up a QDialog ever since. PasswordDialog asks for Wi-Fi/PPP/VPN secrets, PinDialog unlocks a SIM, MobileConnectionWizard walks through adding a GSM/CDMA connection when you plug in a modem or pair a Bluetooth phone for DUN. All three are widgets, and the VPN half of PasswordDialog reuses the same VpnUiPlugin-returning-a-QWidget mechanism the editor already moved off of.
The straightforward half
The new module is kdedqml, structured the same way editorqml was: a small set of QObjects and a PromptWindow that hosts whichever QML file they back.
kdedqml/
├── passwordprompt.cpp / .h secrets for a plain setting or a VPN
├── pinprompt.cpp / .h SIM PIN/PUK unlock
├── mobilewizard.cpp / .h GSM/CDMA connection wizard
├── promptwindow.cpp / .h hosts one QML file + one backing QObject
└── qml/
├── PasswordPrompt.qml
├── PinPrompt.qml
└── MobileWizard.qml
PromptWindow is the one new idea here, and it's deliberately dumb - give it a QUrl and a QObject, and it loads the QML file into a QQmlApplicationEngine, exposes the object as a context property named prompt, and shows the window. Every one of the three prompts is just "construct the backing object, hand it to a PromptWindow":
m_promptWindow->show(QUrl(QStringLiteral("qrc:/plasma-nm/kdedqml/qml/PasswordPrompt.qml")), m_dialog);
PasswordPrompt itself does the boring 90% of the work first: it duplicates what PasswordDialog already did for plain secrets (Wi-Fi retry messages, WEP/WPA key validation via NetworkManagerQt rather than a regex, the same rule as last time) and, for VPNs, reuses the AuthSetting classes the editor already has:
if (shortName == QLatin1String("ssh")) {
m_vpnAuth = createAuth<SshAuthSetting>(hints, this, vpnSetting, m_vpnSecrets);
} else if (shortName == QLatin1String("sstp")) {
m_vpnAuth = createAuth<SstpAuthSetting>(hints, this, vpnSetting, m_vpnSecrets);
} ...
createAuth constructs the setting and calls loadSecrets(), just pointed at secrets instead of full config. Ten VPN types wired up this way, and PasswordPrompt.qml picks the matching Auth.qml from the editor with a Loader switching on service type, exactly like the editor's own VPN page switches on it.
The half that is actually interesting
OpenConnect doesn't fit that shape at all, because it was never really a settings-and-secrets dialog. The widget version, OpenconnectAuthWidget, runs a whole login session: it drives libopenconnect on a worker thread, and the C library calls back into Qt synchronously to ask for a login form, validate a server certificate, or open a browser for single sign-on - and it expects an answer before it returns, because it's still in the middle of openconnect_obtain_cookie().
The trick the widget uses, and the one I had to keep, is that the callback doesn't wait on the GUI thread's answer via a blocking Qt connection. It emits a signal, then blocks itself on a QWaitCondition:
int OpenconnectAuthWorkerThread::validatePeerCert(void *cert, const char *reason)
{
...
bool accepted = false;
m_mutex->lock();
Q_EMIT validatePeerCert(qFingerprint, qCertinfo, qReason, &accepted);
m_waitForUserInput->wait(m_mutex);
m_mutex->unlock();
...
}
The worker thread is asleep inside wait(), so the bool *accepted pointer it handed across threads stays valid for however long the GUI takes to answer - which for a modal QDialog::exec() was instant, but for a QML dialog the answer only comes back later, from a separate button click. So OpenconnectAuth (the new QML-facing class) splits every one of these callbacks into two halves: the slot that receives the signal just records the state and returns immediately, and a separate Q_INVOKABLE - acceptCertificate(), submitForm() - does the actual wakeAll() once the user has answered:
void OpenconnectAuth::acceptCertificate(bool accept)
{
*m_certAcceptedPtr = accept;
...
m_mutex.lock();
m_workerWaiting.wakeAll();
m_mutex.unlock();
}
Everything else - the dynamic login form built from oc_auth_form, the "changing the group re-submits" behaviour, the SSO web login - is the same worker thread, copied unchanged, talking to a QML WebEngineView instead of a QWebEngineView widget. The two share the same underlying Qt WebEngine types (QWebEngineLoadingInfo, QWebEngineCookieStore, QWebEngineWebAuthUxRequest), so the bridge is mostly mechanical - a WebEngineView.onWebAuthUxRequested handler calling straight into the existing OpenconnectWebAuth helper from the editor's SSO work.
Wiring it together
secretagent.cpp picks between PasswordDialog and PasswordPrompt with a type alias behind HAVE_KDEDQML, so the rest of the file barely changes:
#ifdef HAVE_KDEDQML
using SecretsPrompt = PasswordPrompt;
#else
using SecretsPrompt = PasswordDialog;
#endif
The one real change is that closing a prompt used to be m_dialog->deleteLater() scattered across cancel, reject, and kill paths; those all go through one closePrompt() now, which also closes the shared PromptWindow if there is one. bluetoothmonitor.cpp and modemmonitor.cpp get the same treatment for the mobile wizard and the PIN dialog - and the PIN one loses something along the way: it no longer calls QDialog::exec(), so unlocking a SIM doesn't block kded on a nested event loop anymore.
OpenConnect gets one more property on top of that, selfDriven, because the worker thread accepts the dialog itself once it has a cookie - there's no Ok button to press, only Cancel:
standardButtons: prompt.selfDriven ? QQC2.DialogButtonBox.Cancel : QQC2.DialogButtonBox.Ok | QQC2.DialogButtonBox.Cancel
Same BUILD_EDITORQML flag as before, just gating one more directory now.
What is left
The mobile broadband wizard, PIN prompt, and OpenConnect are all wired up now. What's left is test coverage for the new kdedqml classes, and the actual port to Plasma Mobile, since PromptWindow and the three prompts were built with a phone-sized layout in mind but haven't been run on one yet.
HAVE_KDEDQML and HAVE_OPENCONNECT both mean the widget path is still there, on purpose - nothing gets to come out until the QML path has actually been exercised end to end, tests included. And this was only the kded side; the applet's Handler::showConnectionEditor() still opens the widget ConnectionEditorDialog directly for WPA-Enterprise networks it can't join with a password alone, which is the other loose thread from last time and still isn't pulled.
Thanks, see you soon.
16 Sep 2026 1:18pm GMT
15 Sep 2026
Planet KDE | English
I'm Going to Akademy!

It's been 7 years since I last posted such a banner, and just today I remembered how I was always excited about this kind of posts, so here we go. I've also been to Akademy in Würzburg 2 years ago, but didn't post the banner for some reason (silly me!).
I haven't really contributed to KDE for quite a while, but Akademy is always worth attending, even just to meet old friends again and make some new ones. Plus this year is KDE's 30th birthday. KDE has been such a huge part of my life, so I am not going to miss such an anniversary.
Can't wait to see you all in Graz soon!
15 Sep 2026 9:00pm GMT
Krita 5.3.4 Released!
Today we're releasing Krita 5.3.4 and 6.0.4, containing many bugfixes and improvements across the board. It also finally brings video exports to Android, which means you can now render animations and timelapses from the recorder. Apart from that, Arkady Flury has been improving Krita's icons at a steady rate. Thanks! Also of note: the GIMP XCF file import plugin has been removed. The plugin relied on a third party library that is no longer maintained and had many security issues.
Changelog
- Don't allow to record images that are too big (2^29spixels)
- Fix recorder export when some frames are missing
- Disable long-press on canvas widgets (Bug 525361)
- Fix layer thumbnails scaling when using display scaling
- Fix openening large exr files
- Fix writable resource path validator (Bug 521186)
- Fix channel flags when converting the image's color space
- Fix a rare crash when creating a new image on Windows (happens when the user holds a key while creating the image)
- Fix a crash when a python plugin specifies an invalid action path
- Fix resetting native touch gestures on configuration change
- Fix issues with adding resource bundles and resources on Android
- Fix a crash when "First Frame" shortcut is used when a file with a linked audio track is open. (Bug 524212)
- Fix the recorder interrupting using tools (Bug 488472)
- Fix potentional crashes with some fonts (Bug 523857)
- Do not warn the user about active global selections masks when exporting a file
- The comic manager plugin received several fixes for memory leaks and improved epub export
- Support to render animations and export timelapses on Android.
- Additional bundles in the Android supporter subscription: the latest SK3 pencil bundle, as well as the earlier SK1 and SK2 bundles.
⚠️ Warning
We consider Krita 5.3.4 suitable for productive work; 6.0.4 is, because of the many changes from Qt5 to Qt6 more experimental.
Download 5.3.4
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.
-
64 bits Windows Installer: krita-x64-5.3.4-setup.exe
-
Portable 64 bits Windows: krita-x64-5.3.4.zip
Linux
Note: starting with recent releases, the minimum supported distro versions may change. On Wayland, Krita is only tested against KDE Plasma's KWin. Other compositors may not be fully compatible.
⚠️ Warning
Starting with recent AppImage runtime updates, some AppImageLauncher versions may be incompatible. See AppImage runtime docs for troubleshooting.
- 64 bits Linux: krita-5.3.4-x86_64.AppImage
MacOS
⚠️ Warning
With Krita 5.3.4 release minimum supported MacOS version has increased from 10.14 (Mojave) to 10.15 (Catalina)
- MacOS disk image: krita-5.3.4-signed.dmg
Android
Krita on Android is still beta; tablets only.
Source code
Source code is the same as 6.0.4. See the 6.0.4 section.
md5sum
For all downloads, visit https://download.kde.org/stable/krita/5.3.4/ 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).
Download 6.0.4
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.
-
64 bits Windows Installer: krita-x64-6.0.4-setup.exe
-
Portable 64 bits Windows: krita-x64-6.0.4.zip
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.
- 64 bits Linux: krita-6.0.4-x86_64.AppImage
MacOS
Note: minimum supported MacOS may change between releases.
- MacOS disk image: krita-6.0.4-signed.dmg
Android
Krita 6.0.4 is not yet functional on Android, so we are not making APK's available for sideloading.
Source code
md5sum
For all downloads, visit https://download.kde.org/stable/krita/6.0.4/ 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).
15 Sep 2026 12:00am GMT
14 Sep 2026
Planet KDE | English
KDE e.V. is looking for a Software Infrastructure and Continuous Delivery Engineer
KDE e.V., the non-profit organisation supporting the KDE community, is looking to hire a Software Infrastructure and Continuous Delivery Engineer to help improve our infrastructure that the KDE community relies on. Please see the call for proposals for more details about this contract opportunity. We are looking forward to your application.
The full call for proposals has more details.
14 Sep 2026 12:00am GMT
12 Sep 2026
Planet KDE | English
This Week in Plasma: 6.8 Beta Release!
Welcome to a new issue of This Week in Plasma!
This week we released a beta of Plasma 6.8, and it's ready for testing. Before branching, the team landed a lot of great improvements to make sure it's an awesome release. Check it out:
Notable new features
Plasma 6.8
The Kup backup system has moved to Plasma! That means it will get regular releases, and we're encouraging OS developers to start including it. It really works very well for off-device backups.

Notable UI improvements
Plasma 6.6.7
Discover once again shows Snap versions of apps in the source selector menu rather than as separate apps. (Gabriel Kuznik, KDE Bugzilla #519204)
Plasma 6.8
The clipboard's settings for how to handle copied image data and "MIME actions" are now a lot more comprehensible. (Tomáš Hnyk, KDE Bugzilla #348932, KDE Bugzilla #502274, and KDE Bugzilla #473882)
Changing the volume really quickly no longer causes irritating-sounding popping noises in the volume level preview sounds. (Jeremy Senkiw, plasma-pa MR #424)
On the lock and login screens, clicking the "Show On-Screen Keyboard" button (renamed from "Virtual Keyboard") now always shows the keyboard as you would expect, irrespective of its typical visibility settings. (Kristen McWilliam and Nate Graham, KDE Bugzilla #467209 and plasma-workspace MR #7044)
The Input Method widget has been somewhat similarly overhauled. Now it's primarily used to switch between on-screen keyboard visibility modes, but also lets you manually show the keyboard while an XWayland-using app is focused, because these apps don't have support for making the keyboard appear automatically. (Kristen McWilliam, plasma-workspace MR #6876)
The Kickoff Application Launcher widget is now always big enough by default to fully accommodate all items in its sidebar, rather than sometimes being scrollable - occasionally by even just a few pixels, which was fairly silly. (Christoph Wolk, KDE Bugzilla #515175)
Notifications' speed graphs now have better axis label padding. (Méven Car, plasma-workspace issue #151)

Spectacle no longer shows a weird and misleading message about successfully copying the image to the clipboard after you use the "Share…" feature to share the image elsewhere. (Tobias Fella, spectacle MR #586)
Improved the keyboard navigation behavior of the Digital Clock widget's calendar view. (Christoph Wolk, plasma-workspace MR #6900)
On System Settings' Quick Settings page, the list of frequently-used pages is never just empty; now it shows a default set until you've used the app enough so that it knows what pages you frequently use. (Tobias Fella, KDE Bugzilla #522711)
Changed the percentages shown on the Power & Battery widget to use fixed-width "tabular numerals", so other UI elements don't slightly jump around as the numbers change when using some fonts. (Christoph Wolk, powerdevil MR #674)
If you have multiple panels with System Tray widgets on them, clicking the "Show Notifications" button on the "You missed some notifications" notification now only opens the notification history widget on the first/main panel. (Ameen Al-Asady, plasma-workspace MR #7028)
In the Clipboard widget's history view, the inline buttons for the selected item now only appear when it's hovered or when any of the buttons have keyboard focus. This makes it possible to make the buttons disappear so you can read all of the selected item's text. (Christoph Wolk, KDE Bugzilla #520130)
Reduced a bit of awkwardness in the way you rename audio devices. (Tomáš Hnyk, KDE Bugzilla #508211)
Notable bug fixes
Plasma 6.6.7
Fixed a really weird bug in the Kickoff Application Launcher that could make phantom representations of apps in one category appear in other categories after you scrolled around there for a bit and then switched to the other category. (Christoph Wolk, KDE Bugzilla #515229)
Plasma 6.7.6
Fixed a weird bug that prevented moving focus from the password field of a network shown in the Networks widget back up to the widget's search field. (Christoph Wolk, KDE Bugzilla #525321)
Plasma 6.8
Plasma no longer crashes if you query the wallpaper using D-Bus while the wallpaper settings dialog was open, and then switching wallpaper plugins. (Alperen Yildiz, KDE Bugzilla #525207)
Copying text in LibreOffice apps now adds it to the persistent history every single time, rather than only every other time. (Tomáš Hnyk, KDE Bugzilla #519510)
Middle-click-pasting text that was selected in a non-Qt-based app into a Qt-based app now works every time, rather than every other time. (Tomáš Hnyk, KDE Bugzilla #506325)
Fixed an issue that could make some tool settings in Spectacle's full-screen annotation UI appear off-screen. (Mirko Laruina, KDE Bugzilla #524499)
Fixed an issue that could leave the wallpaper previews in the Activity Switcher sidebar all black, instead of showing the wallpaper. (Nicolas Fella, KDE Bugzilla #378693)
An invalid XWayland configuration file inside /etc/xdg/Xwayland-session.d/ no longer prevents KWin from launching XWayland at all. (Ilya Katsnelson, kwin MR #9894)
Entering and exiting full-screen mode no longer makes Task Manager tasks' "I'm playing audio right now" indicators disappear or get stuck in a partially transparent state. (Christoph Wolk, KDE Bugzilla #522471)
Frameworks 6.31
Fixed a bug that made the "Frames and Outlines Contrast" theme setting not take effect in certain apps where it was expected to work. (Akseli Lahtinen, KDE Bugzilla #525364)
Manually setting your home folder to "Indexed" on System Settings's Search page no longer creates an un-removable clone of that entry. (Nicolas Fella, KDE Bugzilla #487212)
Qt 6.11.1
Fixed a serious QML issue that could make QML-based UIs break with nonsensical property errors. (Fabian Kosmale, Qt bug #149607 and Qt bug #146886)
Notable in performance & technical
Plasma 6.8
KWin has gained support for the commit_timing Wayland protocol. (Xaver Hugl, KDE Bugzilla #513283)
Remote desktop connections now benefit from even lower latency. (David Edmundson, krdp MR #237)
Gear 26.12
System Settings' KDE Wallet page has been ported to QML. (Nicolas Fella, kwalletmanager MR #78)
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.
12 Sep 2026 12:00am GMT
11 Sep 2026
Planet KDE | English
Web Review, Week 2026-37
Let's go for my web review for the week 2026-37.
Making Social Media Social
Tags: tech, fediverse, social-media, community
Interesting approach. When friction to subscription is a good way to really build community.
https://tante.cc/2026/09/10/making-social-media-social/
Automattic CEO Matt Mullenweg Put on 'Leave of Absence'
Tags: tech, blog, wordpress, business
Looks like the drama continues. I wonder where this will land.
https://www.404media.co/wordpress-automattic-ceo-matt-mullenweg-put-on-leave-of-absence/
Doomscrolling ourselves to death
Tags: tech, book, reading, tv, social-media, attention-economy, politics, history
The argument presented is maybe a bit too mechanical for my taste. That said there's indeed something to be said about the decline in literacy and its consequences on our societies.
https://www.edwest.co.uk/p/doomscrolling-ourselves-to-death
Tristan Buckmaster's statement on the Navier-Stokes resolution
Tags: tech, ai, machine-learning, gpt, mathematics, ethics, science
Shows some insights into the kerfuffle around the Navier-Stokes recent resolution. The behavior of OpenAI in this affair is ludicrous. In my opinion this is showing research malpractice… Why care about the scientific method when you have a shot at good PR?
https://cims.nyu.edu/~tristanb/statement.pdf
The function of LLM-based math "proofs"
Tags: tech, ai, machine-learning, gpt, mathematics, research, science
Is it badly conducted research for PR purpose? Who would have expected anything different? I wish we'd fund real science instead…
https://tante.cc/2026/09/07/the-function-of-llm-based-math-proofs/
Soft-deprecating re.match()
Tags: tech, api, python
Interesting way to deal with deprecation in Python. Indeed sometimes it doesn't hurt to keep the not so ideal old name… but you want to push user code to know they miss an opportunity in readability by using the old name.
https://hugovk.dev/blog/2026/soft-deprecating-re.match/
A quick overview of atomics in C
Tags: tech, c, multithreading, atomics
Still need to understand atomics and memory barrier? This is a neat primer.
https://lemire.me/blog/2026/09/09/a-quick-overview-of-atomics-in-c/
Visualizing Rust's Vtables: How dyn Trait Works In Memory
Tags: tech, c++, rust, memory, type-systems
Interesting exploration of how static and dynamic dispatchs work behind the scene in Rust. The chosen tradeoffs are different than in C++ and that's something to keep in mind.
https://sofiabelen.github.io/projects/visualizing-rusts-vtables-how-dyn-trait-works-in-memory/
My HTML Boilerplate
Tags: tech, web, html
There's a lot of important metadata in HTML pages nowadays… and there could be more than proposed here.
https://vale.rocks/posts/html-boilerplate
There's No Limit to How Bad Code Can Get
Tags: tech, software, engineering, quality
Good point. The metaphors we use have obviously some limits. In the case of the "sinking ship" when used for software it doesn't quite work as there's no bottom…
https://zachkehs.com/blog/theres_no_limit_to_how_bad_code_can_get/
On Quality: What It Is and Why Products Get Worse
Tags: production, quality, craftsmanship
Very nice read about quality in general and why it's really hard to define. It also explores how it can degrade over time in existing products.
https://www.worseonpurpose.com/p/on-quality
Degeneracy is a Symptom
Tags: history, economics, politics
Or why it's stupid to judge people on their non virtuous behavior while at the same time fostering the structures which ensure that virtue does not pay. So indeed, some people read the odds properly and act accordingly…
https://henryfudgeofficial.substack.com/p/degeneracy-is-a-symptom
The Last Person to Know the Dictator Is Screwed Is the Dictator
Tags: history, politics
Build a good enough echo chamber and you won't know you're toast before it's too late.
https://thegrimhistorian.substack.com/p/the-last-person-to-know-the-dictator
When Death Was a Relief
Tags: history
Such a wonderful species we are… not. Things can get really nasty when someone starts exploiting beliefs and gains some sort of power. And then, the blame game begins. Unfortunately it regularly happens.
https://m.youtube.com/watch?v=205swuI0JlY
Bye for now!
11 Sep 2026 3:47pm GMT
I just want us to feel something…

So... Koko needed a new icon.
Koko is KDE's image viewer, sharing its name with the rather famous gorilla, and yes, putting a gorilla in the icon would have made perfect sense... but we all love cats, and so did KOKO, so here we are 
And while making this ridiculously cute thing I kept thinking about something that has been bothering me more and more. Hopefully the cuteness of the cat will alleviate the ranty nature of what follows 
Why is so much of what we design today so f...... boring?
We have incredible displays, GPUs doing absurd things, animation engines, shaders, QML, tools I could only dream about 20 years ago... and somehow so much of what we make with all of that looks like the same five rectangles arranged in slightly different ways.
Clean. and forgettable, austere but not in a brutalist way, its.... just booooring .
I've spent quite a bit of time recently bringing bits of old Oxygen back to life, and I know there is a temptation to read that as nostalgia, as if my answer is "look, things were better when we had shiny icons!"
It isn't.
I don't want the future to look like 2008.
In fact I think this sudden fascination with old interfaces, skeuomorphism, Winamp skins, old games, old icons and all the rest is a symptom of something else. People are looking backwards because they miss design having a personality. They miss opening something and actually having a reaction to it.
And now we have AI.
And f'ing..... makes the whole thing even more urgent to me. AI is spectacularly good at producing things that look like things that already exist. And if our design ambition was already reduced to producing safe, familiar, derivative variations of whatever everyone else is doing or that we have done... congratulations, they have automated it,.... and and I can't feel much more from such things... other than plain sadness.
So I don't want us to go backwards. I want us to go somewhere.
Make something NEW!!!
Make something strange. Make something excessive. Make something beautiful, ugly, funny, annoying, charming, stupid, brilliant, probably all of those at once. Make something somebody will hate enough to write a 14 rant bolg post about.
Just please make us feel something.
see you soon in aKademy for more ranting and maybe a beer or 2

Also played with this for the plasma-studio app. I think i can do better
just go do stuf NEW stuf!!!!!!
11 Sep 2026 2:57pm GMT
Kdenlive 26.08.1 released
The first maintenance release of the 26.08 series is out with the usual batch of stability fixes and workflow improvements. Highlights include a big batch of fixes for crashes when changing Timeline Preview settings, deleting sequences, stopping audio recordings, and using ripple editing when the Project Monitor is hidden. This release also fixes Effects Zones not being kept inside the clip boundary and tabs are now readable on theme changes on Windows.
Join us at Akademy

Some of the team members will be in Graz for Akademy, celebrating 30 years of KDE. Also Jean-Baptiste Mardelle will be giving a talk about Kdenlive.
Kdenlive needs your support
Our small team has been working for years to build an intuitive open source video editor that does not track you, does not use your data, and respects your privacy. However, to ensure a proper development requires resources, so please consider a donation if you enjoy using Kdenlive - even small amounts can make a big difference.
For the full changelog continue reading on kdenlive.org.
11 Sep 2026 1:45pm GMT
10 Sep 2026
Planet KDE | English
Akademy-es 2026 ... in a campsite!
Akademy-es 2026 is happening October 23 to 25 in Camping Arco Iris (Villaviciosa de Odón, Madrid)
For the 20th anniversary of the first Akademy-es, the organizers have chosen a campsite to do a slightly different event focusing on the community side of KDE.
There will still be of course talks, so remember you can submit one until this September 13th!
See you there!
10 Sep 2026 8:28pm GMT



OOOOO and OBVIUSLY if you want our sort of Crazy JOIN us in Oxygen, or KDE or anything