Skip to content

Friday, 14 November 2025

Friday, 14 November 2025

KDE today announces the release of KDE Frameworks 6.20.0.

This release is part of a series of planned monthly releases making improvements available to developers in a quick and predictable manner.

New in this version

Attica
Baloo
  • Use better way to disable session management. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • [app] Skip application/mbox files greater then 10MB. Commit. See bug #443547. See bug #447681. See bug #460882
  • [balooctl] Writeback config changes before enabling or disabling indexing. Commit. See bug #419708
Bluez Qt
  • Rfkill: Write to rfkill in a thread. Commit.
Breeze Icons
  • Fix up "starred-*" icons. Commit. Fixes bug #511152
  • Add RTL versions of open-link icon. Commit. Fixes bug #506268
  • Provide external-link-symbolic as an alias to open-link-symbolic. Commit.
  • Try to avoid to depend on stuff generated by CMake. Commit.
  • Add 16px version of the RTL document-send icon. Commit. See bug #509254
  • Add document-send RTL version. Commit. Fixes bug #509254
  • Make only 24 px generation a parameter. Commit.
  • Try to avoid that we have targets that run always. Commit.
Extra CMake Modules
  • Generate-fastlane-metadata.py use https://kde.org/donate. Commit.
  • Strip username and password from Fastlane source URLs. Commit.
  • KDEClangFormat: Avoid error w/ CMP0175 enabled. Commit.
  • [FindFFmpeg] Skip version check on Windows. Commit.
  • KDE*CompilerSettings: add note why no cmake_policy is set. Commit.
  • Public KDE-specific modules: set module cmake_policy. Commit.
  • Module templates: set module cmake_policy. Commit.
  • Public general modules: set module cmake_policy. Commit.
  • Public find modules: set module cmake_policy. Commit.
  • ECMGenerateExportHeader: set module cmake_policy, not just one policy. Commit.
  • ECMGenerateExportHeader: do not push/pop module policy explicitly. Commit.
  • ECMQmlLoader: generic languages should have lower precedence. Commit. Fixes bug #509902
  • FindFFmpeg: add AVFILTER and SWRESAMPLE components. Commit.
  • Add FindFFmpeg.cmake used by many KDE project. Commit.
  • Fix QML modules to be rebuilt all the time with Qt5. Commit.
  • Ecm_generate_headers: support headers in clang vs. deduplicated header files. Commit.
  • CMakeLists.txt - remove trailing '/' to fix CMP0177 warning. Commit.
  • ECMSetupQtPluginMacroNames: fix setting up names for own build. Commit.
Framework Integration
  • Kpackage-install-handlers: check file.open result. Commit.
KArchive
  • Use CamelCase Qt include. Commit.
  • 7z: Change for{if{}} to if{for{}}. Commit.
  • Autotests/kcompressiondevicetest.cpp spell check. Commit.
  • 7z: Fix infinite loop in malformed file. Commit.
  • Ktar: Fix/Tweak the skip error condition. Commit.
  • Add nodiscard attribute to open(...) declarations. Commit.
  • Ktar: Optimize memory allocations. Commit.
  • KTar: Use skip instead of seek for skipping. Commit.
  • TestTarReadWrite: Also test with KCompressionDevice. Commit.
  • Add some const. Commit.
  • 7z: Fix assert/crash in malformed file. Commit.
  • Explicitly convert enum to int for QString::arg. Commit.
  • 7z: Break early on failure in K7ZipPrivate::folderItem. Commit.
KBookmarks
  • KBookmarkGroupTraverser: Fix typo in API documentation. Commit.
  • KBookmark::updateAccessMetadata: Utilize QDateTime method that is significantly faster. Commit.
KCMUtils
  • Added name sorting to kcmshell6 --list output. Commit. Fixes bug #509050
  • KCModuleQml: Also force height in addition to width. Commit.
  • GridDelegate & GridViewInternal: Drop mobile tweaks. Commit.
KCodecs
  • Allow to also RFC 2047-encode reserved characters. Commit.
KColorScheme
  • Fix colors in kdeglobals not being respected when platformtheme is not kde. Commit.
  • KColorScheme: Add FrameContrast API. Commit.
