Skip to content

Wednesday, 28 May 2025

Interactive Plots with PySide6

Nowadays it is getting more and more popular to write Qt applications in Python using a binding module like PySide6. One reason for this is probably Python's rich data science ecosystem which makes it a breeze to load and visualize complex datasets. In this article we focus (although not exclusively) on the widespread plotting library Matplotlib: We demonstrate how you can embed it in PySide applications and how you can customize the default look and feel to your needs. We round off the article with an outlook into Python plotting libaries beyond Matplotlib and their significance for Qt.

Continue reading Interactive Plots with PySide6 at basysKom GmbH.

Sunday, 25 May 2025

Being the workhorse for more than a decade, it took me by surprise that Qt 5 is going to run out of support tomorrow. Honestly, Qt 6 was released in late 2020 and I prefer using modern code bases that use features from the C++17 and C++20 standards. So, no reason to hold me back.

I am pleased to announce the release of KDE Stopmotion 0.9.0. It consist of the Qt 6 port and has no additional features or bug fixes. Quite boring, it does not even look nicer or different at all. Many thanks to Florian Satzger and Mark Penner for helping with the port when I got stuck.

Behind the curtain, we use KDE CI templates for the build pipeline, increased the minimum required version numbers for Qt, CMake and C++, and some minor warnings got fixed. We are back using semantic versioning. New features are added with an increased minor version number. Increased patch numbers are for bug fixes only.

Adding sound does not work properly, this is a known bug.

You can create the tar ball using the 0.9.0 Git tag.

Get involved!

I was super happy to receive help with the Qt 6 port. It is so cool to work with strangers and achieve so much. Being united by the desire to create powerful software, is a strong motivation.

I am desperately looking for more people to get involved in KDE Stopmotion. If you are looking for a place to make a contribution, consider it! Some areas for contributors come to my mind:

  • Use more modern libraries to grab the images from cameras. We have several options and some of these are unmaintained for years. Adding more recent options would be great.
  • Starting with integration into KDE's software stack. Stopmotion is still in the incubation phase. The software uses Qt but not KDE frameworks or other things from the ecosystem like handling the translations or a neat integration of the documentation.
  • Improving our test automation would be great.
  • The code base is 20 years old. Some C++ patterns used in the code might no longer be the best choice and a replacement with C++20 code might improve the quality.

Welcome to a new issue of "This Week in KDE Apps"! Every week we cover as much as possible of what's happening in the world of KDE apps.

This week we look at the usability improvements landing in NeoChat, and KClock; important bug fixes in Akonadi; performance improvements in KTorrent and new features in Kate and KRDC.

Getting back to all that's new in the KDE App scene, let's dig in!

Multimedia Applications

Elisa Play local music and listen to online radio

Christoph Wolk fixed an issue where lyrics were displayed on top of the metadata of a song (link).

Okular View and annotate documents

Albert Astals Cid fixed opening password protected files on builds without KWallet (link).

Travel Applications

KDE Itinerary Digital travel assistant

Volker Krause added support for MOTIS instances without OSM street routing capabilities (link). This is the case for the backup instance of Transitous.

Volker also upstreamed various parts of Itineray and KTrip to KPublicTransport to be able to reuse them in both applications. This include the vehicle layout view (link 1, link 2 and link 3) and the DelayRow (link).

In terms of ticket support, Joshua Goins improved the reliability when parsing american airlines tickets (link). Volker improved the Flixbus PDF extractor (link). Additionally, Volker also added onboard API support for Ouigo ES (link).

Creative Applications

Krita Digital Painting, Creative Freedom

Wolthera van Hövell added support for parsing and writing SVG title and description elements (link).

Kdenlive Video editor

balooii added a rotation capability to monitor and effect stack tooling (link). They also fixed some artifact issues in the vectorscope tool on high zoom levels (link).

Jean-Baptiste Mardelle added an option to show thumbnails in the markers list dialog (link).

System Applications

Dolphin Manage your files

Facundo Almeida fixed an authentification issue when connecting to a server with SFTP and a public key and a keyboard-interactive authentication method (link).

Whale

Carl Schwan continued working on Whale, a QML based file manager, and redesigning the header to look more closely to the current Dolphin design (link).

Journald Browser Browser for journald databases

Andreas Cord-Landwehr reworked the search integration and added a button to toggle between case-sensitive/insensitive search (link).

Educational Applications

LabPlot Visualize and analyze data

