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!
I've been writing for something like 50 years now. I started by scribbling letters on paper as a child because I was fascinated that these expressed meaning. I wrote a lot for school, for university, for work, and privately. I wrote letters, emails, posts on social media, articles, papers, documentation, diaries, opinion pieces, and presentations. I've been writing my blog for more than 20 years.
Writing always has been a way for me to connect to the people, to the community, around me, communicating with my tribe. It also has always been a way to express, refine and archive my thoughts, a bit like building a memory of insights. It also has been a way to record some of my personal history and the history of the projects I'm involved with.
My writing has changed over the last couple of years. I'm writing less publicly and more focused on specific projects. It feels like it has become less personal and more utilitarian.
Part of this is that the Internet has lost a good part of its strength as a neutral platform to reach the world. For a long time I knew where to reach the people I wanted to address and had control about my content and how it was distributed. Nowadays social media platforms act as distributors, but we are prey to their algorithms. So while publishing content is still simple, it's much harder to get it to your audience without compromising to the mechanisms which make the algorithms tick.
Another part is the disrupting advance of AI writing capabilities. While I have relied on humans to give me feedback in the past, to get into a conversation on the topics of my posts to refine the thoughts in them, now there is this all-powerful-seeming assistant in my editor who is eager to take over those roles. And it would even write for me in my own style. So what's the value of writing in 2026? Is it even worth bothering with trying to express your thoughts in writing, when a machine can produce content which looks the same, much faster and in much larger quantity? What does this do to readers, do they still care about what I would write?
My feeling is that it's still worth to put in effort to create genuine, trustworthy, truthful writing. The format, the tools, the channels might change, but the values don't. The challenge will be to figure out how to create a signal which transports these values.
I have always liked the format and style of a blog, as a stream of thoughts, coming from a personal perspective, but focused on topics of relevance to others. I enjoy reading this from others and I enjoy writing in this style. And I don't have to rely on a platform I don't control, but can use my own.
So it looks like this blog won't go away, but will channel my thoughts in 2026 as well.
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)
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).
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).
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).
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.
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).
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.
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.
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.
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.
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.
KDE Ni! OS is a custom flavour
(configuration, not a separate distribution) of NixOS that showcases KDE software. It
builds on NixOS with the aim to reimplement the same features other
popular immutable distributions have, while providing a first-class KDE
Plasma setup.
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.
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:
The 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.
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.
P.S. Patches welcome. If you like the merge operator in Nix and
think the overlay definition would benefit from it, … :)
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)
“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:
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
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
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.
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-upgrade to 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.txz and kernel.txz for 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 your libc.
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, run make installkernel and 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 installworld and get an error message about missing libraries.
Run cp /usr/obj/usr/src/amd64.amd64/tmp/lib/* /lib to 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/src and run make installworld.
Run etcupdate -B to 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 -f to upgrade the packaging tools to the new OS version
pkg update to fetch new packaging information
pkg upgrade to 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).
fwget to 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 kde to get the important things
Post-install Configuration
The sysrc(8) commmand should be used to edit rc.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:
KDE Plasma Wayland session information on FreeBSD 15
This leaves just nVidia graphics to deal with, but for that I need to swap around some hardware in my workstation.
During the December holidays, the developers found time for a few bugfixes.
Read on for a look at development news and the Krita-Artists forum's featured artwork from last month.
Development Report
Luna fixed two crashes in the Stable branch; when undoing the Transform Tool during another transformation (bug; change), and when an embedded color profile is invalid. (bug; change).
Dmitry fixed loading TIFF files with JPEG compression (change).
In the Unstable branch, a handful more bugfixes were made:
Wolthera fixed parsing white-space-only text elements (bug; change), and issues setting text color (bug; change).
Carsten worked around multitouch gestures being cancelled on Xiaomi Pad devices (bug; change), and combined simultaneous canvas rotation and zoom messages (change).
For January's theme, last month's winner has chosen "Vintage Travel Poster", with the optional challenge of using the Assistant Tool. What kind of fantastic destination could you illustrate an advertisement for? Show others new horizons in the new year!
Krita is free to use and modify, but it can only exist with the contributions of the community. A small sponsored team alongside volunteer programmers, artists, writers, testers, translators, and more from across the world keep development going.
If this software has value to you, consider donating to the Krita Development Fund. Or Get Involved and put your skills to use making Krita and its community better!
Nightly Builds
These pre-release versions of Krita are built every day.