KCompletion
KConfig
  • Kconfig_compiler: prevent empty private: section in headers. Commit.
  • Use QLockFile.tryLock with timeout rather then lock forever. Commit. Fixes bug #508253
  • Add 59ca348606 to .git-blame-ignore-revs. Commit.
  • Kdesktopfileaction: Improve docs strings. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • Typo--. Commit.
KConfigWidgets
KContacts
KCoreAddons
  • Add missing include moc. Commit.
  • Typo--. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • Update test expectation. Qt time formatting has changed. Commit.
  • Fix the non-local license text. Commit.
  • Switch to std::enable_if_t (API consumers now required to use >= C++17). Commit.
  • Fix duplicate license text for known but externally linked licenses. Commit.
KDBusAddons
KDeclarative
  • Kquickcontrols: install kquickcontrolsprivate to KF_INSTALL_TARGETS_DEFAULT_ARGS. Commit. Fixes bug #510081
KDE Daemon
  • Use newer version of session management enablement. Commit.
KFileMetaData
  • [ExtractorCoverageTest] Fix typo in clang-format processing directive. Commit.
KGuiAddons
  • Add StartupNotify=true to geo handlers. Commit. Fixes bug #510547
  • WaylandClipboard: Avoid overriding original UTF-8 text. Commit.
  • Fix docs. Commit.
KHolidays
  • Use QCOMPARE vs QVERIFY. Commit.
  • Italy: San Francesco will be a public holiday from 2026. Commit.
  • Fixes and add days to Puerto Rico. Commit.
KIconThemes
  • [kiconcolors] Drop ActiveText. Commit.
  • [kiconcolors] Drop Complement and Contrast. Commit.
  • InvalidateFilter is marked deprecated in qt6.10. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • Remove version checks for Qt 6.8.0 that is now the minimum required. Commit.
  • Avoid saving state between multiple usages of IconDialog. Commit. Fixes bug #460451
KImageformats
  • PSD: limit memory usage on corrupted files. Commit.
  • Fix assert on broken data. Commit.
  • PSD: minor fixes while reading Image resource Section. Commit.
  • IFF: fix crash on malformed files. Commit.
  • Iff: Fix crash on malformed files. Commit.
  • PSD: improve sections size checks. Commit.
  • TGA: ignoring large metadata on dev area. Commit.
  • Check device before read. Commit.
  • Fix possible infinite loop when reading a broken jp2. Commit.
  • On demand buffer allocation on PCHG decompression. Commit.
  • Fix possible read overflow with malformed data. Commit.
  • Fix wrong palette check. Commit.
  • Use internal FP32 conversion instead of FP16. Commit.
  • Fix read test failing on aarch64. Commit.
  • Remove Qt version checks now that 6.8.0 is the minimum required. Commit.
  • Fix assert on broken data. Commit.
  • CI: Try newer libjxl for ossfuzz. Commit.
  • Tga: Reduce Warning to Debug. Commit.
  • Fix crash on malformed files. Commit.
  • Fix crash on malformed files. Commit.
