30 Apr 2026
Planet KDE | English
Kirigami forms and configurations
Recently a new submodule has landed in Kirigami: "Forms".
Until this point, Kirigami had only offered the classic "FormLayout" component. which is used for configuration pages throughoug systemsettings, Plasma, and some apps. It's the classical form used in desktop toolkits for decades:

This is a fairly clean layout which however is starting to slowly become outdated, as modern toolkits are starting to use a different layout nowdays, based on "cards"



Unfortunately FormLayout very bound to the classic layout, and it wasn't really possible to adapt it to the new look in a compatible way which didn't break existing applications in unexpected ways.
This is also the reason a new approach was done provided by kirigami addons: "FormCard", which is used by a lot of applications; for instance here in NeoChat:

We wanted to have this new style of forms in the base Kirigami API, so after a review of the existing FormCard, we decided to make several changes, for two main reasons: First, FormCard is bound to the card style of form as much as FormLayout was bound to the classic flat style. Also, it tried to provide ready-made components for every kind of control; so it had its own TextField, its own RadioButton and so on - effectively becoming its own separate toolkit.
So we opted instead to go down the route of having a more generic API, so the Forms module includes containers that define a semantic structure of a form, which contains all the normal controls - such as textfields, checkboxes and radiobuttons.
This is a code example of the new API:
import QtQuick.Controls as QQC
import org.kde.kirigami as Kirigami
Kirigami.Form {
Kirigami.FormGroup {
title: "Global Settings"
Kirigami.FormEntry {
contentItem: QQC.CheckBox {
text: "Show Sidebar"
}
}
Kirigami.FormEntry {
contentItem: QQC.CheckBox {
text: "Auto Save"
}
}
}
Kirigami.FormGroup {
title: "Theme Options"
Kirigami.FormEntry {
title: "Colors:"
contentItem: QQC.CheckBox {
text: "Dark Theme"
}
}
Kirigami.FormSeparator {}
Kirigami.FormEntry {
contentItem: QQC.CheckBox {
text: "High Contrast"
}
}
...
}
}
which will look like this:

Or, in mobile mode:

Semantically, a Form will contain one or more FormGroup objects, each of which will contain one or more FormEntry objects. Then a FormEntry will contain the control which represents the configuration of the particular thing. It can be a single control (like a button or a checkbox) or it can be any layout with completely custom contents.
I already ported 4 modules of systemsettings to the new system: the landing page, the "workspace options" kcm, the mouse settings and the touchpad settings.

But wait… this page looks exactly the same as before; why?
A key was to do an API that was as much as separated from any appearance as possible, as we don't know how UI design trends will evolve in the future. But this also allows us another thing: to have two separate implementations: the new one "card based" and a legacy one which looks exactly like the current FormLayout components. This is used only in systemsettings, so we can port all the kcms without introducing glaring visual inconsistencies, and when we are done, flick the switch and convert the look of everything all in one go.
Since most of KDE's QML applications already use the existing card-style kirigamiaddons FormCard components, the new look will be used there.
And then in the future, when trends change again, we can re-style all the settings pages in one go.
A call to action
We ideally want the whole set of systemsettings kcms to be ported as soon as possible to the new system, so we can have soon a nice visual overhaul in the whole systemsettings.
In order for this to happen, we need the help of everyone, so… patches welcome 
As an example, this is the merge request that ported the first four kcms.
When porting, it's also possible to see how the kcm will look with the new system as well, to make sure it works well for when we flick the switch. If we run in a terminal:
KDE_KIRIGAMI_FORMS_STYLE=cards systemsettings
We get systemsettings using the new style for pages already ported:


Porting from FormLayout to the new Form/FormGroup/FormEntry system should be really straightforward; it should be possible to make good progress in little time.
With your help, soon KDE's settings will benefit from greater consistency, a more modern style, and easier adaptation to future designs.
30 Apr 2026 3:54pm GMT
Qt Contributors Summit 2026: Oslo in October!
KDE & Google Summer of Code 2026