Martin Marmsoler added the possibility to create nested plots (link).

Martin also improved the axis ticks with a new algorithm to determine the spacing and number of major axis ticks (link).

Finally Martin also fixed a few issues. The cursor dock can now be correctly added when the properties dock is hidden (link). Formulas are correctly updated after importing them (link).

Social Applications

NeoChat Chat on Matrix

Joshua Goins overhauled how NeoChat restores rooms on space switch (link). Now when you switch spaces, the last room in that space is stored and will be restored.

Joshua improved many dialogs (link).

Screenshot of <nil>
Screenshot of <nil>
Screenshot of <nil>

Joshua also went bug hunting on the message delegates in the timeline and fixed many issues (link). Notably the location map and context menu for non-text messages work again and some wording was improved. Speaking of context menus, Joshua also added a new context menu when right clicking on an avatar (link), added a share action to the maximized delegate (link), and made it possible to access all emojis from the context menu (link).

Joshua also improved the UX for rooms that don't have a canonical alias (link), fixed running NeoChat on Android (link), and reorganized some elements in the room settings (link).

Tobias created a mock server implementation of a Matrix server to use for testing (link).

James Graham made the user id elide in the user detail dialog when it is too long to avoid overflow (link).

Browsers and Networking

KTorrent BitTorrent Client

Andrey Semashev optimized various hot spots in KTorrent. He reduced the number of allocations for each packet from 3 to 1 (link), optimized the storage of some lists (link), reduced the algorithmic complexity of the file cache from O(log n) to roughly O(1) (link) and fixed some Qt container detaching issues (link).

Andrey Semashev also added support for OpenSSL as the cryptography backend (link).

Philipp Kiemle fixed some UI strings to be HIG complient (link 1 and link 2)

George Florea Bănuș added support for showing the total amount of bytes uploaded or downloaded for a file in the current session (link).

KRDC Connect with RDP or VNC to another computer

Fabio Bas and Luke Dashjr added a button to toggle clipboard sharing in KRDC (link).

Christopher Chan added support for admin console session (link).

KDE Connect Seamless connection of your devices

lzwind fixed a memory leak issue when a device is disconnected (link).

KDE PIM

Akonadi Background service for KDE PIM apps

Allen Winter updated the list of DAV providers, removing some defunct providers and adding new ones like Fastmail, SOGo, Citadel, Zoho, and Kopano (link 1, link 2, link 3, ...).

Allen also fixed a crash when trying to update an item (link).

Carl Schwan fixed three crashes related to fetching passwords from the system keyring found via Sentry (link 1, link 2 and link 3), and another crash when trying to load an account with an unknown authentication type (link).

Akonadi Console

Carl Schwan fixed a crash when editing or deleting a tag (link).

KOrganizer KOrganizer is a calendar and scheduling application

Allen Winter removed the Get Hot New Calendar feature from Korganizer (link). It was only featuring school holidays and football season calendars from the 2006-2008 era.

Allen hid the todo list from the KOrganized sidebar when already using the todo view (link) and added an option to show/hide the week numbers in the date navigator (link).

Kleopatra Certificate manager and cryptography app

Tobias Fella improved the success message when uploading a key (link), added a warning when disabling a certificate (link), and added a plural variant to a UI string when verifying multiple signatures from the same file (link).

Games

Chessament - Chess tournament manager

Manuel Alcaraz started incubating Chessament, a chess tournament manager.

Utilities

Clock Keep time and set alarms

Kai Uwe Broulik put the stopwatch and timer time in the navigation bar when on a different page (link).

Kai also added some explanation about the keyboard shortcuts (link).

Han Young added the ability to change the default timer sound (link).

Kate Advanced text editor

Leo Ruggeri added an "Edit line" entry to the diff widget context menu (link). The action opens the file referenced by the diff at the selected line.

Konsole Use the command line interface

Luca Carlon optimized some code where we did some uncesserary copy (link 1 and link 2).

ISO Image Writer Write an ISO Image to a USB Disk

Philipp Kiemle fixed a word puzzle issue (link).

…And Everything Else

This blog only covers the tip of the iceberg! If you’re hungry for more, check out Nate's blog about Plasma and be sure not to miss his This Week in Plasma series, where every Saturday he covers all the work being put into KDE's Plasma desktop environment.

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.

Friday, 23 May 2025

Here we are in the year 2025 and every company that wants to grab your money now peddles AI.