KIO
  • Add missing since documentation. Commit.
  • Kfileitemactions: use actionsKey instead of name to check KAuth. Commit.
  • [ktelnetservice] Disable session management. Commit.
  • [kioexec] Disable session management. Commit.
  • [kiod] Use better way to disable session management. Commit.
  • Trashimpl: better determine trashForMountPoint for network file systems. Commit. Fixes bug #506755
  • KNewFileMenu: prevent emiting rejected signals when not rejected. Commit.
  • Knewfilemenu: when in mkdir -p mode don't append a / for last dir. Commit.
  • Kioworkers/file: check QFile::open return and early return. Commit.
  • KCoreDirLister: Enable using mime globs. Commit. Fixes bug #450612
  • Reenable kdirlister test on non-Windows. Commit.
  • KIO::MetaData::toVariant(): document internal type of returned variant. Commit.
  • Autotests: enable connectionbackendtest. Commit.
  • Apply 1 suggestion(s) to 1 file(s). Commit.
  • Autotests: favicontest make a test more fault tolerant in Win. Commit.
  • [http] Emit WorkerResult::pass() and return when a redirection is received during webdav directory listing. Commit.
  • [http] Remember that we're doing webdav while handling redirects. Commit. Fixes bug #486790
  • Kifileitemactions: Remove unused QMimeDatabase instance creation. Commit.
  • KIO::MetaData: port inline methods away from deprecated QMapIterator. Commit.
  • Previewjob: expose standardthumbnailer fileName property. Commit.
  • File_unix: print errnum in rename when failing. Commit. See bug #510810
  • Kpasswdserver: Set cancel button on dialog. Commit.
  • JobTest: add renameFileWithNoUDSACCESS test. Commit. See bug #510567
  • Kfileitems: Use internal name again for sorting. Commit. Fixes bug #510470
  • Add typo fix commit to .git-blame-ignore-revs. Commit.
  • Fix various typos. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • RenameDialog: wrap the question text. Commit.
  • Ensure QNetworkReplies are always deleted with a scope guard. Commit.
  • Fix HTTP network error propagation. Commit.
  • Forward all KIO error codes, not just ERR_ACCESS_DENIED. Commit.
  • Delete network reply also when handling a redirection. Commit.
  • Autotest/jobtest: make sure to check error return when a job fails. Commit.
  • CopyJob: Skip permission check if there is no UDS_ACCESS entry. Commit. Fixes bug #510567
  • KFileWidgets: Allow saving to currentfolder with empty input field in special cases. Commit. See bug #507193
  • KFilePlaces: add a link to systemsettings recent config. Commit. Fixes bug #507966
  • [ftp] Claim that dir is writable during stat. Commit. Fixes bug #510456
  • KNewFileMenu: move the messageWidget below the input. Commit.
Kirigami
  • Fix documentation for AlignedSize. Commit.
  • Add missing FrameContrast enum documentation. Commit.
  • Fix documentation for closeDialog. Commit.
  • Keep passive notifications inside the SafeArea. Commit.
  • ActionTextField: don't let inline buttons accept focus on click. Commit.
  • ActionTextField: use display property to control icons-only-ness. Commit.
  • OverlayDrawer: Fix handle positioning on RTL layouts. Commit.
  • Fix accessibile properties on ActionTextField properties. Commit.
  • Support menus in bottom ActionToolbars. Commit.
  • Feat: Expose closeDialog as a signal to the PageStack attached property. Commit.
  • ActionTextField: adopt some good ideas from the PlasmaExtras version. Commit.
  • ActionTextField: use standard implementation for inline action buttons. Commit. Fixes bug #484301
  • Use reversed open-link when needed and present. Commit. See bug #506268
  • PageRow: Fix dialogs not being closable via Escape. Commit.
  • PlatformTheme: setFrameContrast value. Commit.
  • CardsListView: Make sure it never will have horizontal scrolling. Commit. Fixes bug #477493
  • Cmake: Add missing icon for android. Commit.
  • ActionsMenu: Restore the icon for submenus. Commit.
  • PageRow: Different style for the push/pop animation/gesture. Commit.
  • Make Separator always perfectly pixel-aligned. Commit. Fixes bug #510353
  • Fix up overlay sheet header content width w.r.t close button. Commit.
  • Fix up overlay sheet's close button location. Commit.
  • Platform: Include child Quick items when updating child PlatformTheme instances. Commit. Fixes bug #510480
  • Remove outdated comment. Commit.
  • Typo fix. Commit.
  • SelectableLabel: Only enable shortcuts if the label has focus. Commit.
  • Platform: Skip update() in PlatformTheme if we don't have a window. Commit. Fixes bug #493921
KItemModels
  • Remove Qt version checks now that 6.8.0 is the minimum required. Commit.
KJobWidgets
  • Keep old test code around. Commit.
  • Disable kuiserver2jobtrackertest if HAVE_QTDBUS is false. Commit.
  • Make the test compile + do the basic thing. Commit.
  • Rewrite JobView code to be safer. Commit.
KNewStuff
  • Installationtest: Fix test failure on non english hosts. Commit.
  • Don't make KNSWidgets::Button the parent of KNSWidgets::Dialog. Commit. Fixes bug #501267
  • Port deprecated invalidateFilter in qt6.10. Commit.
KNotifications
  • Look up notifications again after hitting application code. Commit. Fixes bug #511645
  • Notifybyaudio: Don't show error on CA_ERROR_DESTROYED. Commit.
KPackage
KQuickCharts
  • Limit item count in ItemBuilder to basically uint16_t. Commit.