Google Summer of Code (GSoC) is a training/mentorship program that allows new contributors to open source to work on projects for between 175 to 350 hours under the guidance of experienced mentors.
KDE will mentor twelve projects in this year's Google Summer of Code.
Marknote
Marknote is a rich text notebooks organizer.
Prayag Jain aims to introduce a robust and high performance block editor and a proper markdown parser to Marknote under the guidance of Carl Schwan and Mathis Brüchert.
digiKam
digiKam is an advanced open-source digital photo management application which provides a comprehensive set of tools for importing, managing, editing, and sharing photos and raw files.
Srirupa Datta, who already successfully completed a GSoC in 2023 working on Krita, will this year work on digiKam to interface the database search engine to an AI-based LLM. This project is mentored by Gilles Caulier, Michael Miller and Maik Qualmann.
Drawy
Drawy is a recent addition to KDE applications! It is an infinite whiteboard tool useful for brainstorming.
Abdelhadi Wael will improve the text items by implementing rich text handling and other improvements. This project is mentored by Laurent Montel.
Kdenlive
Kdenlive is KDE's video editor.
Yash Bavadiya will work on improving the curves, gradients and time remapping effects. This project is mentored by Jean-Baptiste Mardelle.
Kirigami
Shubham Shinde, a successful participant in last year's GSoC working on Merkuro, will work this year again under the guidance of Carl Schwan to improve the Kirigami framework and the developer experience.
Okular
Okular is KDE's universal document viewer.
Ojas Maheshwari will work under the guidance of Albert Astals Cid to implement font subsetting when saving PDF files in Poppler (the PDF rendering library used by Okular).
Lokalize
Lokalize is the localization tool for KDE software and other free and open source software.
Navya Sai Sadu will improve Lokalize by redesigning the translation memory tab to help with the translators' experience. This project is mentored by Finley Watson.
KStars
KStars is the KDE astronomy software providing an accurate graphical simulation of the night sky, from any location on Earth, at any date and time.
Pavan Kumar S G will add a new AI powered guiding assistant for Ekos under the guidance of Jasem Mutlaq.
KeepSecret
KeepSecret is a password manager for viewing, editing, creating, or deleting passwords.
Roshani Kumari will work on improving the user experience and adding new features such as import/export of passwords, adding a built-in password generator, and much more. This work is mentored by Marco Martin.
Mentorship Portal
Ansh Singhal will work on creating a new join.kde.org website which aims to improve the onboarding experience by centralizing the different entry points the KDE community has. This project is mentored by Anish Tak, who was a successful mentee last year on the same topic!
Plasma Mobile
Tushar Gupta will rework some networking modules (KCM) to make them more mobile friendly. This work will be mentored by Carl Schwan and Devin Lin.
Mankala
Mankala is a two-player board game containing multiple variants.
Sayandeep Dutta will add a new interface to create tournaments for the Mankala game. This project is mentored by Benson Muite and Srisharan V. S. who completed a successful GSoC contributor on the same project last year.
30 Apr 2026 12:00am GMT
28 Apr 2026
Planet KDE | English
Introducing Qt Agentic Development Skills
Today, we are releasing the first set of skills for agentic Qt development, designed to multiply your productivity when writing, documenting, and reviewing Qt code.
If you want to know more about Qt's vision for agentic development and what agentic development for Qt is, then do check out the related article here: Software Insights
![]()
28 Apr 2026 6:04am GMT
27 Apr 2026
Planet KDE | English
What’s new for Fedora Atomic Desktops in Fedora 44
Fedora 44 has been released! 🎉 So let's see what is included in this new release for the Fedora Atomic Desktops variants (Silverblue, Kinoite, Sway Atomic, Budgie Atomic and COSMIC Atomic).
Note: You can also read this post on the Fedora Magazine.
Changes for all Atomic Desktops
Issue tracker moved to the new Fedora forge
We have moved the cross-variants issue tracker to the new Fedora forge. This is the best place to file issues that impacts all variants or to coordinate work between all of them. If you have issues specific to a given desktop environment then we usually prefer to track them in each respective SIG trackers. They are listed on the README for the atomic-desktops organization.
Unified documentation, hosted on the new forge
The unified documentation for all Atomic Desktops is finally live! Unfortunately the translations have not been migrated so we will need help to re-translate everything again, once the translation setup is ready with the new forge. It should be mostly copy/paste from the previous docs and this time we will only have to translate the docs once and not for every (new) variant.
See the tracking issue atomic-desktops#10.
Removal of FUSE version 2 libraries
FUSE version 2 has been deprecated and unmaintained for a while so we have removed it from the images. In practice, this means two things:
- If you are using AppImages, some of them may not work anymore.
- If you are using legacy backends with Plasma Vault on Kinoite, you need to migrate your data.
See the Fedora Change and the tracking issue atomic-desktops#50.
The implications are detailed below.
AppImages and the FUSE 2 libraries
Some AppImages are still using an old AppImage runtime that relies on FUSE 2 libraries being available on the host. See the discussion thread for examples on how to check the runtime of an AppImage.
If some of your AppImages do not work on Fedora Atomic Desktops 44, we recommend:
- Looking for a Flatpak for the application and giving it another try. Consider helping upstream package their application as a Flatpak.
- Reporting the issue upstream so that they are aware that they should use a newer runtime. Consider helping upstream with this as well.
EncFS or CryFS backends for Plasma Vaults are removed
KDE upstream no longer recommend using the EncFS nor CryFS backends for Plasma Vaults, notably because they rely on the FUSE 2 libraries. If you are using one of those backends, you should migrate your data to a new Vault using the only maintained backend (gocryptfs). Ideally this should occur before the update to Fedora 44. If you have already updated to Fedora 44 and need access to your data, you can layer the needed packages (cryfs or fuse-encfs) using rpm-ostree install <package>, then migrate your data and finally reset the layers with rpm-ostree reset.
Dropping compatibility for pkla polkit rules
Support for the legacy pkla polkit rules format has been removed. It is unlikely that you were relying on support for those rules as most of the ecosystem has moved on to the new Javascript based format.
See the Fedora Change and the tracking issue atomic-desktops#102.
What's new in Silverblue
GNOME 50
Fedora Silverblue comes with the latest GNOME 50 release.
For more details about the changes that alongside GNOME 50, see What's new in Fedora Workstation 44 on the Fedora Magazine.
What's new in Kinoite
KDE Plasma 6.6
Fedora Kinoite ships with Plasma 6.6, Frameworks 6.24 and Gear 25.12.
See also What's new in Fedora KDE Plasma Desktop 44 on the Fedora Magazine.
KDE Plasma Login Manager replaces SDDM
The brand new Plasma Login Manager replaces SDDM to provide a more integrated experience with systemd and the KDE Plasma session.
See the Fedora Change.
Unified out of the box experience with KDE Plasma Setup (OEM installation)
Thanks to the new Plasma Setup, it is now possible to install the system with Anaconda with minimal configuration and then complete the installation on the first boot by creating a new user and selecting the timezone. This is great when you want to install Fedora Kinoite on a computer and don't want to setup a user in advance.
See the Fedora Change.
What's new in Sway Atomic
Nothing specific for this release.
What's new in Budgie Atomic
Fedora Budgie Atomic comes with the latest 10.10.2 Budgie release. This release brings Wayland support to Budgie Atomic. See the 10.10 release announcement for more details.
What's new in COSMIC Atomic
Fedora COSMIC Atomic comes with the latest 1.0.8 release of the COSMIC desktop. This is now considered stable.
Universal Blue, Bluefin, Bazzite and Aurora
Our friends in the Universal Blue project (Bazzite, Bluefin, Aurora) have prepared the update to Fedora 44. Look for upcoming announcements in their Discourse.
As always, I heavily recommend checking them out, especially if you feel like some things are missing from the Fedora Atomic Desktops and you depend on them (NVIDIA drivers, extra media codec, out of tree kernel drivers, etc.).
What's next
Helping us with a few nasty bugs
If you are interested in contributing to Fedora Atomic Desktops, here are some bugs that we will have to fix in the short term. We would greatly appreciate help with:
-
Fixing root mount options (atomic-desktops#72): This is a long standing and mostly invisible bug that impacts performance.
-
Moving away from nss-altfiles (atomic-desktops#108): This is another long standing source of issues that new users regularly face.
Sealed Fedora Atomic Desktop bootable container images
Sealed images are now ready for testing! See the other article for all the details.
Roadmap to Bootable Containers
A lot of work is happening to make the transition to Bootable Containers as smooth as possible for our existing users. You can look at the roadmap for this transition at atomic-desktops#26.
One of the tasks is to move away from our unmaintained installation ISO building scripts to the new image-builder tooling. This is planned for Fedora 45 for the ostree variants and support for Bootable Container will follow right after.
Another task is to start building the Fedora Atomic Desktops Bootable Container images using the Fedora Konflux instance.
Where to reach us
We are looking for contributors to help us make the Fedora Atomic Desktops the best experience for Fedora users.
- Atomic Desktops SIG: Organization on Fedora's Forge, #atomic-desktops:fedoraproject.org
- Silverblue: Workstation Working Group, #silverblue:fedoraproject.org
- Kinoite: KDE SIG, #kinoite:fedoraproject.org
- Sway Atomic: Sway SIG, #sway:fedoraproject.org
- Budgie Atomic: Budgie SIG, #budgie:fedoraproject.org
- COSMIC Atomic: COSMIC SIG, #cosmic:fedoraproject.org
27 Apr 2026 10:00pm GMT
Sealed Fedora Atomic Desktop bootable container images
I'm happy to announce that we have sealed bootable container images ready for testing for the Fedora Atomic Desktops!
Note: You can also read this post on the Fedora Magazine.
What are sealed bootable container images?
Sealed bootable container images include all the components needed to create a fully verified boot chain, from the firmware to the operating system composefs image. This relies on Secure Boot and thus only supports system booting with UEFI on x86_64 & aarch64.
The components are:
- systemd-boot as bootloader,
- a Unified Kernel Image (UKI) which includes the Linux kernel, an initrd and the kernel command line,
- a composefs repository with fs-verity enabled. This is managed by bootc.
Both systemd-boot and the UKI are signed for Secure Boot. The images are test images so the components are not signed with the official keys from Fedora.
The main direct benefit that we will get from this support is that we will be able to enable passwordless disk unlocking using the TPM in a way that will be reasonably secure by default.
How do I test those images?
See the instructions at github.com/travier/fedora-atomic-desktops-sealed on how to give the pre-built container and disk images a try and how to build your own.
We welcome testing and feedback! Please see the list of known issues and report new issue at github.com/travier/fedora-atomic-desktops-sealed. We'll redirect them as needed to the right upstream projects.
Beware, those are testing images. The root account does not have a password set and sshd is enabled, by default, to make debugging easier. The UKI and systemd-boot are signed for Secure Boot but, since those are test images, they are not signed with the official keys from Fedora. Don't use those images in production.
Where can I get more details about how this work?
If you want to know more about how sealed images work (i.e. how we make bootable containers, UKI and composefs work together to create a verified boot chain), see the following presentations and documentation:
- "Signed, Sealed, and Delivered", with UKIs and composefs, from Allison and Timothée at FOSDEM 2025
- UKIs and composefs support for Bootable Containers, from Timothée at Devconf.cz 2025
- UKI, composefs and remote attestation for Bootable Containers, from Pragyan, Vitaly and Timothée at ASG 2025
- composefs backend documentation in bootc
Thanks to all the contributors that made this possible, notably (but non exhaustively) from the following projects: bootc & bcvk, composefs & composefs-rs, chunkah, podman & buildah and systemd.
27 Apr 2026 10:00pm GMT
Announcing Sigrún (Run a command)
Some time ago I used a feature in KDE called "Run a command" when an event triggered. It triggered for me when a calendar event fired and used Piper TTS to read the event to me out loud. A small popup and a pling don't work for me.
I tried to get the feature back into KDE, but since the merge request isn't going anywhere and people don't give details how to implement it correctly I wrote Sigrun now. It is named after a Norse Valkyrie and is short for Signal Run.
It is a systemd service running as a user and listening on DBus signals. Once it finds a configured one, it runs its command. The desktop doesn't matter.
Here is the rule that reads my calendar reminders aloud via kde-tts.py:
[[rule]]
name = "calendar-tts"
[rule.event]
type = "notification"
[rule.filter]
app_name = "kalendarac"
summary = "Meeting.*"
[rule.filter.hints]
"x-kde-eventId" = "reminder"
[rule.action]
command = "/usr/local/bin/kde-tts.py"
args = ["-t", "{summary}", "-d", "{body}"]
27 Apr 2026 12:15pm GMT
Kdenlive 26.04.0 released
The Kdenlive team is happy to announce the first major release of 2026. This cycle focuses on stability, interface polish and usability improvements.
For the first time in Kdenlive's history, this version includes features implemented by so many different contributors. Our developer community is growing, don't hesitate to join us building a free and open source video editing program that respects the users privacy and provides a tool to democratize communication.
In case you missed it, check out the State of Kdenlive to learn more about the project's health and the nifty features coming soon.
Monitor Mirroring
This feature allows you to mirror any monitor while working in fullscreen mode. It's especially useful when working with multiple displays or collaborating with others in the editing room, making it easier to share what you're doing without disrupting your workspace.
Effects and Transitions
This release improves effect and transition workflow. We improved the logic for luma files to adapt to different project profiles and automatically reload previews of downloaded lumas. We added a dedicated tab in the transitions list to browse luma files and added the ability to drag-and-drop transitions directly onto timeline clips. This release also comes with a new Euclid Eraser transition and a Heatmap effect. We also fixed issues with audio TAP effects and improved internationalization support, fixed a bug in the Video Noise Generator effect and scaling issues in the Transform effect.
Animated Previews
Transitions now include animated previews, making it much easier to visualize how they will look before applying them. Additionally, dropping a transition onto the timeline can now automatically adjust its duration to match the clips above and below, saving time and reducing manual tweaking. The first version of this feature was originally written by Swastik Patel, during KDE's SoK 2025.
Automatic Adjustment
Transitions automatically adjust to the length of the clip they are being applied to.
Math Expressions
Added basic math expression support in effect spinboxes.
New Heatmap Effect
Added a new frei0r heatmap0r effect.

Interface and Usability Improvements
Timeline
This release comes with many usability and workflow improvements to the timeline, such as a Disable Timeline Effects function to timeline hamburger menu, the ability to import and add clips directly from the timeline context menu with a smart length detection function, and sequences now have audio thumbnails. Other highlights include:
Continuous Panning
Hold the middle mouse button and drag to continuously pan the timeline even when going outside of the screen edges. Implemented by Abdias J Moya Perez.
Fixed Playhead
Added the option to lock the playhead at the center of the timeline during playback, scrubbing or seeking. Implemented by Abdias J Moya Perez.
Playhead/Mouse Zoom
Added a button in the Status Bar to toggle between zooming to the mouse cursor position or the playhead position. Implemented by the mrfantastic.
Multi-Clip Speed Changes
Added the ability to change the playback speed of multiple clips at once either by directly ctrl + dragging in the timeline or by using the Clip Speed tool. Implemented by Vineet Tiwari.
Audio Capture
Improved support for external recording devices, now the channel count and sample rate combo boxes only display values supported by the selected hardware. Also added the option to choose the sample format (8bit, 16bit, 32bit, and float) as well as a button to use the hardware's default settings.

Subtitles and Speech Tools
This release fixes issues with cutting, moving, and saving subtitles, and solves a crash cutting subtitle clips. It also fixes a problem where searching for multiple words in the Speech Editor did not work correctly. We also improved the installation process for the Whisper and SeamlessM4T plugins and updated their requirements.
Other Noteworthy Features
- Added Clear Undo History option in the Edit menu
- Added HD-ready (1366×768) resolution to project profiles
- Added Add to Project Bin option to Render Widget to directly add rendered file to the Project Bin
- Hide mouse cursor when placed over monitor in fullscreen and not moving for 2 seconds
- Added option to edit a video clip with external program (useful for programs like Gyroflow)
- Rearranged Marker menu items into groups and added a Delete All Timeline Markers action
- Ability to directly add clips to folders from the context menu in the Project Bin
- Added AMF encoding profile for Windows
Give back to Kdenlive
Releases are possible thanks to donations by the community. Donate now!
Need help ?
As usual, you will find very useful tips in our documentation website. You can also get help and exchange your ideas in our Kdenlive users Matrix chat room.
Get involved
Kdenlive relies on its community, your help is always welcome. You can contribute by :
- Helping to identify and triage bugs
- Contribute to translating Kdenlive in your language
- Promote Kdenlive in your local community
For the full changelog continue reading on kdenlive.org.
27 Apr 2026 11:30am GMT
25 Apr 2026
Planet KDE | English
This Week in Plasma: fanciness in Discover and more power efficiency
Welcome to a new issue of This Week in Plasma!
This week includes an interesting blend of improvements. Lots of visual stuff, so get ready for a ton of screenshots and screen recordings!
Notable new features
Plasma 6.7
The Kicker Application Menu widget can now be configured to show a "Recent Locations" item. (Christoph Wolk, KDE Bugzilla #420951)

Network connections can now be duplicated. (Kartikeya Tyagi, KDE Bugzilla #499188)

There's now a new "has parent window" window rule you can use to target child dialog windows specifically. (Kai Uwe Broulik, kwin MR #8969)
Notable UI improvements
Plasma 6.6.5
Dragging a search result for a System Settings page to the desktop now creates a launcher to that page as you would expect. This completes a mini-project to improve dragging-and-dropping things to the desktop that we started a while back. (Antti Savolainen, KDE Bugzilla #500259)
Plasma 6.7
Discover now has fancier application page headers with more obvious install buttons! (Oliver Beard, discover MR #1297)
Discover no longer disables the "More Information" button on list items for in-progress updates. (Tobias Fella, KDE Bugzilla #431719)
Discover now does a better job of handling the rare case where an automatic update to a Flatpak app introduces a compatibility issue you can't easily recover from. Now it will warn you about this once instead of continuously. (Tobias Fella, KDE Bugzilla #509760)
You can now drag favorite apps out of their areas in Kicker and Dashboard to un-favorite them. Kickoff is coming soon, too! (Christoph Wolk, plasma-desktop MR #3665 and KDE Bugzilla #518749)
When your laptop is plugged in at maximum charge, doing something that changes the power profile to a non-default one now shows only the power profile icon in the System Tray, and omits the fully-charged battery icon because that part is obvious. (Nate Graham, KDE Bugzilla #518802)
Improved some awkwardly-worded labels in System Settings and Plasma. (Philipp Kiemle, plasma-desktop MR #3674 and plasma-workspace MR #6522)
Frameworks 6.26
Reduced the amount of blurriness seen in icons throughout QtQuick-based apps using the Kirigami.Icon component when using a low fractional scale factor like 150% or less. (Volodymyr Zolotopupov, kirigami MR #2070)
Before:

After:

Added a search provider for startpage.com, so you can search there from KRunner. (Antti Savolainen, KDE Bugzilla #503976)

Notable bug fixes
Plasma 6.6.5
Fixed a case where the Plasma Login Manager could crash when connecting and disconnecting multiple monitors while the login screen is visible. (David Edmundson, KDE Bugzilla #519302)
Fixed some cases where Plasma could crash at login. (David Edmundson, plasma-workspace MR #6520)
Fixed multiple accessibility issues: key repeat not working in the Orca screen reader, and various UI elements not being read properly. (Nicolas Fella, KDE Bugzilla #519143, KDE Bugzilla #519333, and KDE Bugzilla #519217)
Fixed a tricky issue in Spectacle that could make large images fail to automatically copy to the clipboard right after the app exits. (David Edmundson, KDE Bugzilla #509065)
Fixed another cause of the issue whereby de-focused full-screen windows could sometimes inappropriately appear at the top of the window stack. (Xaver Hugl, KDE Bugzilla #484155)
Fixed a layout glitch on System Settings' Colors page that could make UI elements in the color previews overflow when using some non-default fonts and font sizes. (Akseli Lahtinen, KDE Bugzilla #516413)
Changing the brightness or any screen settings no longer terminates Spectacle's sectangular region recordings. (Xaver Hugl, kwin MR #9127)
Frameworks 6.26
Fixed some visual glitches around radio buttons in the Audio Volume widget. (David Edmundson, ksvg MR #103)
Notable in performance & technical
Plasma 6.6.5
Fixed an issue that made System Settings' Touchscreen page appear while the "highlight changed settings" feature is enabled even if you don't have a touchscreen. (Jin Liu, KDE Bugzilla #518868)
Plasma 6.7
Turned on the "overlay planes" feature for Intel GPUs, which should improve performance and save some energy when using cooperative games and apps. (Xaver Hugl, kwin MR #8699)
Improved power efficiency for full-screen windows and effects that don't gain any benefit from using the "direct scan-out" feature; now they'll only use it if it will save power. (Xaver Hugl, kwin MR #9120)
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.
25 Apr 2026 12:00am GMT
24 Apr 2026
Planet KDE | English
Automatic brightness in Plasma
As an exception to my usual posts, this time I'll write about a feature that's already released. Since Plasma 6.6, you can enable automatic brightness in the display settings… let's take a look at how it works, and why it took so long to make it happen.
The hardware
This is where the problems start - most laptops unfortunately don't come with a brightness sensor, and there's effectively no monitors that have a built-in sensor either (let alone one that can be accessed by the connected PC).
While it's possible to buy or build a brightness sensor that connects via USB, brightness control for external monitors usually has limitations in how often we can safely adjust the brightness… So for quite some time, there was noone working on Plasma that had the combination of hardware, motivation and knowledge to do something about it.
Luckily, the Framework Laptop 13 comes with a brightness sensor, so on the hardware side I was all set:

The software
Making automatic brightness do something is easy, but making it work well enough that you actually want to use it is a very different story.
My first approach was to assume brightness of the display should scale linearly with environmental brightness. I tried this, and it was sort of usable, but just not good enough. There's three problems with it:
- the brightness setting sadly does not linearly control display luminance. 0% is generally not "off", and sometimes firmware or drivers make the curve non-linear to make the brightness more "intuitive"
- in order for automatic brightness to be easy to use, we can't expect the end user to configure an equation for their system. We need to automatically detect what they're doing, and configuring two parameters based off one brightness slider is a challenge
- the best brightness curve isn't necessarily linear. Depending on your personal preferences and how reflective your display is, you might want to keep brightness a lot higher in bright environments than in dark ones, or vice versa.
So a different approach was needed. I looked a bit at other operating systems for inspiration, and from the UX side I definitely wanted to copy Android: You use the brightness slider however you want, and the system should try to replicate what you do on its own. On the implemtation side however, I only saw claims that it uses machine learning, so that wasn't exactly helpful.
Ultimately, what I settled on is pretty simple: We just store 6 sensor values, one per 20% brightness step. When processing sensor readings, KWin finds the matching brightness setting by linearly interpolating between the two closest sensor values.

When the user touches the brightness slider or uses the brightness shortcuts, KWin adjusts the curve so the current sensor value will result in that desired brightness setting. At first, I only made it adjust the two closest points and enforce the rest of the curve to be monotonic, but it ended up causing problems:

With this configuration, any sensor readings above 100 lux - for example, 101 - resulted in 100% brightness. To fix that, we now enforce a minimum difference of at least 1 lux or 10% between control points, so the curve above would look more like

To ensure the curve would always stay strictly monotonic and so you can have an arbitrary backlight setting at zero lux, values below zero also had to be allowed when updating the curve with those constraints.
However, I was still not done. While it now followed my preferences pretty well, it was still annoying! Especially if you sit in between a light source and the laptop, or if you sit on a train with trees around the tracks (like I recently did, traveling to and from Graz for a Plasma sprint), the brightness constantly fluctuated up and down.
To make it less annoying, I added some more adjustments on top:
- some hysteresis. As long as the sensor reports ±10% of the last value, KWin should do nothing
- a time delay before changes get applied. If after two seconds the sensor value is back in that 10% range, the brightness stays unchanged
- a much slower animation for reducing display brightness (but not that much slower for increasing it)
This is how it was released in Plasma 6.6, and I'm pretty happy with it on both the Framework 13 and on my OnePlus 6 with Plasma mobile.
What now?
Just because I'm happy with it, doesn't mean it's done. If you're using automatic brightness and it's still annoying you for some reason, please tell me about it! If you're really happy with it, I won't complain about being told that either of course ;)
To fully catch up to what phones have done for years though, one feature is still missing: I'd like to adjust not just the brightness, but also the white point of the display to the environment. Unfortunately, none of my devices have a sensor for that… but since the camera module in the Framework 13 is easy to replace, I hope that changes one day!
24 Apr 2026 7:30pm GMT
Qt No Contextless Connect
As many long running projects, Qt too over the years has accumulated some APIs that in hindsight are deemed unsafe or sub-optimal. For example, Qt by default implicitly converts const char* to QString. While that usually only incurs a runtime overhead, maybe encoding problems, but also admittedly less cluttered code, there's other APIs that can backfire in more subtle ways. One such API is doing a "context-less connect".
Signals and Slots are a core principle of Qt that make it super easy to connect one object to another and keep a certain separation of concerns. The typical syntax to establish an connection is:
connect(sender, &Foo::somethingHappened, receiver, &Bar::doStuff);
This connects the signal somethingHappened in our sender of Type Foo to the member function doStuff in our receiver (context object) of type Bar. Whenever sender "emits" somethingHappened, doStuff on receiver will be called. The neat part about Qt connections is that when receiver gets destroyed, the connection is severed automatically. However, you can not just connect a signal to a member function but also use a lambda:
connect(job, &WallpaperFinder::wallpaperFound, [this](const QString &path) {
m_wallpapers << path;
});
In our hypothetical wallpaper selector when the "job" that goes looking for wallpapers found one, it emits a signal and tells us the path of the file, so we can show it to the user. Now what happens when the user closes the dialog (which then gets destroyed) before the job has finished? Well… job still emits the signal which then results in our lambda being called. And then we try to access m_wallpapers on this which is long gone. Boom!
The fix is easy: provide a "context object", too, just like you would with pointer to member function:
connect(job, &WallpaperFinder::wallpaperFound, this, [this](const QString &path) {
m_wallpapers << path;
});
If this gets destroyed, the connection is severed, our lambda will no longer be called and all is well. The receiver object also decides what thread the slot is called, i.e. it will be called in the thread the receivers "lives in". Context-less connections are always of DirectConnection type. Since Qt 6.7 you can actually enforce the use of a context object by defining QT_NO_CONTEXTLESS_CONNECT.
add_definitions(-DQT_NO_CONTEXTLESS_CONNECT)
It requires you think about the lifetime of your objects more and make a conscious decision about what your context object is. It also removes one thing to look out for in code review. I started adding this option to a couple KDE repositories to improve the quality of our code and I encourage you to do that, too! It probably comes to no surprise that in general, the bigger and older a repository, the higher the probability of it using non-ideal code.
What context object to use?
Of course, the situation is not always as simple as our example above. Here's a few tips and tricks:
- Look at the lambda captures. If you capture this, chances are, you want this as your context object.
- If you capture a single object, perhaps you want it as your context object rather than this. If you use the sender, too, that's fine, capture them both:
connect(job, &Job::finished, manager, [job, manager] {
manager->report(job);
});
When the sender gets destroyed, evidently the connection is useless and will be severed. - You can try to avoid capturing this by doing an init capture, i.e.
[foo = m_foo] { ... } - Perhaps you don't even need a lambda and can just connect to the method directly. Lambdas are so ubiquitous that you tend to forget you could just replace
connect(job, &Job::finished, [timer] {
timer->start();
});
with:
connect(job, &Job::finished, timer, &QTimer::start); - At last, you may also use the sender as context object.
- A context object must be a QObject, though. If you don't have one, you'll have to find another way. For instance, QObject::connect returns a QMetaObject::Connection object that you can store in a member variable and then disconnect when appropriate, like in your destructor.
- For connections where it doesn't really matter qApp can also be an option.
I'm a huge fan of QT_ENABLE_STRICT_MODE_UP_TO that lets you turn on most strictness features in a single shot. The biggest hurdle of rolling that out more widespread in KDE repositories is actually the Java-style iterators. Qt hates them, many use them, particularly for mutating a container, and imho they're much more pleasing to look at than STL algorithms. If you start a new project, however, do consider setting your baseline to be as strict as it can be!
24 Apr 2026 1:49pm GMT
Web Review, Week 2026-17
I'll be vacationing a bit, so there will be no web review next week. It means the next one might be a double issue though, we'll see.
Anyway, let's go for my web review for the week 2026-17.
Inside GitHub's Fake Star Economy
Tags: tech, social-media, github, scam
People are manipulating vanity metrics to attract VC money? Who would have expected? This is so unsurprising, I don't even understand why people look at those…
https://awesomeagents.ai/news/github-fake-stars-investigation/
Anthropic's Claude Mythos Launch Is Built on Misinformation
Tags: tech, ai, machine-learning, gpt, copilot, security, hype
More in depth look at the launch white paper and the issues covered in the PR. Not much survives scrutiny… there's nothing special with this model.
https://www.artificialintelligencemadesimple.com/p/anthropics-claude-mythos-launch-is
AI adoption will accelerate the e-waste crisis
Tags: tech, hardware, ai, machine-learning, gpt, ecology
One of the dark sides of our industry, and this is is accelerating at a worrying pace. Maybe it's time to look at and fix the whole hardware life cycle?
https://restofworld.org/2026/global-ewaste-crisis/
LLM pricing has never made sense
Tags: tech, ai, machine-learning, gpt, copilot, business
Indeed, and it's going to get even crazier at some point. I guess somewhat soon but who knows…
https://anderegg.ca/2026/04/22/llm-pricing-has-never-made-sense?ref=bubbles.town
Highlights from Git 2.54
Tags: tech, git, version-control, tools
Nice quality of life improvements for the history rewrites. That said, I'm particularly looking forward to the changes in hooks handling, it's always been a pain to deal with in teams, moving them to config should help.
https://github.blog/open-source/git/highlights-from-git-2-54/
Forge
Tags: tech, git, version-control, command-line, tools
A single CLI tool for any Git forge? This sounds appealing.
https://nesbitt.io/2026/03/13/forge.html
How Hard Is It To Open a File?
Tags: tech, unix, posix, filesystem, security, flatpak
A reminder that path based APIs and security don't go well together to manage files.
https://blog.sebastianwick.net/posts/how-hard-is-it-to-open-a-file/
Game Devs Explain The Tricks Involved With Letting You Pause
Tags: tech, game, time
Pausing a game is not as simple as it sounds. There are many approaches to it.
https://kotaku.com/video-game-devs-explain-how-pausing-works-and-sometimes-it-gets-weird-2000686339
What Async Promised and What it Delivered
Tags: tech, asynchronous, complexity
Interesting piece which gives some perspective on the path which led to async/await. It seems to omit some pieces of the history to me but that's a minor issue. I like how it points that it indeed led to gradual improvements locally for developers writing their functions, but is overall leading to larger issues in the involved ecosystems.
https://causality.blog/essays/what-async-promised/
Box to save memory
Tags: tech, rust, memory
Indeed, the memory layout of your structs can matter. Be it Rust or not, but in the case of Rust the use of Option might give the wrong feel about the resulting layout.
https://dystroy.org/blog/box-to-save-memory/
Lenses in Rust and My Solution
Tags: tech, rust, memory, type-systems
Finer grained borrowing is still something people need in Rust. Here is a potential solution to get them today.
https://lambdalemon.gay/posts/grist-lens
A Field Guide to Bugs
Tags: tech, debugging, funny, satire
OK, I find it funny. That said, there's a kernel of truth in this piece: there's clearly a taxonomy of bugs and you better know on what you just stepped.
https://www.stephendiehl.com/posts/field_guide_to_bugs/
"What's In It For Me" Architecture
Tags: tech, architecture, organisation
Indeed, architecture work is not only technical (what is really?). You definitely need to account for the organisation and the process to actually put the architecture in place. It's not just about having pretty pictures.
https://frederickvanbrabant.com/blog/2026-04-04-whats-in-it-for-me-architecture/
Good architecture shouldn't need a carrot or a stick
Tags: tech, architecture, organisation
Architecture work is not only technical, you need processes to put the architecture of a project in place. That said, you can make things easier with standards to smooth the path toward the preferred types of architectures in your organisation.
https://frederickvanbrabant.com/blog/2026-04-17-good-architecture-shouldnt-need-a-carrot-or-a-stick/
In defence of bureaucracy
Tags: tech, engineering, organisation, management, bureaucracy
Clearly, any endeavour which has to scale will need some form of bureaucracy to stay afloat. The art is keeping it to a minimal before it starts to be an end in itself.
https://blog.ploeh.dk/2026/04/20/in-defence-of-bureaucracy/
How to Use One of the Most Valuable Management Tools: Active Listening
Tags: management, organisation, delegation, communication
Interesting insights, or how listening helps finding risk or making sure delegation will go well. It's indeed also a good illustration that story telling works often betterthan explaining abstract concepts.
An asteroid extinguished all the dinosaurs except for birds. Here's why
Tags: history, biology, science
And this is why… we now have chickens. More seriously it's a true testament to genetic and behavioral diversity. This is clearly what allowed some species to escape the disaster.
How do we deal with the catastrophe of uninsurability?
Tags: ecology, economics, politics
The insurances are starting to crumble under the risks. Looks like it's time to do something about it.
https://aeon.co/essays/how-do-we-deal-with-the-catastrophe-of-uninsurability
The commodification of travel
Tags: travel, culture, social-media
Yes, I'm definitely bummed by this behavior as well. Best travel is when you take your time and enjoy the place, definitely not running around to take pictures for vanity reasons.
https://herman.bearblog.dev/the-commodification-of-travel/
re: The commodification of travel
Tags: travel, culture, social-media
Another one on the commodification of travel, it exemplifies what real travel is.
https://thatalexguy.dev/re-the-commodification-of-travel?ref=bubbles.town
Bye for now! See you in two weeks.
24 Apr 2026 1:16pm GMT
Speaking at Chennai FOSS: GUI Design, QT, SOK and a lot more
Chennai FOSS 2026
Earlier this month, on 18th April 2026, I had the incredible opportunity to speak at Chennai FOSS 2026, an event organized by FOSS United. If you aren't familiar with them, FOSS United is a non-profit foundation dedicated to promoting the Free and Open Source Software ecosystem in India.
About my talk
My talk, titled "Getting started with GUI Design and Music Generation using Qt and C++," was a reflection of my recent contributions to the Season of KDE 2026.
The session shares how I, personally, as a new developer, found my way across one of my favorite projects, Mankala Engine, and started contributing in the Season of KDE 2026. I had shared my work from the Season of KDE, which included updating the GUI using C++ and QML, and also implementing elements like sounds and physics using QT. How developers can make contributions using Kirigami and other QT modules of KDE.
Most contributions are not limited to code, and I also shared the artworks I created for Mankala Engine, as well as my experience being part of Season of KDE 2026.
Here is my session PDF:
I don't like too much text, my session was mostly a live demo :)
Apart from learning about many new topics, which proved helpful to me, I also got the chance to network with other projects and contributors.
Thanks for reading 🚀
References & useful resources
- https://fossunited.org/c/chennai/2026/cfp/bgvph0j635 - Link to my proposal at Chennai FOSS
- https://fossunited.org/c/chennai/2026 - Chennai FOSS 2026
24 Apr 2026 4:03am GMT
Kubuntu Resolute Raccoon 26.04 release with bonus snaps
Kubuntu 26.04 LTS Resolute Raccoon is officially released, plus a fresh batch of KDE application snaps land in stable.
24 Apr 2026 12:00am GMT
23 Apr 2026
Planet KDE | English
KDE email, part two: use an email client
One of the many benefits of going to in-person sprints is you get to see how other people use their computers, and you can learn some workflow tricks from them. Or, you might notice areas of inefficiency and share tips of your own.
This post will be about the latter, on the subject of email.
Because during the sprint, I observed multiple people using email on their laptops in ways that are slow or ineffective:
- Logging into webmail in a web browser
- Switching between multiple webmail sites to manage multiple email accounts
- Clicking on buttons in the webmail UI to delete or reply to messages
If you recognize yourself here, there's a better way, I promise.
And I'd like to help you achieve it!
Back in 2024, I wrote about my email workflow and offered some general tips for managing email overload in KDE. I'm going to write more in depth about this topic, today starting with…
Use an email client app.
KDE has one: KMail. If it works well for you, use it! If it doesn't, use Thunderbird instead, it's fine. Don't feel guilty for not using a piece of KDE software. Nobody's gonna excommunicate you from KDE! I'm officially giving you permission.
Maybe you use an email client on your desktop but haven't set one up on your travel laptop yet? Well, it's time!
Because the important part is to consistently use an email client app of some sort. Why?
Way better for multiple accounts
Most of us have 2 or more email accounts. With webmail, this becomes a pain that scales linearly with the number of accounts.
With an email client app, you can manage multiple accounts' worth of emails in one UI. When all your accounts are managed from one app, your brain doesn't need to learn and remember multiple UIs, and and opening new email accounts doesn't scale the mental burden at all.
Faster to use
An email client app lets you interact with emails using learnable and consistent keyboard shortcuts. Processing emails this way is super fast, so you can get done quickly and go back to something useful. Email sucks; life's too short to waste time on it.
Easier to access
You can access the email client app easily using the Task Switcher, Overview, or Alt+Tab, rather than letting those webmail tabs get buried among your 75 normal browser tabs and 10 pinned tabs.
Easier to leave email mode
Quit the email client app when you want to stop receiving emails.
For webmail, you're tempted to leave it open in a tab forever, which means to avoid being constantly tortured with email notification, you'll have to turn them off entirely, so you stop noticing emails when they arrive. This is problematic for the "keep my email open all day" approach where the whole point is being able to action new emails immediately so they don't pile up.
Using an app that can be turned off also facilitates being a "check email once a day" kind of person, if that's your jam. Open the app, check your email, action the important ones, delete or archive all of them, then close the app. You can carve out 5-20 minutes for email, be free of email for the rest of the day, and still keep on top of everything!
Using good tools is enjoyable
Imagine trying to manage versions or debug code without git or gdb. It would take ages and the results wouldn't be as good. Proficiency with these tools makes you feel like a bird soaring above the clouds or a wizard effortlessly wielding powerful magic, not some clod stumbling around in the mud.
Email clients are the same way. Learn powerful tools to bolster your professional skills and feel better about the process of participating in KDE, not just the outcomes.
The Thunderbird email client is the foundation of my email system. In conjunction with other techniques - which I briefly described in the earlier post and will flesh out in more detail over the coming weeks - this is currently my email situation:

Those are all of my emails across 5 accounts. Here are just my KDE emails:

As you can see, this is completely manageable. It takes practically no effort to keep it this way, and there's no feeling of dread when checking emails in the morning. If you're drowning in email, you can get here too, I promise.
It starts with using an email client. If you aren't regularly using one yet, it will take some up-front work, and some re-training, but it's worth it: you'll spend less time and mental resources on email and more of it on what actually matters - without taking the easy path of neglecting email and being perceived as a person who's hard to contact or unreliable.
So get started today with KMail or Thunderbird!
23 Apr 2026 9:53pm GMT
Qt Creator 19.0.1 released
We are happy to announce the release of Qt Creator 19.0.1!
This release of Qt Creator fixes various issues, including but not limited to
![]()
23 Apr 2026 10:39am GMT

