Since Akademy 2024, input handling improvements have been one of three KDE Goals with myself as a co-instigator. You may be wondering why you didn't see a series of dedicated blog posts on this topic, which I had hoped to write. Instead of taking accountability for a longer absence from Planet KDE, here's a quick recap of what's noteworthy and exciting right now.
Input improvements in KDE Plasma 6.4
Plasma 6.4 is scheduled to be released on June 17, 2025. The "soft feature freeze" is now in effect, which means we pretty much know which major changes will be included, only polish and bug-fixing work remains. On the input front, you can look forward to some quality of life improvements:
Nicolas Fella added an option to use a graphics drawing tablet in "Mouse" mode, also known as "relative mode". This allows you to use the stylus on your drawing tablet like you would use a finger on a laptop's touchpad.
Joshua Goins keeps updating his Art on Wayland website to keep track of current and past drawing tablet improvements. For this release, the Drawing Tablet settings page will now ask for confirmation after re-calibrating your device. He also added a visualization of pen buttons to the settings page, to make it clear which button you're configuring:
Xaver Hugl added a 3-finger pinch gesture for the desktop zoom accessibility feature, which is in addition to Ctrl+Meta+scroll or Meta-"+" / Meta-"-".
Nicolas Fella also implemented the accessibility feature called MouseKeys on Wayland. This lets you move the mouse pointer using numpad keys, and can be enabled in the Accessibility settings page.
Sebastian Parborg added an option to set "move file" as the default drag & drop behavior. This applies across all KDE software. By default, dropping a file in a different folder will continue to ask if it should be moved, copied or linked.
Christoph Wolk in particular just keeps fixing tons of bugs, including many input handling improvements. He's been tackling keyboard navigation issues, scrolling bugs, mouse hover, pasting, in all kinds of widgets and settings and apps. The list just goes on, here are some links from just the last two or so months: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. (There's more but you get the gist.)
I myself don't have much to show for Plasma 6.4. All my hopes for personally making an impact are staked on future work. I did, however, ask some very nice people if they're open to mentor projects within GSoC 2025. It appears this might pay off.
Pay yourself with your hard-earned retirement income, then work on what you think is most important
Apply for grants from public benefit foundations and corporate initiatives
On that last bullet point, we recently received some nice funding commitments.
Google is perhaps best known for its repeated abuse of market power, getting convicted for huge fines only to do it again in a slightly different form. They also run a program called Google Summer of Code (GSoC), which is more positive. Every year, numerous students receive a stipend to write Free & Open Source code over the summer, to the benefit of organizations like KDE, mentored by existing developers from the community. On May 8, Google announced the accepted projects for this year. KDE was assigned 15 student projects across a variety of apps and infrastructure efforts. One of these is particularly relevant to our Input Goal.
Natalie Clarius and I applied to NLnet following Akademy 2024. Our project would make multi-touch gestures configurable through System Settings, as well as implement stroke gestures (a.k.a. mouse gestures) for Plasma on Wayland. In April this year, NLnet approved this project together with many other open source initiatives. We've seen a lot of user requests for this functionality, so I'm happy to work on upstreaming this functionality going forward. We're currently ramping up our efforts - stay tuned for actual merge requests and UI designs.
What's also great is InputActions by taj-ny, which is a third-party plugin for KWin that provides customization for multi-touch gestures via text file. Its next release should include stroke gesture support as well. I'm glad that my prototype from last year was useful as a starting point for this. Getting code into upstream KWin and System Settings requires a different approach though, so it still makes sense for the NLnet project to go ahead.
NLnet approved a second KDE-related grant in the same batch, for Accessible KDE File Management by diligent Dolphin maintainer Felix Ernst. In addition to targeted improvements for Dolphin, this project will also benefit the KDE-wide Open/Save dialog, as well as settings for editing shortcuts. Felix with prior experience in accessibility and (obviously) Dolphin is ideally suited for this work.
You may be able to get NLnet funding too. Primary requirements:
Expertise in a given area of the KDE codebase that you want to improve.
Patience to sit down and write a detailed project plan.
Flexibility to wait for up to half a year for confirmation.
Note: Like all such foundations, NLnet has some favorite topics including mobile, accessibility, or federated internet infrastructure. If you're interested in this kind of funding for KDE work, feel free to ask me about more details.
Input at the Plasma Sprint
In late April I dropped by at the recent Plasma Sprint 2025 in Graz, which you may have seen in other posts on Planet KDE already. Among many other topics, we briefly discussed the direction of further input-related developments.
Previously, Xuetian Weng (a.k.a. csslayer, the long-term maintainer of the fcitx5 input method framework) proposed a unified way to manage keyboard layout, input methods, and other input related tools. The gist of the proposal is that each input method (IM) would be associated to a keyboard layout in System Settings. In the linked issue, he argues that this is a better fit for Plasma than the approaches of other platforms for configuring language, layout and input methods. I briefly presented Xuetian's proposal at the Sprint and there was a general consensus that this is a sensible way forward.
There was a question about how to deal with devices that don't have a keyboard connected to begin with. We considered some options and compared our thoughts with the actual keyboard hot-plugging behavior of a sprint attendees' Android phone. Same conclusion either way: each connected keyboard should correspond to a separate layout/IM selection, and the absence of a keyboard will likewise correspond to its own input method. Multiple input devices can be supported by switching configurations upon key-press or (dis)connect events. If we can implement this, it should turn out more versatile and still simpler than Plasma's current settings.
We also discussed the virtual keyboard prototype plasma-keyboard and its most important blockers for getting included in Plasma Desktop / Plasma Mobile. It looks like the major concerns have been captured in the issue queue already, so what's needed now is a developer to buckle down and fix them one by one. Also, testing in more languages.
KDE Needs You!
Lots of movement overall. That said, not all of these plans have someone actively working on it. We really do need more hands on deck if we want the Input Goal proposal to be a smashing success. If you are interested to work with the community on input handling, stipend or not, we can help you to help KDE. Drop by in #kde-input:kde.org on Matrix if you need mentorship to guide your contributions, MR reviews to get your patches landed, or any other kind of support.
Here's a small selection of efforts that would really benefit from your development chops:
Test and improve plasma-keyboard so we can ship it with Plasma.
Make Xuetian's proposal for unified keyboard layout and input method settings a reality. This can be split into smaller tasks:
Hello! I’m Azhar, a Computer Science student who loves OSS projects and contributing to KDE. This summer, I’m excited to be working on the Google Summer of Code (GSoC) project at KDE Community to integrate more KDE libraries into OSS-Fuzz.
While KDE already has some libraries integrated into OSS-Fuzz, such as KArchive, KImageFormats, and KCodecs, there are many more libraries that could benefit from this integration. The goal of this project is to expand the coverage of OSS-Fuzz across KDE libraries, making them more secure and reliable.
What is OSS-Fuzz?
OSS-Fuzz is a SaaS by Google to automatically find bugs and vulnerabilities in open-source projects through fuzz testing. Fuzzing involves feeding random or unexpected data into a software to uncover vulnerabilities that might otherwise go unnoticed. OSS-Fuzz continuously runs fuzz tests on the integrated open-source projects, reporting any crashes or issues found. This helps maintainers identify and fix bugs quickly, improving the overall quality of the software.
As of May 2025, OSS-Fuzz has helped identify and fix over 13,000 vulnerabilities and 50,000 bugs across 1,000 projects. Source: OSS-Fuzz GitHub repository
The main goal of this project is to integrate more KDE libraries into OSS-Fuzz. This involves:
Identifying libraries: Analyzing the existing KDE libraries and identifying those that would benefit from OSS-Fuzz integration.
Creating fuzz targets: Writing fuzz targets for the identified libraries. A fuzz target is a specific function or API that will be tested with random data.
Integrating with OSS-Fuzz: Setting up the integration with OSS-Fuzz, including creating Dockerfile and a build script.
Testing and debugging: Running the fuzz tests and debugging any issues that arise during the process.
The objective is to integrate as many as KDE libraries possible into OSS-Fuzz by the end of the GSoC period, thereby enhancing the overall security and reliability of KDE software.
Initial Libraries
The following libraries have been identified for initial integration into OSS-Fuzz:
KFileMetaData
KFileMetaData is a library for reading and writing metadata in files. It supports various file formats, including images, audio, and video files. KFileMetaData is used by Baloo for indexing purposes. This means that many files may be processed by KFileMetaData without the user’s knowledge, making it a critical library to fuzz.
KMime
KMime is a library to assist handling MIME data. It provides classes for parsing MIME messages. KMime is used by various KDE applications, including KMail. This again means that the library may process malformed or unexpected data without the user’s knowledge.
KDE-Thumbnailers
KDE has many thumbnailer libraries, such as KDE-Graphics-Thumbnailers. These libraries are used to generate thumbnails for various file formats, including images, videos, and documents. These thumbnailers are used by Dolphin/KIO to generate previews of files and can be exposed to untrusted data.
Conclusion
Integrating KDE libraries into OSS-Fuzz is an important step towards improving the security and reliability of KDE software. Expanding OSS-Fuzz coverage to more libraries will help KDE maintainers quickly identify and fix bugs before they become problems for users.
KIO (KDE Input/Output) is what allows KDE applications to transparently and asynchronously access files, both local and over the network. It also provides many of the user interfaces for manipulating files, such as the Places panel, Open/Save dialog, folder properties, new file menu, and many more. The other day I went through some of its dialogs and gave them a slight overhaul.
Easily create new folders with a custom icon or color!
When clicking an executable file, it confirms whether to really run it. In case of text-based programs, like shell scripts, it further offers to open it in the default application (usually a text editor). Previously it merely asked “What do you wish to do with this file?”. Now it actually includes the application icon, name, and type of file, to let you make an informed decision. While this might seem redundant, it’s possible that you are launching it from a place other than the file manager where the file might not in fact be just behind the dialog. In my opinion, it also makes it a lot nicer looking.
Including the name of the application that will open the file (e.g. “Open with Kate”, similar to the download finished notification) makes it a lot clearer what button will launch the file and what will just view it. For some reason I’ve always had a hard time picking the right option without thinking about it first – a mere “Open” felt somewhat ambiguous here.
Now it’s much more clear what type of file it is and what you can do with it
The dialog that lets you pick a file name for a new file or folder received similar treatment and now displays the file type icon. It’s a nice visual touch that lets you know what the item you’re about to create is going to look like. More importantly, though, it now offers a selection of folder colors and icons! This way you can assign a custom icon to a folder as you’re creating it. This makes the fact that this is possible a lot more obvious.
It additionally remembers whether you expanded the icon section. If you use the feature, you’ll get it right then and there, and if you don’t, it shouldn’t bother you. It further keeps track of what custom icons you have picked, if any, so that over time the list will contain all the folder icons that you commonly use. We’re also considering to add a context menu entry to quickly assign colors and icons after the fact, implementing a long-standing feature request.
Finally, the Open/Save file dialog provided by the XDG Desktop Portal (typically used by your web browser and Flatpak applications) are properly modal to their parent application. Qt 6.8 brought support for the XDG Dialog protocol that enables windows be marked as modal. However, Qt only used it if the dialog’s parent window was in the same application. I fixed that for the upcoming Qt 6.10 (luckily it’s allowed to mark a dialog as modal without a parent window and then assign one afterwards) but in order to get this issue resolved for our users right now, I adjusted KWindowSystem to use XDG Dialog, too, when running a more contemporary Qt version.
Includes the application icon, if applicable.
Leaving the subject of dialogs, a while ago I added a busy indicator to the Places panel while devices are being (un)mounted. It now also shows while the trash is being emptied, should there be lots of stuff in it that takes a while to get rid of. The Trash widget in Plasma does so, too. While at it, I fixed bringing a running Dolphin instance to the front when clicking the Trash widget placed in a panel.
Last but not least, KIO finally prevents the system from going to sleep while copying or moving files!
Wolthera van Hövell continued to work on text rendering this week. She made the text rendering mode editable, so now it's possible to switch between text rendering optimizing speed, legibility, or geometric precision, and an automatic mode (link). She also fixed a bug where the resource system was slow because font metadata was not erased when removing the font (link).
Maciej Jesionowski improved the performance of the status bar by optimizing a function called in the hot path (link).
Balooii optimized the process of downloading the online resource thumbnails. Kdenlive now downloads the thumbnails in parallel and converts them to pixmaps directly in memory (link). They also sped up audio thumbnail generation by 2.5x (link)!
Balooii also fixed some misalignment of the monitor tools which were caused by some rounding errors (link).
Volker Krause and Carl Schwan worked on the departure page of KTrip, redesigning it completely and fixing a few bugs (link 1, link 2, link 3 and link 4).
James Graham ported the message delegate from QML to C++ to reduce the memory usage of the timeline (link) and reworked the implementation of the hover actions (link).
Salvo Tomaselli optimized the battery usage of Qrca by stopping the camera on mobile devices when the Qrca is in the background (link). He also made Qrca remember the last device used (link).
For a complete overview of what's going on, visit KDE's Planet, where you can find all KDE news unfiltered directly from our contributors.
Get Involved
The KDE organization has become important in the world, and your time and
contributions have helped us get there. As we grow, we're going to need
your support for KDE to become sustainable.
You can help KDE by becoming an active community member and getting involved.
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. There are many things
you can do: you can help hunt and confirm bugs, even maybe solve them;
contribute designs for wallpapers, web pages, icons and app interfaces;
translate messages and menu items into your own language; promote KDE in your
local community; and a ton more things.
You can also help us by donating. Any monetary
contribution, however small, will help us cover operational costs, salaries,
travel expenses for contributors and in general just keep KDE bringing Free
Software to the world.
To get your application mentioned here, please ping us in invent or in Matrix.
My name is Yelsin 'yorisoft' Sepulveda. I'm an engineer with experience in DevOps, Site Reliability, and Cloud Computing. I joined KDE as part of the GSoC application process early last month and have been contributing to a few projects ever since. Miraculously, my GSoC proposal has been selected! Hallelujah! Which means over this summer I'll be working on implementing game controller input recognition into KWin.
About the Project
Currently, applications directly manage controller input, leading to inconsistencies, the inability of the system to recognize controller input for power management, and unintentionally enabling/disabling "lizard mode" in certain controllers. This project proposes a solution to unify game controller input within KWin by capturing controller events, creating a virtual controller emulation layer, and ensuring proper routing of input to applications. This project aims to address the following issues:
System Power Management: KWin lacks controller input recognition, preventing activity reporting and causing premature system sleep.
"Lizard Mode": When KWin opens a file descriptor for certain gaming controller devices (like the Steam Controller and Steam Deck Controller), this disables those controllers' lizard mode (keyboard and mouse input emulation), since the controller detects that a program is now handling input?even if KWin isn't actively using it.
Decentralized Input Handling: Individual application input handling results in inconsistent input parsing and limited remapping capabilities.
Project Goals
The primary goals of this project are to:
Enable KWin to capture and process game controller input events.
Implement a virtual controller emulation layer within KWin.
Route physical controller input 1:1 to emulated devices, including haptics.
Prevent system sleep during active controller use.
Manage "lizard mode" for compatible controllers.
Establish a foundation for future features: global remapping, haptics settings, and advanced Wayland protocols.
About Me
I often spend my time surfing the internet learning new things, spending quality time with family and friends, or picking up new hobbies and skills-such as music! You could say I'm someone who likes to jump between multiple hobbies and interests. As of late, I'm learning a new snare solo and how to build an online brand.
I started my career as a DevOps Engineer and SRE where I learned tools like Jenkins, Docker, and Terraform. I then transitioned to a Solutions Architect role where I worked with many different cloud technologies and helped other companies design their cloud architecture. I am relatively new to contributing to open-source projects but have been an avid user of Linux and open-source tools for over 4 years, and am committed to learning and growing in this community. Check me out on GitHub.
Google Summer of Code (GSoC) is a training/mentorship program that allows new contributors to open source to work on projects for 175 to 350 hours under the guidance of experienced mentors.
KDE will mentor fifteen projects in this year's Google Summer of Code.
Merkuro is a modern groupware suite built using Kirigami and Akonadi. Merkuro provides tools that allow you to manage your contacts, calendars, todos, and soon email messages.
This year, the focus is on making Merkuro more viable on mobile. Pablo will work on removing the QtWidgets dependency from the Akonadi background processes, which will reduce RAM consumption. Shubham Shinde will port some configuration dialogs to QML, making them easier to use on Plasma Mobile. This project will be mentored by Aakarsh MJ, Claudio Cambra, and Carl Schwan.
KDE Linux is a new distribution the KDE Community is developing.
Desh Deepak Kant will work on a new website for the project. Derek Lin will develop a Virtual Machine Manager named Karton, and Akki Singh will port the ISO Image Writer project to QML. These projects will be mentored by Harald Sitter, Tobias Fella, and Nicolas Fella.
Good news for gamers: Yelsin Sepulveda will work on improving game controller support in KWin. This work will be mentored by Jakob Petsovits and Xaver Hugl.
Cantor is a frontend for many mathematical tools and languages.
Nanhao Lv will work on integrating KTextEditor as the default text editor, replacing the current custom editor. Zheng JiaHong will add support for Python virtual environments to the Python backend. These projects are mentored by Alexander Semke and Israel Galadima.
Security
Azhar Momin will work on adding more KDE libraries to OSS-Fuzz to help identify bugs and security issues through fuzzing. This project is mentored by Albert Astals Cid.
Ajay Chauhan will work on enhancing timeline markers by supporting range-based markers while maintaining backward compatibility. This project is mentored by Jean-Baptiste Mardelle.
GCompris is an educational suite containing many activities.
There is work in progress to also include a management GUI for teachers to create custom datasets. Ashutosh Singh will work on implementing the UI to manage several existing activities. Johnny Jazeix and Emmanuel Charruau will mentor this project.
I attended KDE India Conf (conf.kde.in, CKI) 2025 in Gandhinagar, Gujarat. My last and first CKI was in 2020 in Delhi. Had written a blog then.
There was a CKI last year in Pune but I was unable to attend it. So it’s been 5 years. The constant from then and now is Bhushan :)
My talk
Title of the talk was “Learnings from creating an input method for KDE”. My primary desktop environment since 2018 is KDE Plasma. Varnam input method was created to use in KDE. The talk was about the learnings of creating the input method.
The current way to input emoji in KDE Plasma is by copy-pasting the emoji from a window. GNOME has a better emoji input where you could open the emoji suggestions box anywhere you type and directly insert it. Behind the conference, I looked at whether this can be improved.
This is a very core thing to Qt, so it is beyond my expertise. I’m just gonna watch in the sidelines, and meanwhile I’ll survive with copy paste 🙂.
Conference
Like all other free software conferences, I met people who shared the same interests as me, so there was lot to talk about!
Rishi has done an elaborate write up about the conference, so I’m not gonna repeat things. Link to Rishi’s blog.
Rishi had also brought a Steam Deck which was fun to use! A popular mainstream device that comes with GNU/Linux? That has been a dream once. That too gaming!
One thing I have to mention here is Joseph’s talk on End of 10. Windows 10 is about to end its support in 2025 October 14. The newer Windows 11 requires modern hardware. This would mean millions of working devices will end up being unupgradable, and potentially e-waste.
My personal computer from 2010 to 2018 was a 2GB RAM machine. I had to use Linux Mint + XFCE + i3wm to get the maximum out of the system. Windows 8 and 10 was uninstallable in that machine.
There was a BoF on the same, and one major thing about India at least is that “if it works, then don’t touch it”. I’ve seen retail stores using Windows 7 to even Windows XP (A display in Cochin international airport). When they have a working flow, it’s difficult for them to change.
Adobe Pagemaker that was deprecated in 2003 is still being used here. It works because Windows is very good in backwards compatibility. If Windows ever breaks it, maybe they’d upgrade.
My state Kerala already uses GNU/Linux widely across school, government departments etc. School students are usually given a laptop which is low-end hardware that already runs GNU/Linux. No way can these laptops and machine run Windows, even Windows 10.
Next conference
This is the second time CKI has been ogranized in Gandhinagar. I’ve lowkey suggested that maybe Kerala can host it next year 🤞. Last time it happened in Kerala was in 2015, that’s 10 years ago!
A good place to do it would be a university. I’ve been helping organizing Kochi FOSS meetups for the past 2 years. There is definitely audience for the conf, it’s just that where would we do it.