KRunner
  • Manager,context: remove launchcount adjustment. Commit.
KService
  • Kservice: Remove legacy X-KDE-Keywords and fix X-KDE-FormFactors. Commit.
  • Don't warn for empty layout without merge tag. Commit.
  • Kbuildsycoca: debug++. Commit. See bug #510287
KSVG
  • KSvg: Add ColorScheme-Frame. Commit.
KTextEditor
  • Remove unnecessary toEdge function. Commit.
  • Use KateViewInternal::Bias in move() signature. Commit.
  • Use void return type. Commit.
  • Remove the loops in the cursors. Commit.
  • Remove unnecessary methods and const overloads. Commit.
  • Remove operator overloading. Commit.
  • Remove unnecessary constructors. Commit.
  • Remove Bias::none enumerator. Commit.
  • Make function internal to the class. Commit.
  • Remove useless getter function. Commit.
  • Improve the test, use higher level api. Commit.
  • Move findMatchingFoldingMarker to KateBuffer. Commit.
  • Cleanup includes in kateviewinternal.h. Commit.
  • Include kateviewinternal.h less. Commit.
  • Move include to source file. Commit.
  • Move spellcheck function from DocumentPrivate. Commit.
  • Remove useless function. Commit.
  • Remove unused function. Commit.
  • Add QJsonObject. Commit.
  • Cleanup headers, deinline and remove unnecessary includes. Commit.
  • Use normal function pointer, std::function is not needed here. Commit.
  • Dont use std::pair/QPair, use named structs. Commit.
  • Add API to obtain the editor widget from View and vice versa. Commit.
  • Clear modeline matches if the model is irrelevant. Commit.
  • Add new config entries to public api docs. Commit.
  • Add "hide-cursor-if-inactive". Commit.
  • Add disable-current-line-highlight-if-inactive view option. Commit.
  • Simplify kateprinter, remove unnecessary KatePrinterPrivate class. Commit.
  • Make KateVariableExpansionManager a non QObject. Commit.
  • Move expandText to the file where its used. Commit.
  • Optionally return invalid cursor for coordinates outside text. Commit.
  • Kateview_test: extract lambda coordinatesToCursor(). Commit.
  • Explicitly convert enum to int for QString::arg. Commit.
KTextTemplate
  • Use QCOMPARE vs QVERIFY. Commit.
  • Update test expectation. Qt time formatting has changed. Commit.
KUserFeedback
  • Properly handling large timeouts for encouragement timer. Commit. Fixes bug #511102
  • Use const pointer. Commit.
  • Add missing explicit keyword. Commit.
  • Port deprecated invalidateFilter method (qt6.10). Use beginFilterChange/endFilterChange. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • Remove old qt check. Commit.
KWallet
  • Use QCoreApplication for kwallet-query. Commit.
  • Remove unused QtWidgets dep from API. Commit.
  • Enable KCrash for kwalletd6. Commit.
  • KSecretd: Use modern way of disabling session management. Commit.
  • Kwalletd: Disable session management. Commit.
  • Fix dismissing prompt for Unlock. Commit.
  • Use securelySeeded like in KWalletPortalSecrets::generateSecret. Commit.
  • Backend: Simplify random gathering to QRandomGenerator. Commit.
KWindowSystem
  • Platforms/wayland: Prevent reinstalling window effects with the same parameters again. Commit.
  • Kwaylandextrastest: Port to UI file. Commit.
  • Remove Qt version checks now that 6.8.0 is the minimum required. Commit.
  • Fix creating empty future. Commit.
  • Fix KWaylandExtras::xdgActivationToken when KWindowSystemPrivateV3 isn't available. Commit.
KXMLGUI
  • Use CamelCase Qt include. Commit.
  • Use QCOMPARE vs QVERIFY. Commit.
  • Switchlanguage: remove duplicates from languageList. Commit.
Network Manager Qt
  • Add missing documentation comments for WifiP2P. Commit.
  • Fix since documentation for WifiP2P. Commit.
  • Fix enum value for WifiP2P. Commit.
  • Deprecate unused, Java-style iterator NMStringMapIterator typedef. Commit.
  • Add WifiP2P device. Commit. Implements feature #502159
