Over the years, the capabilities of QtQuick's TableView have evolved dramatically-from early custom implementations to well supported feature in Qt 6.8 and newer. In this article we explore the progression of QtQuick/QML's TableView, outline the limitations of early versions, and highlight newer features such as custom selection modes, header synchronization, and lightweight editing delegates. Check it out.
I’m thrilled to announce that I’ll be participating in Google Summer of Code 2025 with the KDE community and my mentors Claudio Cambra, Carl Schwan and Aakarsh MJ!
This summer, I’ll be working on the Merkuro suite with a focus on a project called Merkuro – Porting Away from QtWidgets.
The Challenge: Why Merkuro Needs to Slim Down
Merkuro is a KDE application suite, aiming to provide a seamless experience for email, calendaring, and contacts. At its core, it leverages Akonadi, KDE’s powerful PIM data storage framework.
Currently, many Akonadi agents and resources (the components that fetch and manage your data from various services) load their configuration dialogs using QtWidgets. While QtWidgets is a robust UI toolkit, it’s also quite “heavy.” This means these components, by default, include substantial UI code, leading to:
Increased Memory Footprint: Each agent/resource can consume an extra 15-20 MiB of RAM just by including these UI elements, even when they’re not actively being configured.
Performance Hindrance on Mobile: For Merkuro to truly shine on mobile devices, where resources are often constrained, this overhead is a significant bottleneck.
The goal is to make Merkuro lean, efficient, and perfectly suited for both desktop and mobile environments.
My Objective: Decoupling UI for a Lighter Future
The primary goal of my GSoC project is to refactor these Akonadi agents and resources by decoupling their configuration dialogs from their underlying logic.
The plan is as follows:
Separate UI from Logic: I’ll move the QtWidgets-based configuration dialogs out of the core agent/resource code.
Dynamically Loaded Plugins: These UI dialogs will become separate, dynamically loaded plugins. This means the core agent/resource can run without loading any UI code unless a host application (like Merkuro or KMail’s settings) specifically requests the configuration interface.
Reduced Dependencies: By doing this, we can remove heavy QtWidgets header file inclusions from the core components. For example, we can switch from QApplication (which pulls in all of QtWidgets) to the much lighter QCoreApplication for the agent’s primary functionality.
This separation not only brings immediate benefits in terms of memory and performance but also lays crucial groundwork for the next big step: modernizing the user interface by transitioning to QtQuick/QML. With a clear segregation, future efforts can focus on building sleek, modern QtQuick UIs without wrestling with embedded QtWidgets code.
Key Deliverables: What I’ll Be Working On
Over the summer, I’ll be focusing on several key areas:
Refactoring Core Components:
Targeting specific Akonadi agents in KMail (like archivemail, mailfilter, sendlater agents) and resources in the KDE PIM Runtime (like pop3, imap, google, ews resources).
The main task here is to strip out embedded QtWidgets dependencies from their primary functionality.
Modifying Build Configurations: Updating CMake files to reflect these changes, ensuring unnecessary UI files are not compiled into the core components, and reducing overall dependencies.
Creating Dedicated Configuration Plugins:
Implementing plugin factory classes (conforming to Akonadi::AgentConfigurationBase and Akonadi::AgentConfigurationFactoryBase interfaces). This ensures that host applications can dynamically discover and load these new UI plugins.
Providing accurate metadata (via JSON files) for each plugin to integrate smoothly with the existing Akonadi framework.
Testing and Documentation: Rigorously testing all changes to verify the memory usage reduction and ensure the new plugin-based system works flawlessly on both desktop and mobile. I’ll also be documenting the changes for future developers.
It happened in Munich in the SHOWPALAST MÜNCHEN. The venue is HUGE, we had around 800 attendees (unofficial sources, don't trust the number too much) and it felt it could hold more. One slightly unfortunate thing is that it was a bit cold (temperatures in Munich these two days were well below the average for May) and quite some parts of the venue are outdoors, but you can't control the weather, so not much to "fix" here.
The venue is somewhat strangely focused on horses, but that's nothing more than an interesting quirk.
Qt World Summit is an event for the Qt developers around the world and the talks range from showcases of Qt in different products, to technical talks about how to improve performance along others less Qt centric talks about how to collaborate with other developers or about "modern C++".
As KDE we participated in the event with a stand trying to explain people what we do (David Redondo and Nicolas Fella were more in the stand than me, kudos to them)
For following years we may need to re-think a bit better our story for this event since I feel that "we do a Linux desktop and Free Software applications using Qt" is not really what Qt developers really care about, we maybe should focus more on "You can learn Qt in KDE, join us!" and "We have lots Free [Software] Qt libraries you can use!".
Talks for the videos will be published "soon" (or so I've been told). When that happens the ones I recommend you to watch are "Navigating Code Collaboration" by LAURA SAVINO, "QML Bindings in Qt6" by ULF HERMANN and "C++ as a 21st Century Language" by BJARNE STROUSTRUP, but the agenda was packed with talks so make sure to check the videos since probably your tastes and mine don't 100% align.
All in all it was a great event, it is good to see that Qt is doing well since we use it for the base of almost everything we do in KDE. Thanks to The Qt Company and the rest of the sponsors for organizing it.
It has been quite a long time since I attended any KDE sprint, last sprint for me was Plasma Sprint in Valencia, Spain before pandemic and personal life got in a way. Last month I had chance to attend Plasma Sprint 2025 in Graz, Austria. This was good opportunity for me to meet some of long time contributors to Plasma Mobile like Devin Lin and Luis, as well as other Plasma contributors to discuss some of technical details about my upcoming power management work.
I'll soon start my second project supported by NLnet and the European Commission. For the first one I spent way too much time figuring out if I need to pay taxes on the funding I receive. At least value added tax does not apply! However, German tax law is not clear about income tax from what I can tell, and even writing a petition to the federal ministry of finance to clear things up still leaves me with most of the uncertainty. In any case, I did not need to pay income tax on the funding the first time around. Who knows if it will stay this way?
I don't want to translate German legalese into English.
If you can't read German, that's a bit of a cliffhanger now, isn't it? Well, sorry about that. However, you might want to cherish the fact that you probably don't need to deal with German tax law! Also consider that it is probably better for your sanity anyway if you don't spend your time learning about taxation in other countries. It's not a good conversation starter, trust me.
Volker Krause automated the generation of static builds of the library powering Itinerary. This allows to simplify the deployement of Itinerary on servers like for Nextcloud Mail integration or the online extractor.
Grzegorz Mu expanded the documentation for writing ticket extractors (link). Writing an extractor is quite easy and only requires some knowledge of JavaScript, so checkout the new documentation and integrate the tickets from your local transport company!
Joshua Goins redesigned the notification view to be more compact (25.08.0. link).
Joshua also ported the navigation over to KirigamiAddons.StatefulApplication which means the different pages can now be accessed by the command popup (Ctrl+Shift+I) and can be assigned to a shortcut (25.08.0. link).
The toolbar button for view mode changing has become more powerful: Jin Liu added all the view-related actions to its dropdown menu, so this button that lies to the left of the location bar is now your one-stop shop for changing the file display of the main view. (25.08. Link)
Kai Uwe Broulik reworked the new files dialog used in Dolphin and other KIO based applications to now include the icon of the new file or folder (KF 6.14.0, link).
Andreas Cord-Landwehr replaced the custom About dialog with the standard Kirigami About dialog (link). Journald Browser also adopted KirigamiAddons.StatefulApplication.
Utilities
Krfb Share your desktop to another computer via VNC
Wendi Gan added support for UTF-8 clipboard in Krfb and Krdc (25.08.0. link 1 and link 2). This means non-European alphabets are now supported!
Krzysztof Nowicki added support for Microsoft's InTune enterprise authentification service to Akonadi's Exchange support (25.08.0. link).
Kiên Hồ added support for displaying holidays in Vietman (KF 6.14.0, link 1 and link 2).
KOrganizer KOrganizer is a calendar and scheduling application
Allen Winter continued polishing KOrganizer. This week the todo view state is now fully saved and restored across sessions (25.08.0, link), the wording of some tooltips was improved (25.08.0, link) and a crash was fixed (25.04.1. 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.
I have also updated jOBS, a Java-based Open Build Service library and developed a basic GUI for it, OBS FX; it is a JavaFX-based OBS client with a green touch
Kdenlive brings you all you need to edit and put together your own movies. We had 1 project for KDE's full-featured video editor:
Swastik Patel animated transition previews in Kdenlive by extending the TransitionListWidget with a dual-view system (tree/icon) and creating a custom TransitionIconDelegate for rendering GIF previews. The core functionality is powered by a Python script that leverages MLT to generate standardized preview GIFs by applying transitions between colored clips or custom images. The implementation integrates with Kdenlive's existing asset management system, utilizing QStandardPaths for preview storage and QMovie for GIF playback. The UI updates are triggered through signal connections when frames change, providing real-time preview updates in the transitions panel. This enhancement allows users to visually evaluate transitions before applying them to their projects. All the code changes are in this merge request.
There are 4 new projects related to the KDE Eco project. This helps make KDE software more efficient and environmentally friendly, as well as more accessible at the same time:
Anish Tak worked on a new tool, Win2KDE-Chooser project to help users migrate from Windows to Linux by recommending KDE-based distributions. A questionnaire was designed to understand the user's needs, mapping their responses to distribution parameters like ease of installation, hardware support, and community backing.
Further, a recommendation engine was implemented in the backend to rank distributions according to user preferences and hardware specifications.
Overall, a functional MVP was created that suggests suitable KDE-based Linux distributions based on users' needs and hardware capabilities.
Oreoluwa Oluwasina built a new GUI for the emulation tool KdeGuiTest formerly known as KdeEcoTest with features that allows users to easily create and run a standard usage scenario script. Button commands that records the actions made by a user have been implemented and they display real time in the action buffer widget. The scripts can be modified in the final script widget to finalise each script before saving it in a text file. A combo box has been implemented to toggle to the run script interface where users can select and run final scripts. Additionally, a "Platform supported" error was encountered and fixed by installing a custom pynput package and other packages like Rust.
Roopa Dharshini worked on writing technical documentation for the KEcoLab project. After a detailed exploration on the KEcoLab project, an outline was crafted. This mentorship program taught valuable practical experience in team collaboration and in thinking of approaching various possible solutions to a problem.
Shubhanshu Gupta worked on rewriting and restructuring the documentation for KEcoLab to make the project more accessible to newcomers. This includes explaining usage scenario scripts—core to KEcoLab’s process—and how they simulate real-world software usage to measure energy consumption. The structure of its repository was mapped out, for a clearer understanding of the project. The experience deepened Shubhanshu appreciation for technical documentation and collaborative development of FOSS communities.
The Mankala Engine is one project started during last year Google Summer of Code to introduce a new game to KDE. During this year SoK, we had a lot of projects to improve this game.
Two new variants were added:
Rishav Ray Chaudhury implemented the Kalah game for the Mankala Engine. A greedy move selection algorithm was also added and a script for generating a benchmark report for the available games and algorithms.
Srisharan V S integrated the traditional game Pallanguli into the Mankala Engine. After researching regional rule variations and the core game logic was implemented in C++. A package of the engine for Fedora has been created, fixing the reported bugs and ensuring everything worked smoothly. Later, I organized a FOSS meetup at my college to showcase KDE apps and help students try out Linux. Finally, I completed the documentation and polished the codebase for future contributions.
Shubham Shinde worked on enhancing the Mankala Engine by exploring and implementing new gameplay algorithms like MCTS and Q-learning, comparing them with existing ones like Minimax and MTDF. While MCTS didn’t perform well, Q-learning showed better results after optimization. Review and improvement suggestions were also provided on the Pallanguli variant implementation.
Ashutosh Singh worked on creating a GUI for mankala Game. This development was done using Kirigami and qml for creating and designing the GUI. The GUI is functional but it is still a work in progress with several bugs and missing elements which need to be implemented. The current state of the game can be see below.
Nidhish Chauhan have implemented a feature in the engine supporting Player versus Player (PvP) mode, with real-time XMPP-based communication for PvP. The project includes a terminal-based user interface, move tracking, and game state management, along with a man page for documentation.
One of the next steps for the game is to follow the KDE review process and becomes an official KDE application!
New Mentors
The projects were guided by several people new to welcoming contributors to KDE through SoK.
Thanks go to Kieryn Darkwater, João Gouveia, Aakarsh MJ, Pradyot Ranjan and Snehit Sah for
giving new contributors an introduction to free and open source software.
Closing
We would like to congratulate all participants and look forward to their
future journey with KDE!