Even most search engines will now start with some “AI powered” summary.

Unfortunately, what they give you is just some deep learning intelligence fake.

Just imagine, you don’t read the links yourself, but you pass that to some friend/colleague/… that might be a nice person but is known to, if in doubt, not to tell that he did not understand what he should do, but just returns some random stuff that sounds like it could be true.

That is the state of AI.

Naturally one has trained the models to death on standard questions and problems, ask a semi new model why the sky is blue and you get the same answer as on the Wikipedia, more or less.

But try it different: Ask something that for sure is no training question.

My self serving question, just to see if the standard models know something about Kate (and perhaps me). Naturally not just ‘me’ invented Kate, but let’s roll with that.

Who invented the Kate editor?

Let’s ask the gemma3 model:

The Kate editor was primarily developed by Michael Hofmann.

Here’s a breakdown of the key figures and the evolution of Kate:

Michael Hofmann (Lead Developer): Hofmann started working on Kate as a personal tool for editing and exploring Markdown. He initially created it as a command-line tool and gradually built out the features we see today. He’s the driving force behind the project and continues to actively maintain and develop it. Other Contributors: While Hofmann is the central figure, Kate has benefited from significant contributions from a community of developers and designers. Important contributors include: Matt Butcher: Made significant contributions to the UI design and the editor’s overall look and feel. Daniel Wani: Was instrumental in the early development and testing. Key Timeline:

2013-2015: Initial development started by Michael Hofmann as a personal tool. 2015: Kate was released as open-source. 2016: The first desktop version was released. In short, Michael Hofmann is widely considered the inventor of the Kate editor, but it’s a product of a collaborative effort.

You can find more information about the development history on the Kate editor’s website: katex.app

Ok? No idea where that stems from.

Next try, ask llama3.2:

I couldn’t find any information on who specifically “invented” the Kate editor, but it was primarily developed by Michael Hofmann.

The Kate editor is a command-line text editor that was first released in 2005 and has since become popular among programmers and developers. It’s known for its speed, efficiency, and customization options.

If you’re looking for more information on the history of Kate or its development, I’d be happy to try and help!

A bit better, at least some hint that the answer could be useless. Half contradicting the first, given there the same person seem to have invented that close to one decade later.

Next try, ask deepseek-r1:

The Kate editor was not invented by a single individual but is instead an open-source project that was primarily developed and designed by Michael Hofmann in 2005. Since then, it has been actively maintained and improved by a community of contributors who have added features, enhanced its functionality, and worked on its documentation.

Kate is known for its simplicity, speed, and ability to perform complex text transformations quickly. It is widely used in development environments and is often bundled with modern IDEs (Integrated Development Environments) like JetBrains Rider for Java and .NET projects.

If you’re looking for more details about Kate or its history, feel free to ask!

Matching a bit the second answer with more interesting random pseudo facts.

Ok, then let’s try the Brave browser AI search:

Kate Editor Inventor The KDE community developed the KDE Advanced Text Editor, or Kate. It has been a part of the KDE Software Compilation since version 2.2, which was first released in 2001.

That looks at least reasonable.

Let’s put the first sentence of one of the answers in the Brave browser AI search to see what happens then:

The Kate editor was not invented by a single individual but is instead an open-source project that was primarily developed and designed by Michael Hofmann in 2005.

You get back:

The Kate editor is part of the KDE free software community and was not invented by a single individual. Development of Kate began in 2001 with the release of KDE Software Compilation version 2.2. Michael Hofmann is known for his contributions to the project, but he did not single-handedly create it. Kate is an advanced text editor that supports syntax highlighting, code folding, and multiple cursors, among other features.

Now you have Michael Hofmann back, as that was in your search prompt. None of the linked search results tell you a sentences about Michael Hofmann, this was just nicely hallucinated into the summary because it was in the prompt.

I don’t say that AI tooling is useless, deep learning is a very useful tool.

But I am afraid many people will just read the AI summary box above the search results and believe that is a real summary.

No, it is not.

If you rephrase the

The Kate editor was not invented by a single individual but is instead an open-source project that was primarily developed and designed by Michael Hofmann in 2005.

to something different, with a different name and perhaps not that nice achievement, you will likely just get a hallucinated confirmation of your query.

And voila: you asked if some thing you heard somewhere is true and more or less get it confirmed because you asked about it.

We then end up here:

I said it because it is the truth. It is the truth because I said it.