Prison
  • Videoscanner: Remove Qt5 note. Commit.
QQC2 Desktop Style
  • PlasmaDesktopTheme: Set frameContrast on change. Commit.
  • Harmonize delegate tooltip code. Commit.
  • SpinBox: Make paddings integer to avoid potential polish loops. Commit. Fixes bug #510758
  • Remove Qt version checks now that 6.8.0 is the minimum required. Commit.
Solid
  • Udisks: Port to DBus Object Manager. Commit.
Sonnet
  • Remove double margins around groupbox. Commit.
  • Fix load default ignore list when we call slotDefault method. Commit.
  • Add missing [[nodiscard]]. Commit.
  • Use [[nodiscard]]. Commit.
  • Show headers in qtc. Commit.
  • Ensure parent is alive when removing eventfilters. Commit. Fixes bug #492444
  • Add SpellCheckDecorator destruction autotests. Commit. Fixes bug #492444
Syndication
Syntax Highlighting
  • QFace: Change type highlighting and add fully qualified cases. Commit.
  • Implement D2 syntax highlighting. Commit.
  • Cpp: Update classes for Qt 6.10. Commit.
  • Add Starlark syntax highlighting. Commit.
  • Add new features to QFace highlighting. Commit.
Threadweaver

Thursday, 13 November 2025

Stretching your Qt UI to devices powered by microcontrollers (MCU) is now even easier! The Qt Quick Ultralite Converter of the Qt AI Assistant translates a QML to Ultralite-compliant code. It brings core Qt graphical features to resource-constrained embedded systems, streamlining application development and deployment.

Akademy 2026 will be a special edition, marking the 30th anniversary of KDE! This milestone event will take place at the Graz University of Technology in Graz, Austria.

This birthday edition of Akademy will continue to bring together contributors, users, partners, and friends of KDE to reflect on three decades of collaboration, innovation, community growth, and commitment to Free Software. Just like previous years, Akademy 2026 will be a hybrid event, offering both on-site and online participation.

We will be announcing the exact dates soon. Until then, follow us on Mastodon and Lemmy for the latest Akademy updates!

About Graz

Graz is the second-largest city in Austria and the capital of the federal state of Styria. Known for its well-preserved old town, which is a UNESCO World Heritage Site, Graz offers a blend of historic charm and modern vibrancy. The city is home to numerous cultural attractions, including the iconic Schlossberg with its clock tower, the Kunsthaus Graz, and the Murinsel, a unique architectural feature on the River Mur. Graz is also renowned for its educational institutions, particularly the University of Graz and the Graz University of Technology, making it a hub for innovation and research. The city's lively atmosphere, beautiful parks, and rich culinary scene make it an ideal destination for both leisure and professional visits.

About Akademy

For most of the year, KDE, one of the largest free and open software communities in the world, works online communicating over email, instant messaging, video-conferencing, forums and mailing lists. Akademy provides all KDE contributors with the opportunity to meet in person to foster social bonds, work on concrete technology issues, discuss new ideas, and reinforce the innovative, dynamic culture of KDE. Akademy brings together artists, designers, developers, translators, users, writers, sponsors and many other types of KDE contributors to celebrate the achievements of the past year and help determine the direction for the next year. Hands-on sessions offer the opportunity for intense work, bringing those plans to reality. The KDE community also welcomes companies building on KDE technology to Akademy, as well as those who are looking for opportunities.

Aurorae is a decoration engine that allows you easily using third party decoration themes from KDE Store.

Aurorae decoration themes at KDE Store (although there are some decoration themes that don’t use Aurorae, e.g. Klassy, but a good chunk of themes found in the Plasma 6 Window Decorations category still use it)

It’s been around for quite a while and it has a plenty long history. However, in the recent years, it has been somewhat neglected. The UI trends changed, e.g. rounded corners are all the rage now, but there has been no changes in Aurorae to allow theme creators to follow those trends more easily. There are also performance issues. In comparison to the default Breeze decoration theme, it performs quite poorly, unfortunately.

What is Aurorae anyway?

In Plasma, we have a C++ library that’s used to implement window decorations called KDecoration. Both Breeze and Aurorae use KDecoration, but the main difference between the two is that the former directly implements a window decoration that follows Breeze style, while the latter is just a very themeable window decoration.

