08 Jan 2026
Planet KDE | English
Events in December 2025
December was quite an eventful month for me, with over 4,000 km travelled by train. This was in part caused by the holidays and visiting family, but also by the KDE PIM sprint in Paris and the 39th Chaos Communication Congress.
KDE PIM sprint in Paris
From the 12th to the 14th of December, I was in Paris. It was actually my first time there for more than a day trip, so I arrived a day earlier to explore the city a bit. I went on a walk across the city with Tobias and Nicolas, and I took some photos.

The weekend was also very productive. We advanced our goal of making KMime a proper KDE Framework; made Message-IDs in emails more privacy-conscious; and discussed various important topics such as the retirement of the Kolab resource and the switch to SQLite as the default backend for Akonadi.

Huge thanks to enioka Haute Couture for having us in their office in Paris.
The sprint being in Paris also allowed me to afterward go visit my grandma, 350 km further south of Paris, so this was particularly convenient.
39th Chaos Communication Congress (39c3)
Another event I went to was 39c3, which is the third year in a row that I attended, and this year again we had an assembly as part of the Bits und Bäume umbrella, thanks to Joseph.
I love the vibe of this event. It's not very dry or only tech-focused, but also has a big artistic and political aspect to it. And while the number of attendees is very large, at the same time it's very chill and I don't feel overwhelmed, unlike at FOSDEM.
At the KDE assembly, we met a lot of interested users, some GNOME friends, and since a bunch of KDE devs were there, we managed to work on a few productive things, like switching the map backend from Itinerary to MapLibre.
And this year, I even managed to go on national TV for a few seconds to speak about Nextcloud. My German grandma called me the day afterward, very happy to have seen me.