I hope that enough people understand that issue and don’t fall for the trap of only peaking at the AI summary and not actually looking at the search results. But as it is that convenient, and even I often just read that first, I am afraid that will not be the case.

Naturally the search results themselves were never the fully reliable source of information.

They are weighted and sorted via algorithms that will keep in mind a lot of things that might not be in your interest and even without that, perhaps just the found pages are full of half truths or lies (like this one :)

But the AI summary box just adds one level more that can introduce just any kind of error or bias on top of that.

Wednesday, 21 May 2025

We're actually going to be using the Do Not Disturb feature in Plasma 6.4.

I say that because previously we had a hack that simply allowed notifications to display over top of fullscreen windows, and do not disturb was only ever used if:

  • Screens are mirrored
  • During screen sharing
  • The user invoked it manually

This was a little odd, and led to some inconsistencies. Plus only Plasma knew about the user's preference to see notifications in fullscreen, and despite notifications being inhibited reading org.freedesktop.Notifications.Inhibited would return false.

I changed this to actually use do not disturb when a fullscreen window is focused. This is more predictable and in-line with what the user would expect, enhancing the UX and communication with other parts of the system and apps.

Screenshot showing the new setting to automatically enable DND when fullscreen windows are focused

As a result, we've discovered several bugs that had gone unnoticed! So far:

My impression is that these bugs were not evident before because few people were actually using the do not disturb feature, thanks to the way we previously handled notifications with fullscreen applications. Everyone has been hard at work getting these fixed and hopefully DND will be more useful, predictable, and reliable! 🎉 😄

Tuesday, 20 May 2025

gcompris 25.1 and 4.3.1

Today we are releasing GCompris version 25.1.

It contains bug fixes and graphics improvements on many activities.

It is fully translated in the following languages:

  • Arabic
  • Bulgarian
  • Breton
  • Catalan
  • Catalan (Valencian)
  • Greek
  • Spanish
  • Basque
  • French
  • Galician
  • Croatian
  • Hungarian
  • Indonesian
  • Italian
  • Lithuanian
  • Latvian
  • Malayalam
  • Dutch
  • Polish
  • Brazilian Portuguese
  • Romanian
  • Russian
  • Sanskrit
  • Slovenian
  • Albanian
  • Swedish
  • Turkish
  • Ukrainian

It is also partially translated in the following languages:

  • Azerbaijani (90%)
  • Belarusian (86%)
  • Czech (98%)
  • German (87%)
  • UK English (99%)
  • Esperanto (99%)
  • Estonian (88%)
  • Finnish (93%)
  • Hebrew (97%)
  • Georgian (86%)
  • Macedonian (83%)
  • Norwegian Nynorsk (92%)
  • Portuguese (87%)
  • Slovak (81%)
  • Swahili (91%)
  • Chinese Traditional (87%)

You can find packages of this new version for GNU/Linux, Windows, Android, and Raspberry Pi on the download page. Also this update will soon be available in the Android Play store, the F-Droid repository and the Windows store.

We are also releasing GCompris version 4.3.1.

This is a maintenance version for 32bit systems which only contains a few backported bug fixes.

Thank you all,
Timothée & Johnny

Monday, 19 May 2025

Kirigami Addons is a collection of supplementary components for Kirigami applications. Version 1.8.0 is a relatively minor release, introducing two new form delegates along with various quality-of-life enhancements.

New Features

I added two new form delegates: FormLinkDelegate (!343) and FormIconDelegate (!355).

The first one is similar to FormButtonDelegate, but it’s used to display an external link. It’s already used on the About page:

 

The second one was upstreamed from Marknote and allows the user to pick an icon and display the selected icon.

I also added a password quality checker to FormPasswordFieldDelegate (!345). This is particularly useful when asking users to create an account:

 

Visual Changes

Kai Uwe Broulik improved avatar rendering. Initials are now always displayed consistently even on small screen (!363).

Kai also fixed an issue on mobile where library information on the About page was being ellipsized (!356).

Balló György fixed several issues when using Kirigami with the QtQuick software rendering backend (!350, !351).

I made the delegates provided by Kirigami Addons now have a slightly larger touch area on mobile (!349). Unfortunately, I also had to remove the small hover animations, as they occasionally caused visual glitches (1d6e84cd).

Convenient New APIs

Joshua Goins added an opened property to ConvergentContextMenu (!352), and I added a close method to allow closing the menu programmatically (!364).