Aurorae supports both QML and SVG themes. With a QML theme, you need to write some QML code to define how the window decoration should look and behave. With an SVG theme, you need to provide a bunch of SVG files that specify how the window frame and various buttons look. Under the hood, SVG themes are effectively built as QML themes.

QML is pretty cool because with a few lines of code, you can get something that works and looks very decent. But for our usecase, it’s also a heavy tool, and due to the way how QtQuick works, it’s very challenging to have proper fractional scaling support. To be fair, normal applications that use QtQuick are mostly fine, it’s just that we have a pretty unique usecase where we need full control where every individual pixel gets painted.

Aurorae V2

Recently, I started a rewrite of Aurorae with a few goals in mind. The first goal is to improve performance so KWin doesn’t struggle when you resize a window (just to be clear, no, this doesn’t mean that there are performance issues in QtQuick. The way QML decorations are rendered is inefficient. We render a QtQuick scene in an offscreen texture, then download its contents, and then upload its contents in another texture. These roundtrips kill performance, and they are necessary because of KDecoration API constraints). The second goal is to open up the road for fractional scaling support improvements, like fixing misaligned window border edges or gaps between the decoration and the window contents. The third goal is to prepare the foundation for future improvements and to provide more tools so artists can create themes that reflect “modern” stylistic tendencies.

In this rewrite, raw KDecoration and KSvg APIs are used. This makes aurorae decorations quite lightweight and it significantly improves performance. Some fractional scaling issues have already been fixed, while others still need more work. Window decorations are rendered on the CPU side. While, yes, it will be nice to have everything done on the GPU side, doing things on the CPU side is also not that of a big bottleneck right now. In the future, we may follow up on doing more things on the GPU, but for now, it is not high priority.

The main focus has been on improving performance issues and preserving compatibility with the previous implementation of SVG decoration themes so decorations look more or less the same way. There may be some (unintentional) differences, but they should be very minimal.

What about QML decoration themes then? The main idea behind them is brilliant, but after so many years, there are not that many window decoration themes that use QML. In either case, the original (V1) and rewritten (V2) aurorae engines live side-by-side, but the future of V1 is unclear. QML and SVG decoration themes will use V1 and V2, respectively.

Future plans

At the moment, the goal is to continue polishing and optimizing V2. There are certain limits how far we can push things due to the theme format. Some parts of the theme force us to do some things, which ideally we shouldn’t do.

It’s highly likely (not saying this for sure though!) that there will be a V3, which is going to address some theme limitations and add support for new features, for example rounding bottom window corners or outlines.

