I have one desktop machine, my daily-driver, which runs FreeBSD 13 – the latest supported version is 13.5 – and which I want to keep on KDE Plasma 5 (and all the rest of the last-gen KDE things). I do also want a modern KDE Plasma 6 desktop, but I’ll do that on a slightly newer machine. Here’s some notes-for-myself.

The FreeBSD ports tree is branched every quarter, roughly with the idea that you can pick a stable(-ish) branch of ports to consume, or you can go with main and get the ports-du-jour. The branches also offer a way of sticking to older releases of some software.

KDE Plasma 6 (and most of KDE Gear, and all the supporting KDE Frameworks) have arrived in main, and the KDE Plasma 5 ports have been removed. That’s a decision of the kde@ group of maintainers of the KDE ports in FreeBSD, one which boils down to not having the time available to maintain both versions, and wanting to be able to upstream fixes.

But I want to stick with older KDE software, at least on my daily driver, a little longer. Oh, and I want a recent Telegram port. And a pony, too.

Previous-generation Stuff

KDE stuff is simple to do:

  • Check out the ports tree, e.g. git clone https://git.freebsd.org/ports.git
  • Switch to the last branch that has KDE Plasma 5-era software, e.g. git checkout 2025Q1
  • Build KDE software, e.g. use poudriere(8) to build the port x11/kde5

Some additional things that I use also work from that ports branch:

  • Firefox
  • LibreOffice

Somewhat surprising (to myself, anyway) was that Telegram, a desktop instant-messaging client, was not a very-recent version in the branch, but also that the version available in the branch did not even compile. The problem looks like this:

tdesktop-5.10.0-full/Telegram/lib_base/base/qt/qt_compare.h:24:43:
   error: redefinition of 'operator<=>'
   24 | [[nodiscard]] inline std::strong_ordering operator<=>(
/usr/local/include/qt6/QtCore/qstring.h:777:5: note: previous definition is here
  777 |     Q_DECLARE_STRONGLY_ORDERED(QString)

That’s just a clash between the Qt6 bundled with Telegram and the one on the system, but it is rightly annoying. I ended up cherry-picking updates from Telegram 5.10.0 up to 5.10.7 from the main branch (it took a couple of rounds of conflict-resolving, though) which is recent-enough and also builds. Thanks Sergey for maintaining that port.

Next-generation Stuff

Over on FreeBSD 14.2, my “other” machine which I kind of hope to make my main desktop soon-ish, using the main branch from FreeBSD ports gives me fairly-recent KDE software. In this branch, we (as in kde@ in the FreeBSD ports tree) gave up again on KDE version numbers. KDE software is just KDE software – which is also what the KDE community would like us to call it.

Six years ago, I wrote about kde5 which kidded around a bit, but we had x11/kde4 and x11/kde5 side-by-side for a long time. No more. You (metaphorical “you, the person using KDE on a FreeBSD desktop”) get the latest stuff, and it’s just called KDE, and we’re not going to bother with those version labels anymore (which is what upstream has been saying for over ten years now).