I also added support for trailing items in FormTextFieldDelegate (f996fc6e).

Documentation

Thiago Sueto ported the entire library to QDoc (!354). QDoc provides much better support for QML.

Other Changes

“trapped-in-dreams” significantly improved the performance of the date picker (!360).

Volker Krause updated the project templates to reflect current best practices for Android support (!359).

Packager Section

1.8.0 had an issue with system not having QDoc, but a bug fix release is available as 1.8.1 with the fix for that.

You can find the package on download.kde.org and it has been signed with my GPG key.

We have moved the deadline for talk submission for Akademy 2025 to the end of the month. Submit your talks now! 

https://mail.kde.org/pipermail/kde-community/2025q2/008217.html 

https://akademy.kde.org/2025/cfp/

Sunday, 18 May 2025

I recently made a patch to Konsole terminal emulator, that adds to the current tab layout saving system couple more things:

  • Working directory
  • Size of splits
  • Optional command to run

You can find the patch here: ViewManager: Save columns, lines and working directory to tabLayout (!1095)

It's a feature I've seen in other terminal editors, so I wanted to add it to Konsole as well.

Note that this is not in current version of Konsole, but it will be in the next one: 25.07. Unless it gets backported, of course.

Current tab layouts

In Konsole, you can even in current version save your tab layout:

  1. Open Konsole
  2. Split the current view into multiple ones
  3. Go to Menu -> View -> Save tab layout...

This produces a JSON file like this:

{
    "Orientation": "Vertical",
    "Widgets": [
        {
            "SessionRestoreId": 0
        },
        {
            "SessionRestoreId": 0
        }
    ]
}

Now, as it is currently, it's not that useful. The split sizes won't be saved, for example.

My changes

My changes now allow you to save the size of the splits and the working directories, like this:

{
    "Orientation": "Horizontal",
    "Widgets": [
        {
            "Columns": 88,
            "Command": "",
            "Lines": 33,
            "SessionRestoreId": 0,
            "WorkingDirectory": "/home/akseli/Repositories"
        },
        {
            "Orientation": "Vertical",
            "Widgets": [
                {
                    "Columns": 33,
                    "Command": "",
                    "Lines": 21,
                    "SessionRestoreId": 0,
                    "WorkingDirectory": "/home/akseli/Documents"
                },
                {
                    "Columns": 33,
                    "Command": "",
                    "Lines": 10,
                    "SessionRestoreId": 0,
                    "WorkingDirectory": "/home/akseli"
                }
            ]
        }
    ]
}

As you can see, it saves the Columns, Lines, WorkingDirectory. It also adds empty Command item, which you can write any command in, like ls -la, or keep it empty.

You can try to use the columns and lines sections to modify the size manually, but I've noticed it's easier just to do it inside Konsole.

Now the old layout file will work too, if the field doesn't exist Konsole won't do anything about it.

Note about the command: Konsole basically pretends to type that command in when it loads, so the commands don't need a separate Parameter field or anything like that. You could make the command something like foo && bar -t example && baz --parameter. Konsole then just types that in and presses enter for you. :)

More concrete example

I made this change because I wanted to run Konsole in following layout:

{
    "Orientation": "Horizontal",
    "Widgets": [
        {
            "Orientation": "Vertical",
            "Widgets": [
                {
                    "Columns": 139,
                    "Command": "hx .",
                    "Lines": 50,
                    "SessionRestoreId": 0
                },
                {
                    "Columns": 139,
                    "Command": "",
                    "Lines": 14,
                    "SessionRestoreId": 0
                }
            ]
        },
        {
            "Columns": 60,
            "Command": "lazygit",
            "Lines": 66,
            "SessionRestoreId": 0
        }
    ]
}

With these items I can get the layout splits as I want, with any commands I want.

Then I have a bash script to run this layout in the directory the script is run at:

#!/usr/bin/env bash
konsole --separate --hold --workdir "$1" --layout "$HOME/Documents/helix-editor.json" &

Now when I go to any project folder and run this script, it will open the Helix text editor, lazygit and empty split the way I want it, without having to make these splits manually every time.

Preview of Konsole and splits of editor and git

Sure I could use something like Zellij for this but they have so much things I don't need, I just wanted to split the view and save/load that arrangement.

In future

I would like to add a small GUI tool inside Konsole that allows you to customize these layout easily during save process, such as changing the WorkingDirectory and Command parameters.