If you’re a decoration theme creator and would like to see some particular feature in Aurorae, feel free to reach out to me (@zzag) on Matrix (e.g. in #kwin) or file a feature request at https://bugs.kde.org (product: kwin; component: aurorae).

Dear Qt community!

with seven weeks to go until an exciting year 2025 will have passed, we are pleased to open the nomination period for the Qt Champion 2025 award!
See this Wiki page for more information about the award and its nomination process: https://wiki.qt.io/Qt_Champions_2025
We're looking very much forward to reading about your favorite candidates!

Cheers
Axel

Tuesday, 11 November 2025

This is the forth article of the series describing the open source value flow model. We'll focus on the value types: Reputation and Influence. We'll cover how to measure and report on them.

Tuesday, 11 November 2025. Today KDE releases a bugfix update to KDE Plasma 6, versioned 6.4.6.

Plasma 6.4 was released in June 2025 with many feature refinements and new modules to complete the desktop experience.

This release adds two months’ worth of new translations and fixes from KDE’s contributors. The bugfixes are typically small but important and include:

View full changelog

Welcome to the October 2025 development and community update.

Development Report

Text Rework Progress

The Text Tool's Tool Options have been overhauled. There's now a button to access the Text Properties docker, along with an option to create new texts with current properties or with a style preset. Options to switch between using visual or logical cursor direction for bidirectional text, and pasting rich or plain text have also been added. (Change)

The other addition is Type Setting Mode, which shows transform handles for the font size and baseline-shift. With preformatted or pre-positioned text, character transforms are also possible. Holding Shift shows different baselines to switch to. (Change)

In the area of file formats, basic support has been added for PSD text layers, vector masks, vector strokes, vector parametric shapes, and guides. (Change)

Wolthera discusses these changes in the Text Tool thread and asks again for feedback on a proposal for splitting character and paragraph properties.

Touch Input Fixes

Carsten has continued to fix issues with touch input in the Stable branch.

Long-press handled has been further improved. Long-pressing a slider-spinbox no longer shows text selection handles when not in text edit mode. The long-press distance is now calculated correctly, so a slight movement won't cancel it. The kinetic scrolling timeout no longer adds onto the long-press timeout. (Change)

Kinetic scrolling by left-click has been disabled on the animation timeline to not interfere with dragging frames and other operations. (CCbug report) (Change)

Popup-at-cursor widgets such as the Selection Action Menu now appear at the touch location instead of cursor location. (Change)

The Edit Shapes Tool now works properly with touch, instead of only making selections. (bug report) (Change)

Wayland Support

Basic HDR support for the canvas on Wayland has been implemented by Dmitry. Testing instructions and discussion of issues can be found in the forum thread. (Change)

Plans for 5.3.0's Upcoming Release

Krita 5.3.0 is scheduled to enter feature freeze on November 21st. This means no new features will be accepted for the next version, and developer focus will shift to finishing features already in progress and fixing bugs.

After a bugfixing period of a few months, the first beta testing release is currently planned for February.

Community Report

October 2025 Monthly Art Challenge Results

14 forum members took on the challenge of the "The Burden of Power" theme. And the winner is… The Burden of Power by @Famouzy

The Burden of Power 1 by @Famouzy
Be sure to check out the second piece as well!

The October Art Challenge is Open Now

For this month's theme, winner @Famouzy has chosen "Civilization Engulfed by Nature".

Best of Krita-Artists - August/September 2025

This month's Best of Krita-Artists Nominations thread received 21 nominations of forum members' artwork. When the poll closed, these five wonderful works made their way onto the Krita-Artists featured artwork banner:

Autumnal Street by @Paulo

Autumnal Street by @Paulo

Young Escherstein! by @jimplex

Young Escherstein! by @jimplex

Bee Macro by @Brian_Bigelow

Bee Macro by @Brian_Bigelow

Interstellar Gura by @RavioliMavioli

Interstellar Gura by @RavioliMavioli

Peaceful Stream by @CrazyCatbird

Peaceful Stream by @CrazyCatbird

Best of Krita-Artists - October/November 2025

Take a look at the nominations for next month, and suggest your favorite latest artworks to be featured. Don't forget to vote when the poll opens on November 11th!

Ways to Help Krita

Krita is Free and Open Source Software developed by an international team of sponsored developers and volunteer contributors. That means anyone can help make Krita better!

Support Krita financially by making a one-time or monthly monetary donation. Or donate your time and Get Involved with testing, development, translation, documentation, and more. Last but not least, you can spread the word! Share your Krita artworks, resources, and tips with others, and show the world what Krita can do.

Other Notable Changes

Other notable changes in Krita's development builds from October 20, 2025 - November 11, 2025.

Stable branch (5.2.14-prealpha):

  • Android: Make app fullscreen by default. (Change, by Carsten Hartenfels)
  • Canvas Input Shortcuts: Add Toggle Eraser Preset to canvas input shortcuts. (Change, by Carsten Hartenfels)

Unstable branch (5.3.0-prealpha):

  • Blending Modes: Add Marker blending mode. When used on a brush in Build up painting mode, it increases the layer's opacity only when the stroke's opacity is greater while mixing the colors. It's similar to Alpha Darken, but adheres to alpha lock/inherit alpha and interpolates between colors cleanly. (Change, by Carsten Hartenfels)
  • Shortcuts/Toolbars: Add actions for each Transform Tool mode. (Change, by Stuffins)
  • Toolbars: Toolbar actions' icons can now be custom-picked in Configure Toolbars, useful for actions that do not have icons by default. (Change, by Pavel shlop)
  • macOS: Sign and notarize nightly builds, allowing them to be run without workarounds. (Change, by Ivan Yossi)

Nightly Builds

Pre-release versions of Krita are built every day for testing new changes.

Get the latest bugfixes in Stable "Krita Plus" (5.2.14-prealpha): Linux - Windows - macOS (unsigned) - Android arm64-v8a - Android arm32-v7a - Android x86_64

Or test out the latest Experimental features in "Krita Next" (5.3.0-prealpha). Feedback and bug reports are appreciated!: Linux - Windows - macOS - Android arm64-v8a - Android arm32-v7a - Android x86_64

Plasma's first-run experience (FRE) / out-of-box experience (OOBE) has seen significant improvements in security recently.

Although first off I think I maybe hadn't mentioned yet how the project was renamed.

Previously known as "KDE Initial System Setup" (KISS), the project has been rebranded to "Plasma Setup" and now sits nicely alongside other system projects like "Plasma Desktop", "Plasma Mobile", "Plasma Keyboard", etc.

Enhancing Security in Plasma Setup

We received a notice of potential security issues from the folks at openSUSE, which have now been addressed.

This sort of thing is a great example of why it can be so difficult to provide ETAs and timelines for software development: unexpected issues often arise that need to be addressed before other planned work can proceed, and these issues can take time to investigate and fix properly; in this case, the security issues required careful review and testing to ensure that they were resolved without introducing new problems, and delayed our initial release by weeks.

I had very little experience with this sort of security-minded defensive programming before this, so it was a great learning experience for me personally as well. It required a whole lot of reading and research to understand the best practices and principles involved, and I definitely have a better feeling for how to think about defensive programming in the future.

It amazes me the kinds of things people will try to do to break software, and many of them (like path traversal attacks) are things I would never have thought of on my own!

I'd like to thank the openSUSE security team for responsibly disclosing these issues, and for their patience while we worked through them. Their help has made Plasma Setup more secure for all users, and I appreciate their dedication to improving the security of open source software.

A massive thank you specifically to Matthias Gerstner for the multiple rounds of detailed and thoughtful reviews and suggestions on the MR to address these issues. Your help was invaluable, and it was a pleasure working with you! 🙇‍♀️ 💙 🦎

Looking Ahead

Plasma Setup is nearly ready for initial testing and adoption. There are a couple more items to wrap up, but (barring further unforeseen delays!) we are very close to being able to release it for early adopters to try out! 🎉

Monday, 10 November 2025

Calamares is a Linux system installer. During installation, it asks the user where they are on the globe, in order to set the timezone correctly on the installed system. Calamares displays the nearest timezone after you click on a map. I would like to leverage that a little for social good (or at least a tiny bit of awareness).

The last time I wrote about the Calamares timezone selector, I also said it is terrible.

One thing I do like about the timezone selector is that it supports translating the name of a timezone. That way, even though the string in the timezone database is Europe/Kiev – a relic of the time-period that the timezone database was conceived – it displays the correct Europe/Kyiv. That’s when you run Calamares in English, anyway.

I added timezone translations to Calamares because a friend asked for it, and then did a couple of Dutch translations. That is because Dutch has exonyms (names in Dutch for other places) and calls Berlin, Berlijn and Paris, Parijs. There is a timezone Europa/Berlijn. The official Dutch name – last I checked – of Kyiv is Kiev, though.

The current translations addresses only a tiny fraction of the timezones, most of them ones that I have personally paid attention to, and I’d like to change that.

So here is the social project: I want, for every timezone-location (in FreeBSD, those are listed in /usr/share/zoneinfo/zone.tab) a local name. Please send them to me by email or as a change request in Calamares on Codeberg, the relevant file is tz_local.ts.

I imagine a lot of the ones in Europe will be unchanged, although I feel like Europe/Chisinau is missing accents, Europe/Athens should be Αθήνα. Those are relevant, but I’m more interested in imported names. The exonyms (what others call a place, like “Berlijn”) could be endonyms (what is the local name, like “Berlin”).

For everywhere where the name of the timezone was imported, I want to know what it would be locally, written locally. From Africa/Harare (this one might already be accurate, but for comparison purposes, pretend it was Africa/Salisbury, like in an atlas from 1922) to Australia/Broken_Hill to America/Edmonton (which could plausibly be ᐊᒥᐢᑿᒌᐚᐢᑲᐦᐃᑲᐣ if we pick the Cree name for the area) to America/Santiago to Asia/Dubai (دِبَيّ in Emirati Arabic) they all deserve a local name and I’d like to make that possible in Calamares.