08 Jan 2026 10:00pm GMT
KDE Gear 25.12.1
Over 180 individual programs plus dozens of programmer libraries and feature plugins are released simultaneously as part of KDE Gear.
Today they all get new bugfix source releases with updated translations, including:
- dolphin: Allow migration for users with the old session file format (Commit, fixes bug #513466)
- kate: Fix a tree view crash in the Project plugin (Commit, fixes bug #513753)
- skladnik: Ignore the mouse release event at the end of a drag action (Commit)
Distro and app store packagers should update their application packages.
- 25.12 release notes for information on tarballs and known issues.
- Package download wiki page
- 25.12.1 source info page
- 25.12.1 full changelog
08 Jan 2026 12:00am GMT
06 Jan 2026
Planet KDE | English
Kraft 2.0 Announcement
With the start of the new year, I am very happy to announce the release of version Kraft 2.0.0.
Kraft provides effective invoicing and document management for small businesses on Linux. Check the feature list.
This new version is a big step ahead for the project. It does not only deliver the outstanding ports to Qt6 and KDE Frameworks 6 and tons of modernizations and cleanups, but for the first time, it also does some significant changes in the underlying architecture and drops outdated technology.
Kraft now stores documents not longer in a relational database, but as XML documents in the filesystem. While separate files are more natural for documents anyway, this is paving the way to let Kraft integrate with private cloud infrastructures like OpenCloud or Nextcloud via sync. That is not only for backup- and web-app-purposes, but also for synced data that enables to run Kraft as distributed system. An example is if office staff works from different home offices. Expect this and related usecases to be supported in the near future of Kraft.
But there are more features: For example, the document lifecycle was changed to be more compliant: Documents remain in a draft status now until they get finalized, when they get their final document number. From that point on, they can not longer be altered.
There is too much on the long Changes-List to mention here.
However, what is important is that after more than 20 years of developing and maintaining this app, I continue to be motivated to work on this bit. It is not a big project, but I think it is important that we have this kind of "productivity"-applications available for Linux to make it attractive for people to switch to Linux.
Around Kraft, a small but beautiful community has built up. I like to thank everybody who contributed in any way to Kraft over the years. It is big fun to work with you all!
If you are interested, please get in touch.
06 Jan 2026 10:14am GMT
04 Jan 2026
Planet KDE | English
What does it mean to write in 2026?
04 Jan 2026 9:58pm GMT
This Week in KDE Apps
A new whiteboard app, Vector-based map rendering in Itinerary, and new releases
Welcome to a new issue of "This Week in KDE Apps"! Every week (or so) we cover as much as possible of what's happening in the world of KDE apps.
We kick off the year with everything that's new in the KDE App scene. Let's dig in!
Travel Applications
KDE Itinerary Digital travel assistant
Jonah Brüchert added a MapLibre-based backend to Itinerary maps views. This allows us to render vector-based tiles, which means they can be displayed at any size without visible pixels. Zooming in and out should also be much smoother. Another advantage is that the map now shows labels in the local language as well as English. This makes the map much more useful in case you cannot read a locally used script. In the future, we might even be able to use map tiles that can display labels in your preferred language. (26.04.0 - pim/itinerary MR #454)

Carl Schwan ported multiple dialogs to a convergent dialog/bottom drawer style (26.04.0 - pim/itinerary MR #413 and pim/itinerary MR #464).
![]() |
![]() |
|---|
Volker Krause added support for marking reservations as cancelled in your timeline, so that these reservations are not counted in your yearly statistics (26.04.0 - link).
Luca Weiss updated the KLM boarding passes extractor to also extract the boarding group (25.12.1 - pim/kitinerary MR #205). Thomas Arrow added an extractor for KLM's "Ticket for your trip" emails (25.12.1 - pim/kitinerary MR #206).
Tobias Fella added support for extracting GOMUS annual tickets (25.12.1 - pim/kitinerary MR #207).
PIM Applications
KMail A feature-rich email application
Albert Astals Cid made KMail's system tray icon also work when KMail is run inside Kontact (26.04.0 - pim/kmail MR #187).
Office Applications
Okular View and annotate documents
Cody Neiman fixed the extreme downscaling of custom stamps, which resulted in pixelated stamp annotations (25.12.1 - graphics/okular MR #1280).
Creative Applications
Drawy Your handy, infinite, brainstorming tool
Thanks to Prayag Jain, KDE has a new whiteboard app called Drawy! It combines a simple interface with an infinite canvas, giving users the freedom to think and draw without limits.

Some of its features are:
- An infinite canvas with no drawing constraints
- Support for drawing tablets and touchscreens
- Tools to group and ungroup items on the canvas
- A text tool for typing notes
Drawy is still under development, but you can already download a nightly flatpak. You are invited to test the app and share feedback to help shape Drawy as your handy, infinite brainstorming tool!
Since the incubation started, Prayag Jain has been fixing various performance issues (graphics/drawy MR #108 and graphics/drawy MR #115), and Laurent Montel did a lot of code cleanup to follow KDE best practices more closely (link).
Utilities Applications
Konsole Use the command line interface
Leonardo Malaman added a new "Force New Tabs" option to Konsole. This forces Konsole to open a new tab in an already open Konsole window instead of opening a new window (utilities/konsole MR #1112).
Kate Advanced text editor
Christoph Cullmann added out-of-the-box support for neocmakelsp, an LSP server for CMake (26.04.0 - utilities/kate MR #1974).
KAIChat AI Chat
Laurent Montel released KAiChat 0.6.0. This release introduces Wikipedia and weather integration, the capability to copy block code to the clipboard, and a quick search widget.
Network Applications
NeoChat Chat on Matrix
Károly Veres unified the space selection logic, so that using the quick switcher or clicking on a notification to jump to a room will now switch to correct space (26.04.0 - network/neochat MR #2551).
Nate Graham improved the hamburger menu button. Now the menu opens right beneath the button, the button has a pressed state while the menu is open, and the menu will close when clicking on the button again. (26.04.0 - network/neochat MR #2553)
Azhar Momin added a button to cycle through unread highlights (26.04.0 - network/neochat MR #2552).
Joshua Goins re-arranged the profile dialog and grouped similar actions together (26.04.0 - network/neochat MR #2544). And he made it possible to view the profile dialog when receiving an invitation (26.04.0 - network/neochat MR #2548).

Tobias Fella added some fixes for the new version of Matrix rooms (26.04.0 - network/neochat MR #2550).
Kaidan Modern chat app for every device
Melvin Keskin released Kaidan 0.14.0. This release allow you to resend failed messages via the context menu, cancel and restart uploads, join group chats or add contacts by their XMPP URIs, and improves compatibility for servers using LDAP.
System Applications
KCron Task Scheduler
Alexander Wilms fixed running commands containing spaces in their path (26.04.0 - system/kcron MR #46).
…And Everything Else
This blog only covers the tip of the iceberg! If you're hungry for more, check out This Week in Plasma, which covers all the work being put into KDE's Plasma desktop environment every Saturday.
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.
04 Jan 2026 5:21pm GMT
39C3
A few days ago I attended the 39th Chaos Communication Congress (39C3) in Hamburg, Germany, as part of the KDE presence there.
KDE
Like at 38C3 in the previous year we had a small KDE assembly as part of the Bits & Bäume Habitat.
There were two talks with KDE contributors in the main program:
- Bettina, Caro and Joseph from KDE Eco presented their work on the "End of 10" campaign.
- Shinjo spoke about security breaches at South Korean telco operators.
The End of 10 campaign also had organized a meetup and a install party.
As Jonah has already reported we got very positive feedback from attendees about KDE's work.
Itinerary
Itinerary was a frequent discussion topic for me, both with the KDE team and attendees in general.
- The MapLibre-based vector tile map integration got pushed over the finishing line (see also Jonah's report).
- Reaching the end of the year and people being interested in their travel wrap-up, a few issues regarding handling of cancelled reservations in the statistics got fixed. And as people's trip lists are growing longer and longer that also got a better grouping.
- We talked about possible ways to improve the stop picker, in particular the country selector which is becoming increasingly annoying to use as it gets longer and longer as Transitous coverage keeps expanding.
- Ideas for a better first-start onboarding page.
- We need to investigate whether we handle Zügli's ticket revocations correcty that were mentioned in the Deutschlandticket fraud investigation talk.
Android
I also had the opportunity to talk to developers of F-Droid and other FOSS Android applications, who share a lot of the pain we are also dealing with in bringing KDE applications to Android.
A big concern especially for people not associated with a bigger umbrella organization is the upcoming requirements by Google for developer verification. While KDE might be less affected by this directly, any negative effect on the larger FOSS ecosystem is of course also bad for us. The continuous close-down of AOSP development is also not helping, making it significantly harder for Google-free Android variants.
None of that is entirely surprising, and it increases the pressure on fully open Linux systems becoming a viable alternative on more mobile devices. Both that as well as collaboration on adjacent infrastructure such as fully open push notification infrastructure has been making good progress in 2025 fortunately.
Transitous
We had a Transitous meetup on the last day at Wikimedia's assembly, hosted by Jonah, Julius and myself. We should organize and announce this earlier next time, but the space was nevertheless full. Meeting notes are in the wiki.
We had quite a few conversations around Transitous beyond this as well:
- It looks like we should be able to get SIRI-FM data for a number of operators in Germany in Q1 2026. That's facility monitoring information such as current or planned elevator outages, something highly relevant for wheelchair routing.
- We talked about finding better ways to maintain data augmentation than the currently used MOTIS Lua scripts. While there's options on where to store such information (e.g. Wikidata or OSM), the main challenge is matching GTFS data lacking stable identifiers to such an external data set.
- We met with the team behind esel.ac, a community-run bike sharing system in Aachen. It's using OpenBike and produces a GBFS feed that we now also have in Transitous. Community-run mobility services and a community-run routing service are of course the perfect match, and I'd like us to use those cases to showcase what the whole stack of open standards, open hardware and open software can do together. We discussed possible extensions to the GBFS feed such as booking links, geo fencing zones and return constraints for this.
- There was some prototyping towards using Wikidata as a source of "temporary POIs" for Transitous. That's events that are tied to a specific location (e.g. a conference) which then can be used as a destination for routing. We managed to produce an abomination of a SPARQL query that resulted in a technically valid set of events. However we haven't found a proper solution yet for reliably excluding events we would not want in there, such as those of fascist parties.
- There's people working on implementing deck layouts in NeTEx. While motivated by accessibility and seat booking, this could provide us with train coach layouts as a byproduct as well. There's public transport operators involved, so this is hopefully not just theory but also going into production in the not too distant future.
It also looks like we might have another iteration of the Transitous Hack Weekend in Berlin, next weekend already (January 9-11). That's very short notice and not entirely finalized yet. If you are interested in joining please get in touch in the Transitous Matrix channel.
OSM
The OSM assembly was conveniently directly next to the KDE one, so I could easily drop into conversations about indoor mapping, indoor routing or indoor positioning there. Interest in all parts of this seems to be increasing, we probably should improve the introduction material for this a bit.
There's also a plan to have an (offline) meeting in the next months to get some of the pending tagging proposals and open questions e.g. around "thick" walls, stairs and fractional levels sorted out and over the finishing line.
We also had the opportunity to discuss the FOSSGIS e.V. becoming a possible umbrella organization for Transitous and/or the Open Transport Community Conference. Especially the latter is becoming slightly more pressing as we got a few sponsorship offers while looking for a venue, and that's something we can only make use of with an organization behind us that can actually handle money.
Weather and Emergency Alerts
I also met with FOSSWarn to discuss the next steps on the public alert distribution server:
- Better monitoring to notice system failures, task queue backlogs, source feed outages, increasing parser or push notification submission error rates, or suspiciously large subscription areas. As a byproduct this might also provide interesting insights in the alert data.
- Better ways to deal with rate limits on push servers. This needs to be ultimately resolved at those servers, as public alerts are very prone to produce notification bursts. This is also a blocker for scaling this up further and e.g. deploying this in a default KDE Plasma installation.
- Performance improvements for the alert area vector tile generation. That wasn't a focus initially as this was meant purely as a diagnostic tool, but it has become popular to the point that FOSSWarn wants to integrate this directly into the app. This will probably require geometry simplification on ingested "inline" CAP geometry, which would benefit everyone by smaller and cheaper to parse/render CAP data.
You can help!
Events like Chaos Communication Congress are enormously useful for bringing together, connecting and enabling collaboration between people from different areas or initiatives. The sheer size and diverse set of attendees help a lot with that.
Attending events however incurs cost for travel, accommodation and entrance. Your donation to organizations like KDE e.V. or FOSSGIS e.V. support such activities.
04 Jan 2026 9:45am GMT
03 Jan 2026
Planet KDE | English
KDE Ni! OS – installing packages from source – Plasma Pass
This post will show the NixOS way of adding a custom package and explain the benefits of this approach in the context of system immutability.
Plasma Pass
KDE Ni! OS recently got a new package installed by default - Daniel Vrátil's Plasma Pass applet.
Plasma Pass is a Plasma applet to access passwords from pass, the standard UNIX password manager. You can find more information about the applet in Dan's blog post.
As NixOS doesn't currently offer Plasma Pass in its repositories, the package is installed in Ni! OS from the sources as in some other BTW, I use … distributions.
In NixOS, this is easily done via overlays. We can create an overlay that defines the plasma-pass package so that it can be installed as if it were a real NixOS package.
Package definition
This is the overlay definition used in Ni! (ni/packages/plasma-pass.nix):
self: prev: {
kdePackages = prev.kdePackages.overrideScope (kdeSelf: kdeSuper: {
plasma-pass = kdeSelf.mkKdeDerivation rec {
pname = "plasma-pass";
version = "1.3.0-git-59be3d64";
src = prev.fetchFromGitLab {
domain = "invent.kde.org";
owner = "plasma";
repo = "plasma-pass";
rev = "59be3d6440b6afbacf466455430707deed2b2358";
hash = "sha256-DocHlnF9VJyM1xqZx/hoQVMA/wLY+4RzAbVOGb293ME=";
};
buildInputs = [
kdeSelf.plasma-workspace
kdeSelf.qgpgme
self.oath-toolkit
];
meta = with prev.lib; {
description = "Plasma applet for the Pass password manager";
license = licenses.lgpl21Plus;
platforms = platforms.linux;
};
};
});
}Most of this file is self-explanatory (except for the strange looking syntax of the Nix language :) ).
Since Plasma Pass is a KDE project, we want it visible as a part of kdePackages collection, and as it uses the common build setup that all KDE projects use (or should use), it uses mkKdeDerivation to define the plasma-pass package. This defines some basic dependencies, commonly used by KDE projects and adaptations needed for them to work properly in NixOS. For non-KDE-friendly packages, you'd base your package on the standard mkDerivation instead.
The project sources are located on the KDE's GitLab instance at invent.kde.org, therefore the package definition uses fetchFromGitLab to retrieve the sources. It is also possible to clone repositories on GitHub, fetch and use source tarballs, etc. All fetchers are described at NixOS Manual > Fetchers.
The rev field in the fetchFromGitLab command is the GIT revision that you want to install, and hash you can get by using the nix-prefetch-git command:
nix shell nixpkgs#nix-prefetch-git
nix-prefetch-git https://invent.kde.org/plasma/plasma-pass \
--rev 59be3d6440b6afbacf466455430707deed2b2358The buildInputs part defines additional dependencies needed by Plasma Pass, and meta defines some meta information about the package such as the description and the license.
Using the definition
After defining the package, we have to add it to nixpkgs.overlays in any of our NixOS configuration files. In the case of Ni! OS, this is done in ni/modules/base.nix which defines the UI software that Ni! OS installs by default.
nixpkgs.overlays = [
(import ../packages/plasma-pass.nix)
];With this overlay, plasma-pass can be used as if it was a normal NixOS package.
environment.systemPackages = with pkgs; [
...
kdePackages.plasma-pass
...
];When plasma-pass gets added to the nixpkgs repository, the only action that will be needed in Ni! OS to switch to the official version is to remove the import...plasma-pass.nix from the overlays (this is the reason why we explicitly placed it in kdePackages collection - otherwise, we could have just put it top-level).
Custom packages and immutability
The main point of this post is not really to announce that a single new package is added to the Ni! OS setup. Even if it is a cool one like Plasma Pass.
The point is to show how a custom package that is not available in the vast collection of nixpkgs can be added to a NixOS-based system.
The custom package becomes a proper regular Nix package and gets all the benefits of Nix's particular approach to immutability. If Plasma Pass gets broken after an update (either if new Plasma version breaks Plasma Pass, or if the new version of Plasma Pass no longer works as expected), you can always boot into the version before the bad update.
With distributions with immutable core and custom applications installed as Flatpaks, downgrading is possible, but a bit more involved and relies on 3rdparty keeping the old package versions still available for download.
With NixOS, all the previous versions remain on your system until you decide to remove them.
03 Jan 2026 6:30pm GMT
This Week in Plasma: new year, new accessibility features!
Welcome to a new issue of This Week in Plasma!
Plasma developers are starting to trickle back from their vacations, and are polishing up and merging work that was nearing completion late last year. Among them are some impactful accessibility features, plus lots more holiday goodies!
Also, allow us to thank everyone who donated to KDE's 2025 end-of-year fundraiser. Thanks to all of you, we raised an additional €385,000 for KDE e.V. - a staggering, awe-inspiring sum of money! KDE e.V. will put it to good use keeping KDE financially and technically sustainable for years to come.
Finally, please welcome to TWiP John Veness, who has helped out with this week's post! Contributions here are warmly appreciated.
Anyway, let's check out the work:
Notable New Features
Plasma 6.6.0
The "Slow Keys" accessibility feature has been implemented for Plasma's Wayland session! (Martin Riethmayer, KDE bug #490826)
The Zoom effect now has a mode where the pointer never leaves the center of the physical screen. (Ritchie Frodomar, KDE bug #513145)
The Emoji Selector app now lets you choose a preferred skin tone for emojis of hands and people. (Tobias Ozór, plasma-desktop MR #3399)

It's now possible to disable the visible timeout indicators on notifications if they stress you out. (Anton Birkel, KDE bug #411613)

Notable UI Improvements
Plasma 6.5.5
When Discover prompts you to search the internet for an app that it couldn't find, the search string now includes the correct OS name if you're not using a Linux-based OS. (Jaimukund Bhan, KDE bug #513366)
Plasma 6.6.0
Using a game controller will now count as "activity", stopping the system from automatically going to sleep or locking the screen. (Yelsin Sepulveda, KDE bug #328987)
When a laptop is plugged in or unplugged while asleep, it now wakes up being aware of the current state. (Nate Graham, KDE bug #507203)
System Settings' Touchscreen page now hides itself when there are no touchscreens connected. (Nicolas Fella, KDE bug #513566)
The screen chooser OSD now has a button to open the full System Settings page if none of the built-in options are relevant. (Kai Uwe Broulik, kscreen MR #442)

Creating a sticky note on the desktop via middle-click paste now focuses the text area immediately, ready for editing. (Kai Uwe Broulik, kdeplasma-addons MR #967)
Subtly improved the appearance of overlay badges on Plasma widgets, particularly the ones in the system tray. (Noah Davis, plasma-workspace MR #6118)

In the Application Dashboard launcher widget, category highlights now span the full width of the area, making it more visually consistent. (Christoph Wolk, plasma-desktop MR #3408)
The Large Icons Task Switcher style now does a better job of showing a large number of icons by wrapping them onto multiple rows rather than scrolling horizontally. (Christoph Wolk, KDE bug #513436)
Notable Bug Fixes
Plasma 6.5.5
Fixed an issue that made some Plasma popups inappropriately stay open when they lost focus. (Aleksey Rochev, KDE bug #511187)
Plasma 6.6.0
Possibly fixed one of the most common panel-related Plasma crashes. (David Edmundson, plasma-workspace MR #6086)
Fixed an issue in Spectacle that could make some toolbars in Rectangular Region mode appear off-screen when using a multi-monitor setup where not all screens share a baseline. (Mario Roß, KDE bug #468794)
Fixed a bug that could make the "New!" badge on newly-installed apps in Kickoff overflow for apps with very long names. (Christoph Wolk, KDE bug #513272)
Fixed a weird issue that could make the Task Manager start a drag-and-drop operation when double-clicking a task right on the screen edge. (Aleksey Rochev, KDE bug #501922)
Notable in Performance & Technical
Plasma 6.6.0
Improved and fixed support for OpenBSD in multiple places. (Rafael Sadowski, KPipeWire MR #229, KInfoCenter MR #284, Solid MR #228)
How You Can Help
"This Week in Plasma" needs your help! Publishing these posts is time-consuming and needs community assistance to be sustainable. Right now there are two ways to help:
Work can be coordinated in the relevant Matrix room.
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 keep KDE bringing Free Software to the world.
To get a new Plasma feature or a bugfix mentioned here
Push a commit to the relevant merge request on invent.kde.org.
03 Jan 2026 12:01am GMT
KDE developer onboarding is good now
I made substantial changes in the KDE Developer Platform documentation over the years. I am effectively its docs maintainer and have the largest number of commits in the repository. This is due in large part because I started contributing to it in 2021, applied as a KDE documentation contractor in late 2023, and started officially working with KDE development onboarding docs in 2024. I'm one of multiple furries contributing to KDE. :3
03 Jan 2026 12:00am GMT
02 Jan 2026
Planet KDE | English
FreeBSD 14-to-15 Upgrade (Intel)
This post has the notes I made while upgrading another laptop from FreeBSD 14 to FreeBSD 15. Since my first upgrade was a long and annoying process, I figured I would take notes for the second round. These notes are "how not to do it", even if the end-result is KDE Plasma Wayland on FreeBSD 15, as desired.
The laptop I have already upgraded is a Framework 13 with an AMD 7640U CPU and integrated AMD Radeon (Phoenix1) GPU. That ran into the problem that the amdgpu kernel driver would panic with the stock kernel. After building a world and kernel and packages of the driver that are all patched and consistent, the system works fine.
The laptop I'm going to upgrade is a Slimbook Base 14 with Intel i5-10210U and integrated Intel Comet Lake GT2 GPU. This laptop has a FreeBSD 14 install on it, but I'm pretty sure I never ran it as a laptop-daily-driver. This is my openSUSE laptop most of the time.
Preparations
There is no meaningful user data on the FreeBSD partition, so I'm not going to bother with a backup. The existing installation is on a UFS filesystem. It is running 14.0-CURRENT from .. um .. 2022. That's probably going to need upgrades before I can even use the external ZFS NVMe drive to get to the 15-update.
- Try to naively import the ZFS pool: fails because of missing features. (This was expected)
- Try to naively
freebsd-upgradeto 14.3: fails because that tool is meant for release versions, and won't stomp all over some random -CURRENT. (This is good, but annoying right now) - Using ftp, fetch
base.txzandkernel.txzfor 14.3: that's a 250MB download, which is pretty straightforward.
So now I'm going to stomp all over everything, which is exactly what the tool is preventing me from doing. Why else would there be a /rescue directory?
- Run
/rescue/tar xzf kernel.txz -C /to clobber the kernel. - Run
/rescue/tar xzf base.txz -C /to clobber everything else except the things that have flag schg (The files that are really fucking important). - For all the files that it complains about, run
/rescue/chflags noschg <file>to assert dominance. Ignore all the warnings and error messages that are now being printed because you've clobbered half the system. - Run
/rescue/tar zfs base.txz -C /command again and this time it will nuke everything. Welcome to live-replacing yourlibc. - Reboot.
The base install doesn't have a root password and doesn't have any users defined and will overwrite password files, so after the reboot log in as root with no password, and ignore messages about missing user ID for dbus and avahi and whatever. This continues to be a bad-idea approach.
The next step is importing the ZFS pool with my patched world and kernel and 15.0 packages, such as they are. Unfortunately, ZFS in 15.0 has some new feature-flags that even 14.3 doesn't understand. The pool can be imported read-only, though.
- In the imported
/usr/src, runmake installkerneland ignore warnings about it being a read-only filesystem. After all, I just built everything (elsewhere) and am only interested in making this laptop a same-version-as the other laptop. - Run
make installworldand get an error message about missing libraries. - Run
cp /usr/obj/usr/src/amd64.amd64/tmp/lib/* /libto replace the missing libraries. This may log you out as you clobber more essential libraries with versions from 15-STABLE. - Log in again, go back to
/usr/srcand runmake installworld. - Run
etcupdate -Bto update system configuration. This probably warns about remaining modified files. Ignore that - I get warnings about opieaccess and telnetd which are lovely reminders of the early 2000s, though. - Reboot.
The system has now, in the most cursed-possible way, been upgraded to FreeBSD 15.0-CURRENT.
Packages for 15.0
After doing the cursed upgrade to a new OS version, the rest is reasonably normal:
pkg bootstrap -fto upgrade the packaging tools to the new OS versionpkg updateto fetch new packaging informationpkg upgradeto upgrade all the bits
I removed all Qt ports from the system before starting this, so that it wouldn't have to deal with much in the way of desktop packages. There's still 2GiB to upgrade, though (including LLVM 13 and 19; I suppose I can clean up some of that).
fwgetto get WiFi firmware- Removing unnecessary firmware packages cuts down on the number, but doesn't save much space (e.g
pkg remove gpu-firmware-amd-*on this specific laptop, which is never going to have a different GPU) pkg install kdeto get the important things
Post-install Configuration
The
sysrc(8)commmand should be used to editrc.conf; no need to do everything in a cursed fashion.
- Configure the system console keymap by adding
keymap="us.ctrl.kbd"to/etc/rc.conf(the FreeBSD installer will do this for you, if you pick that keyboard layout, but this is the manual way after installation or when doing cursed upgrades) - Load the Intel graphics driver by adding
kld_list="i915kms"to/etc/rc.conf - Re-add the user to group video with
pw groupmod video -m <user>(because that stuff was clobbered, too)
I have a couple of extra steps and documentation written down from the last time I tried KDE Plasma Wayland on FreeBSD. Don't bother with a display manager. SDDM isn't worth it.
Log out, log back in, run that script, and here's KDE Plasma Wayland running on FreeBSD 15 on Intel graphics:
This leaves just nVidia graphics to deal with, but for that I need to swap around some hardware in my workstation.
02 Jan 2026 11:00pm GMT
Carrot Cake Recipe
This is a recipe post. I've written this one down before, in 2010, but this time I used a scale and some measurements that make more sense in the Netherlands. Carrot cake in the Netherlands still elicits exactly two reactions: vies he? and oh, yummy!. That rabbit still doesn't get it.
For a vegan cake, use vegan egg (chia seed + some water). Kid[0] makes it that way sometimes, but I have not tried it myself.
Stir together:
- 200g grated carrots (about 4 winterwortelen)
- 120g brown sugar
- 10g koek en spekulaaskruiden (a standard-ish mix in the Netherlands, mostly cinnamon and some clove and ginger)
- a pinch of salt
- 80g oil (if I hadn't weighed this on a scale I would have said "nine goulou-goulous from the usual bottle")
Then beat in:
- 3 eggs
- 60g raisins (optional)
- 80g sunflower seeds (optional)
Finally, stir in:
- 250g self-raising flour (zelfrijzend bakmeel, which is cheaper than flour in my supermarket)
This is enough for a small-ish pie dish or baking dish. I have a 24x24cm square tray that is way too big. The batter spreads too thin and it ends up baking too dry. A smaller tray is better.
The batter looks dreadful and runny when you pour it in the baking dish. Bake at 180℃ for 35 minutes or so.
02 Jan 2026 11:00pm GMT
Web Review, Week 2026-01
And we've finally reached 2026! I wish you all lots of nice Free Software contributions and good news regarding sustainability. Let's go for my web review for the week 2026-01.
How We Lost Communication to Entertainment
Tags: tech, social-media, communication, community
Indeed, social media even the fediverse isn't really about communication or community, it's about consuming content.
https://ploum.net/2025-12-15-communication-entertainment.html
I'm brave enough to say it: Linux is good now
Tags: tech, linux, foss, gaming
Another call for gamers to switch to Linux. Let's see if the numbers are following in 2026.
Europe gets serious about cutting US digital umbilical cord
Tags: tech, politics, business, europe
Looks like Europe is finally waking up. It needs to pick up the pace now.
https://www.theregister.com/2025/12/22/europe_gets_serious_about_cutting/
A post-American, enshittification-resistant internet
Tags: tech, business, politics, DRM, attention-economy, privacy, gafam, ai, machine-learning, gpt, copilot, technical-debt
Probably one of the most important talks of 39C3. It's a powerful call to action for the European Union to wake up and do the right thing to ensure digital sovereignty for itself and everyone else in the world. The time is definitely right due to the unexpected allies to be found along the way. It'd be a way to turn the currently bad geopolitical landscape into a bunch of positive opportunities.
https://media.ccc.de/v/39c3-a-post-american-enshittification-resistant-internet
Beyond the Machine
Tags: tech, ai, machine-learning, gpt, philosophy, music, art, programming
Long but interesting piece. There's indeed a lot to say about our relationships to tools in general and generative AI in particular. It's disheartening how it made obvious that collaborative initiatives are diminishing. In any case, ambivalence abounds in this text… for sure we can't trust the self-appointed stewards of the latest wave of such tools. The parallel with Spirited Away at the end of the article is very well chosen in my opinion. The context in which technologies are born and applied matters so much.
https://frankchimero.com/blog/2025/beyond-the-machine/
Thanks AI!
Tags: tech, ai, machine-learning, gpt, copilot, criticism
I think Rich Hickey hit that nail on the head.
https://gist.github.com/richhickey/ea94e3741ff0a4e3af55b9fe6287887f
My first meshtastic network
Tags: tech, radio, distributed, meshstatic
This is really fun tech. I need to find time to experiment with it.
https://rickcarlino.com/notes/electronics/my-first-meshtastic-network.html
Gaming Couch - Play Couch Co-Op Games Instantly
Tags: tech, gaming, indie, web
Looks like a neat option for quick party games.
Email Privacy Tester
Tags: tech, email, security, tools
This looms like a handy help to check your email client is doing the right thing and is not leaking information.
https://www.emailprivacytester.com/about
Bluetooth Headphone Jacking: Full Disclosure of Airoha RACE Vulnerabilities
Tags: tech, bluetooth, security
This is definitely a bad one, there seem to be quite a few popular devices affected. And there might be more devices affected of course.
A Modern Recommender Model Architecture
Tags: tech, ai, machine-learning, data-science
Very comprehensive resource to make your own recommender model.
https://cprimozic.net/blog/anime-recommender-model-architecture/
How uv got so fast
Tags: tech, rust, python, design, performance
Unsurprisingly, this is mostly not related to the use of Rust. The design choices are what male uv so fast.
https://nesbitt.io/2025/12/26/how-uv-got-so-fast.html
witr: Why is this running?
Tags: tech, processes, system, tools
Early days for this little system tool. I really like the idea though.
https://github.com/pranshuparmar/witr
TIL: Restarting systemd services on sustained CPU abuse
Tags: tech, system, processes, systemd
Might be an interesting pattern to avoid a service going awry.
https://taoofmac.com/space/til/2025/12/28/1400
Huge binaries
Tags: tech, system, assembly, hardware, cpu
Nice little introduction in the fascinating world of very large binaries.
https://fzakaria.com/2025/12/28/huge-binaries
On the Brokenness of File Locking
Tags: tech, linux, filesystem
It's been written a while ago now… and it's admittedly still a mess. Be sure to read the addendum as well.
https://0pointer.de/blog/projects/locking
Everything you never wanted to know about file locking
Tags: tech, unix, linux, filesystem, python
The situation about file locking is really complicated in the Unix systems family.
https://chris.improbable.org/2010/12/16/everything-you-never-wanted-to-know-about-file-locking/
By how much does your memory allocator overallocate?
Tags: tech, system, memory
A good reminder that allocators generally do more than you expect.
https://lemire.me/blog/2025/12/30/by-how-much-does-your-memory-allocator-overallocates/
The production bug that made me care about undefined behavior
Tags: tech, c++, memory
Careful of undefined behaviours. They can be reached fairly quickly. Especially in C++ and its initialisation maze.
https://gaultier.github.io/blog/the_production_bug_that_made_me_care_about_undefined_behavior.html
Software taketh away faster than hardware giveth: Why C++ programmers keep growing fast despite competition, safety, and AI
Tags: tech, c++, community, safety
This piece is (unsurprisingly) biased. Still there's some truth there. C++ is here to stay, like it or not. The safety issues are overblown and are getting addressed. Now where the article is lacking is that the language has other issues. Also, will profiles ever become a real thing?
The Second Great Error Model Convergence
Tags: tech, exceptions, failure, go, zig, rust, type-systems
This is indeed interesting to see how the landscape evolved around error handling. There's clearly a tension between exceptions and the result types we've seen popping up everywhere now.
https://matklad.github.io/2025/12/29/second-error-model-convergence.html
Rust Errors Without Dependencies
Tags: tech, rust, failure, exceptions
A bit too unapologetic regarding Rust API choices for my taste. Still, it gives a good idea on how error handling works in Rust.
https://vincents.dev/blog/rust-errors-without-dependencies/
TIL: serde's borrowing can be treacherous
Tags: tech, rust, serialization, failure
You assumed you could deserialise in a zero copy fashion? Are you really sure about that? Think twice.
https://yossarian.net/til/post/serde-s-borrowing-can-be-treacherous/
Scratchapixel
Tags: tech, 3d, graphics, learning
Looks like a nice resource to get started with graphics and 3D.
https://www.scratchapixel.com/
A silly diffuse shading model
Tags: tech, 3d, graphics, shader
It's not that silly. It can come in useful in some cases, for artistic or debug reasons.
https://lisyarus.github.io/blog/posts/a-silly-diffuse-shading-model.html
You can't design software you don't work on
Tags: tech, design, architecture
I'm not sure I fully align with this piece. The core tenet of generic design advice vs concrete design advice makes sense though.
https://www.seangoedecke.com/you-cant-design-software-you-dont-work-on/
The 9 indispensable DEBUGGING RULES
Tags: tech, debugging
A good summary on the important rules to follow to debug something.
https://tpierrain.blogspot.com/2010/11/9-indispensable-debugging-rules.html
Pair Programming - What Works, What Breaks, & What's Next
Tags: tech, pairing, team
Interesting insights about pair programming.
https://spin.atomicobject.com/ten-years-of-pair-programming/
The Rime of the Ancient Maintainer
Tags: tech, maintenance, sustainability
This is a good praise for the work of maintainers. They're fighting off entropy and this should be well regarded.
https://www.joanwestenberg.com/the-rime-of-the-ancient-maintainer/
Definition of Ready
Tags: tech, agile, product-management, tests
The definition of ready can be a big help avoiding too many questions about stories as they are implemented. They should be clear before hand.
https://blog.gdinwiddie.com/2014/03/27/definition-of-ready/
The Humanizing Work Guide to Splitting User Stories
Tags: tech, agile, project-management, product-management
This is a very good resource on the different ways to split user stories.
https://www.humanizingwork.com/the-humanizing-work-guide-to-splitting-user-stories/
Stop Using Story Points
Tags: tech, agile, estimates, project-management
Estimates are always the weak spot in project management in my opinion. Story points are generally confusing and there are better ways.
https://www.industriallogic.com/blog/stop-using-story-points/
Bye for now!
02 Jan 2026 4:58pm GMT
01 Jan 2026
Planet KDE | English
Oliebollen Recipe
This is a recipe post. Allergens: contains gluten, lactose, and alcohol.
The oliebol is a Dutch thing for new year's eve. From mid-November you can find stalls in front of supermarkets, at the home-improvement store, outside the mattress store, in squares everywhere. The oliebollenkraam. And then the boxes of Koopman's Oliebollen Mix start blocking the aisles at the supermarket, and the 5 litre jugs of frying oil appear on shelves. More information about oliebollen (and how as a food-product they're not limited to the Netherlands) can be found on the internet.
It's a thing.
At new year's eve, the neighbours at the end of my little street get together - Adriaan, Adriaan, Antoon, and whoever else shows up - to fry oliebollen under my car port. Each year our getup gets a little more fancy, with better screening from the wind, improved lighting, what have you. There's a fire to keep us warm, music (Snob 2000 is a good pick), and whatever weird-ass alcoholic beverages we've collected this year. Slovenian "Punch" liqueur? Elster kruitenbitter? Maracuja cream? Lychee fizz? Pour it.
Here's what I made this year, since I don't use the boxes of mix. The mix is good enough, but there's some joy to be had in do-it-yourself. Besides, as a daily baker-of-bread I have everything in-house anyway. Recipe is good for about 20 boils, depending on the size of the spoon used to spoon the batter into the deep-fryer.
Volkoren Herfstbok Oliebollen
Wets:
- 250ml Grolsch Herfstbok, warmed up in the microwave (about 1min at 600W)
- 250ml milk, also warmed up
Drys:
- pinch of salt
- 8g (a small scoop) brown sugar
- 6g (a heaping teaspoon) dry yeast
- 250g whole wheat flour (for bread; the local windmill adds a little extra gluten and ascorbic acid)
- 250g white flour (patentbloem from the supermarket)
Lumps:
- 125g of raisins or currants, soaked in warm water and then drained
Mix the wets. Mix the drys. Mix the drys into the wets and stir to a smooth(-ish) batter. Stir in the lumps. Let rise for at hour or a little more at 40℃. Fry spoonfuls (I have a small soup-ladle that yields a nice size) at 180℃ for 5 minutes, flipping them in the hot oil after about 3 minutes to brown them nicely on both sides.
01 Jan 2026 11:00pm GMT
FreeBSD upgrade-to-15
They say never underestimate the bandwidth of a station-wagon full of tapes, but a USB 3.2 NVMe enclosure with a 1TB stick in it is pretty slick, also. I've been moving it back-and-forth between FreeBSD machines to get everything updated, and here's some notes (for my future-self, mostly).
ZPool is cool
The stick has a GPT on it, and then a couple of partitions. I followed the example in the gpart(8) manpage under GPT. That creates a boot-partition, some swap, and a UFS partition - as if you want to create a bootable FreeBSD disk.
After that I put a rest-of-the-disk partition of type freebsd-zfs. Using glabel(8) I labeled that partition as zjail (ZFS pools traditionally start with the letter Z, and this one is going to be mostly-for-jails).
Then zpool can be used to create a pool from that labeled partition.
gpart add -t freebsd-zfs da0
glabel label zjail da0p4
zpool create zjail label/zjail
Sure, it's not got any redundancy, nothing special, but it's 1TB I can carry around, and it's easier than configuring NFS drives and/or WiFi on the laptop. To use the space, zpool import zjail (just don't forget to zpool export zjail before shutting down).
etcupdate, ugh
Initially, I had a zjail/src filesystem, and under that some directories like src/ and ports/. It is possible to buildworld and buildkernel there, but etcupdate (which is a tool that updates the things in /etc/ based on the newly-built world) needs extra handholding for that, and the error message isn't very informative. I forget what it is, even, because I ended up re-creating ZFS filesystems zjail/data/src and zjail/data/ports and then setting the mountpoint property for them to mount them in the traditional locations.
AMD graphics
The graphics drivers in FreeBSD are imported from Linux. There are some kernel shims, but basically we run the same graphics stack. However, the shim code is some tricky PCI-wrangling, and in my case with FreeBSD 15.0 I could get a text console, but loading the graphics drivers with kldload amdgpu would panic the kernel.
There are issues #391 and #393 which look similar to the panic that I would see. Bjorn has a proposed patch which simplifies the PCI-wrangling a little (to my eyes, anyway). I applied the patch and rebuilt "all the things", after which both slightly-older (drm-66-kmod) and newer (drm-latest-kmod, which corresponds to Linux 6.9) drivers seem to work.
I imagine some fixes will land soon, because "AMD graphics just doesn't work" does not seem like a long-term sustainable situation. With the fixes applied, I have a working graphics stack, so …
KDE Plasma Wayland on FreeBSD 15
Assuming the graphics stack works, then KDE Plasma can be installed with pkg install plasma6-plasma . You can't do much with only Plasma and no applications at all, so pkg install konsole is recommended as well.
After that "it just works", at least for the way that I use KDE Plasma. It takes a few clicks to change the settings to what I actually want (e.g. CTRL is next to the letter A) but after that it's … just the usual KDE Plasma session, which looks like this in KInfoCenter:
01 Jan 2026 11:00pm GMT
39C3
Volker mentioned that we need better blog post coverage of events, so hereby I'm doing my part :)
I attended the yearly 39th Chaos Communication Congress (39C3), together with a number of KDE people and my local hackerspace Spline.
This year I wanted to attend a few more talks live and in person, which worked somewhat well. I'll include a list of talks in the end, in case you are looking for some ideas for talks to watch on media.ccc.de.
Just like last year, I spend a large amount of time at the KDE assembly. Once again, we were part of the Bits & Bäume Habitat. My initial worries about our new location being being in a fairly dark hall instead of the bright and very visible area near the central stairs turned out to be unjustified. We received tons of great feedback and had many nice and motivating conversations with other developers and users.
Victoria started a Konqi hotline service on the Congress phone network, which was in high demand.
The most important activity for me at Congress was meeting some Transitous contributors I had not yet talked to in person. It was great to meet you all.
There were also multiple opportunities to connect with GNOME developers and designers. We identified some low-level components that we might be able to share. We exchanged our ideas for making contributing as easy as possible for new contributors, a topic which GNOME is doing fairly well at as far as I can tell.
Projects
Later on, the KDE assembly turned into a (very small) mini-KDE-Sprint. We shipped much improved maps in KDE Itinerary, based on the MapLibre project. This allows us to render vector-based tiles, which means they can be displayed at any size without visible pixels. Zooming in and out should also be much smoother. This should also fix the pixelated rendering at certain zoom level that sometimes showed with the previously used map. Another advantage is, that the map now shows labels in the local language as well as English. This makes the map much more useful in case you cannot read a locally used script. In the future, we might even be able to use map tiles that can display labels in your preferred language. A big Thanks to Volker, Carl and Tobias who helped with bundling and testing MapLibre for Android.
Afterwards, we looked into options for making a more general KDE maps application, but this will take a bit more work. However, we already have a number of great components, which should make this much easier, such as the code for accessing public transport data known from KDE Itinerary, KPublicTransport, the library for reading opening hours (KOpeningHours) and our library for accessing weather forecasts, KWeatherCore. That leaves this as mostly a matter of tying together all of these components in a nice UI. However, the Qt bindings for MapLibre don't currently expose enough details for us to do that, so some preparation is required.
I also managed to work on a few long-standing tasks in Transitous. It is now possible to add manual configuration options to public transport feeds in France, which used to be overwritten by a script. Additionally, it is now possible to automatically add all feeds for a country from the Mobility Database, which should make adding new countries a lot easier.
Sessions
- Railway-bubble Meetup Meetup of people interested in a diverse list of railway-adjacent topics. I joined the subgroup interested in crowd-sourcing GPS positions of trains, where I presented the minimal prototype I built for Transitous.
- Transitous Meetup We met with some users of the Transitous API and apps, and exchanged ideas for future improvements. A major topic was support for accessibility features, like considering elevator status in routing. We also discussed possible ways to improve the accuracy and details of data in Germany, where schedules go through a long pipeline that loses details and introduces long delays in the delivery of changes. Thanks to Julius for organizing and moderating this.
Talks
- Zentrum für Politische Schönheit: Ein Jahr Adenauer SRP+ und der Walter Lübcke Memorial Park - A quite fun and hopeful talk, considering the broader topics covered, about the work of a political art collective in Germany.
- All my Deutschlandtickets gone: Fraud at an industrial scale Investigation into different kinds of fraud patterns based on Deutschlandtickets.
- Human microservices at the Dutch Railways: modern architecture, ancient hardware? - Insights into the operations of Dutch Railways
- Infrastructure Review - Interesting statistics on the huge scale of infrastructure involved in the Congress
As you can see, I still left a lot to watch online over the following few days.
01 Jan 2026 9:12pm GMT
31 Dec 2025
Planet KDE | English
Kaidan 0.14.0: Advanced Media Sharing and Registration Provider Filtering
Here comes Kaidan 0.14.0! It includes some great new features and fixes!
Most of the work has been funded by NLnet via NGI Zero Entrust and NGI Zero Commons Fund with public money provided by the European Commission.
Advanced Media Sharing
It is now possible to select media to be shared while being offline. Once you are connected, all media is automatically uploaded. Even downloads can be enqueued to be started as soon as you are online. In addition, ongoing transfers are canceled on disconnecting and automatically restarted once connected again. Up- and downloads can be manually canceled and restarted as well.
Filtering XMPP Providers for Account Creation
Kaidan's manual registration now allows to filter all XMPP providers by various properties. For example, you can choose whether only providers are shown that store their data in a specific country or whose service runs on renewable energy. That is possible because Kaidan uses the data from XMPP Providers.
Highlighted Messages
Messages are now precisely highlighted on various actions. A border is displayed around a message if you open its context menu, search it, or jump to if from a reply. That makes it possible to quickly see the relevant message.
XMPP URIs
If you received an XMPP URI such as xmpp:alice@example.org, you can paste it directly into the field for adding a new contact. There is no need to remove any characters that are required to be machine-readable. The same applies to XMPP group chat URIs.
Changelog
There are several other improvements. Have a look at the following changelog for more details.
Features:
- Keep draft messages on top of pinned/unpinned chat list items (pehg)
- Optimize thumbnail creation (fazevedo)
- Display border around searched/referenced message instead of bar (melvo)
- Display border around message if its context menu is shown (melvo)
- Highlight message's avatar if hovered (melvo)
- Display provider chat (used for welcome messages and service announcements) as such (melvo)
- Always display same name and proper avatar initials for notes chats (melvo)
- Allow to cancel downloads/uploads (fazevedo)
- Allow to restart canceled uploads (fazevedo)
- Allow to resend failed message via context menu (melvo)
- Retrieve support addresses from server instead of provider list (XEP-0157: Contact Addresses for XMPP Services, XEP-0128: Service Discovery Extensions) (melvo)
- Allow adding contact by entering XMPP URI (including authentication of OMEMO 2 keys) (melvo)
- Allow joining group chat by entering XMPP URI (melvo)
- Add option for allowing SASL PLAIN (needed for servers using LDAP) to custom connection settings (melvo)
- Add filtering options to choose provider for registration (melvo)
- Cancel file transfers on disconnecting from server (fazevedo)
- Add support for offline media sharing queue (fazevedo)
- Restart downloads canceled on logout once logged in (melvo)
- Remove all related data on message removal (such as reactions and media) (melvo)
Bugfixes:
- Fix displaying message reaction details (melvo)
- Fix adding unneeded separator on mention after new line (melvo)
- Wrap hint for actions needing user to be connected to server (melvo)
- Fix displaying icons on Windows (pehg)
- Fix adding new line at cursor position (melvo)
- Ensure that own encryption devices are not removed if notes chat is removed (melvo)
Notes:
- Kaidan requires KIconThemes (for Windows) now
- Kaidan requires Qt6GuiPrivate (for Qt 6.10 or above) now
- Kaidan requires Qt 6.7 now
- Kaidan requires QXmpp 1.13 now
Download
- Source code (.tar.xz) (sig signed with 04EFAD0F7A4D9724)
- Linux (Flatpak on Flathub)
Or install Kaidan for your distribution:
31 Dec 2025 11:00pm GMT