But for now, you'll have to do it inside the JSON file, but chances are when you want to do layouts like this, you're comfortable editing these kind of files anyway.

I hope some others will find this useful as well, for things like system monitoring etc.

Hope you like it!

(This blog is originally posted to KDE Blogs.)

Hi everyone!

I’m Derek Lin, also known as kenoi. I’m a second-year student at the University of Waterloo and really excited to be working on developing Karton, a virtual machine manager, this summer. This project will be a part of the Google Summer of Code (GSoC) 2025 program and mentored by Harald Sitter, Tobias Fella, and Nicolas Fella. Over the past few months, I’ve been contributing to the project through some merge requests and I hope to get it to a somewhat polished state towards the end of the program!

About Karton Virtual Machine Manager

Currently, GTK-based virtual machine managers (virt-manager, GNOME Boxes) are the norm for a lot of KDE users, but they are generally not well integrated into the Plasma environment. Although there has been work done in the past with making a Qt-Widget-based virtual machine manager, it has not been maintained for many years and the UI is quite dated.

Karton, as originally started by Aaron Rainbolt was planned to be a QEMU frontend for virtualization through its CLI. Eventually, the project ownership was handed over to Harald Sitter and it was made available as a GSoC project. My aim is to make Karton a native Qt-Quick/Kirigami virtual machine manager, using a libvirt backend. Through libvirt, lower-level tasks can be abstracted and it allows for the app to be potentially cross-platform.

If anyone is interested, I wrote a bit more in detail in my GSoC project proposal (although a bit outdated).

My Work so Far

I originally became interested in the project back in February this year where I tested out GNOME Boxes, virt-manager, and UTM. I also experimented on the virsh CLI, configuring some virtual machines through the libvirt domain XML format.

My first merge request was a proof-of-concept rewrite of the app. I implemented new UI components to list, view, configure, and install libvirt-controlled virtual machines. This used the libvirt API to fetch information on user domains, and wrapped virt-install and virtviewer CLIs for installing and viewing domains respectively. I had spent a big portion of this time getting know Qt frameworks, libvirt, and just C++ overall, so a big thank you to Harald Sitter and Gleb Popov, who have been reviewing my code!

A few weeks later I also made a smaller merge request building off of my rewrite, adding QEMU virtual disk path management which is where the main repository stands as of now.

In between my school terms in mid-April, I had the amazing opportunity to attend the Plasma Sprint in Graz where I was able to meet many awesome developers who work on KDE. During this time, I worked on a merge request to implement a domain installer (in order to replace the virt-install command call). This used the libosinfo GLib API to detect a user-provided OS installer disk image, getting specifications needed for the libvirt XML domain format. Karton is then able to generate a custom XML file which will make it easier to work off of and implement more features in the future. I had to rework a lot of the domain configuration class structure and shifted away from fetching information from libvirt API calls to parsing it directly from XML.

A libvirt domain XML configuration generated by Karton.

A Video Demo

Current Works in Progress

As virt-install is very powerful program, my installer is still hardcoded to work with QEMU and I haven’t been able to implement a lot of the device configuration yet. I also am currently working on addressing feedback on this merge request.

Recently, I also started work on a new custom Qt-Quick virtual machine viewer. It connects to virtual machines through the spice-client-glib library and renders the frames on a QQuickItem with the images it receives from the active virtual machine. This is still very buggy and has yet to support user input.

a very cursed viewer…

Warning: Karton is still under development. I would not recommend running Karton with any VMs that are important as they may break.

My Plans for Google Summer of Code ‘25

Once the domain installer is finished up, I think the majority of my time will be spent on working on and polishing the virtual machine viewer.

Some of the other things I would want to get to during the summer are:

  • Support snapshotting, so users can save the state of their virtual machines.
  • Rework the UI so that it uses space more effectively, possible more similar to UTMs layout.
  • System monitor to graph CPU and RAM usage of VMs, similar to virt-manager.
  • Other configuration options for the installer to support device passthrough and such.
  • A bunch of more stuff mentioned in the project proposal!

If you have any features you’d like to see in the future, let us know in our Matrix, karton:kde.org!

That’s all!

Thanks for reading! I’m still new to KDE development and virtualization in general, so if you have any suggestions or thoughts on the project, please let me know!

Email: derekhongdalin@gmail.com

Matrix: @kenoi:matrix.org

Discord: kenyoy

I also made a Mastodon recently: mastodon.social/@kenoi