Friday, 12 December 2025
KDE today announces the release of KDE Frameworks 6.21.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
KConfig
- KConfigIniBackend::parseConfig: reuse allocated buffer to read group name. Commit.
- Use ECM_TEST_NAME_PREFIX. Commit.
- Fix FindNext shortcut on macos. Commit.
- Fix documentation of KSharedConfig::openStateConfig. Commit.
- Kconfig_target_kcfg_file docs: add "since" note. Commit.
- Kconfig_target_kcfg_file: avoid recreating same kcfgc file each cmake run. Commit.
- KF6ConfigMacros: No longer explicitly include CMakeParseArguments. Commit.
- Kconfig_benchmark: add testParsing benchmark. Commit.
- KconfigIni: stream parse ini files. Commit. Fixes bug #48702
- [kwindowconfig] Remove weird note from documentation. Commit.
KDE Daemon
- Drop detectPlatform. Commit.
KGlobalAccel
- Call unregister() and setInactive() asynchronously. Commit.
KImageformats
- Add allocation limit test (0/256 MiB). Commit.
- AllocationLimit = 0 means no limit. Commit.
- Fix various typos in the codebase. Commit.
- XCF: initialize tiles and buffers. Commit.
- HDR: fix uninitialized buffer. Commit.
- PSD: add support for GrayA (8/16/32 bit) and Gray 32 bit. Commit.
- PSD: fix use of uninitialized tmp image. Commit.
- EXR: fix of uninitialized RGB read buffer. Commit.
- RGB: fix Use-of-uninitialized-value. Commit.
- HDR: readHeader() sanity checks. Commit.
- PSD: return error if a complete line is read/decompressed. Commit.
KIO
- Kfileplacesview: remove DropAction::MoveAction from the list of supportedActions. Commit. Fixes bug #509231
- RenameDialog: Add "Compare Files" button. Commit.
- Use ECM_TEST_NAME_PREFIX. Commit.
- Add braces around single-line if statements. Commit.
- KFileItem: Remove or shorten timezone in timeString. Commit.
- KFileWidget: Guard empty selection when double clicking. Commit.
- Remove unneeded Q_Q. Commit.
- Fix creating links to subdirectories of desktop links. Commit. Fixes bug #479350
- RenameDialog: Set devicePixelRatio on PreviewJob. Commit.
- RenameDialog: Use KContextualHelpButton. Commit.
- KPropertiesDialog: Use KFileItem::timeString. Commit.
- FilePreviewJob: Abort preview if no plugin is found. Commit. Fixes bug #511305
- Http: Use operation with known verb, if applicable. Commit. Fixes bug #492178
- FilePreviewJob: After stat'ing the file, report the data back. Commit.
- Pastejob: Emit ERR_USER_CANCELED when closing paste filename prompt. Commit. Fixes bug #493075
- Revert "KFileItemActions: Don't show hidden services on Open With menu". Commit. Fixes bug #508607
- Kurlnavigator: show focus indicator. Commit. See bug #150718. See bug #428440
- KCoreDirLister: stop looking back at mount points. Commit.
- KProcessRunner: Avoid setting bogus working directory. Commit.
- Kfilefilter: workaround to crash in Qt 6.11. Commit.
- Systemd: prevent passing invalid env vars starting with digit. Commit. Fixes bug #510968
- Kmountpoint: do not follow symlink before getting realpath. Commit.
- Trash: don't fallback to home trash if trash is unavailable. Commit. Fixes bug #502315. Fixes bug #481532
- Trash: force confirmation for ERR_TRASH_FILE_TOO_LARGE. Commit. Fixes bug #475235
- Escape /* inside comment. Commit.
- Copyjob: Fallback to file-based progress when byte size is unavailable. Commit. Fixes bug #511241
Kirigami
- SwipeListItem: Add back checking for parent width and implicitWidth. Commit.
- Add extra margin only for default title. Commit.
- Documentation fixes. Commit.
- Document requirements for new components. Commit.
- Add TitleSubtitleWithActions. Commit.
- ListItemDragHandle: Drop outdated comment about DelegateRecycler. Commit.
- ColumnView: fix re-pushing pages still in pop animation. Commit.
- Ensure _BREEZEICONS_DIR contains a REAL_PATH. Commit.
- Update the PageRow.interactive docs for current reality. Commit.
- HandleButton: fix visibility. Commit.
- PageRow: fix sidebar open/close animation. Commit.
- SwipeListItem: Make layout work well after ItemDelegate changes. Commit.
- Temporarily drop test case that is broken with Qt 6.11. Commit.
- Chip: change remove button label to avoid assuming what the chip represents. Commit.
- Chip: make close button work when not interactive. Commit.
- Make Chip behave more like common Qt Quick Controls. Commit.
- Add a missing icon to kirigami_package_breeze_icons. Commit.
- BannerImage: Add property to control heading icon size. Commit.
- Fix link to api.kde.org. Commit.
- Controls/AboutItem: align author buttons in fixed column. Commit.
- SearchDialog: Properly disable search field shortcut. Commit.
- PrivateActionToolButton: Do not show tooltip if it's identical to text. Commit.
- OverlayDrawer: fix handle icons. Commit.
- ApplicationHeader: Make top toolbars the same height/spacing as QWidget ones. Commit.
- Controls/AboutItem: adjust heading stylings. Commit.
- ApplicationHeader: Make top toolbars height more consistent. Commit.
- KF6KirigamiMacros: remove unnecessary CMakeParseArguments. Commit.
- Globaltoolbar/NavigationButtons: fix Back button in RtL. Commit. Fixes bug #511295
- DrawerHandle: don't show the handle if is not handleVisible. Commit.
- Address memory leaks in PagePool. Commit.
- OverlayDrawer: Move handles in the toolbar. Commit.
- Documentation typo in DefaultCardBackground component. Commit.
- AbstractCard: Use default command in documentation. Commit.
- Card: Remove default value documentation for actions. Commit.
- IconPropertiesGroup: Fix a few documentation mistakes. Commit.
- Include qtqml tags in our documentation build. Commit.
- Abstractapplicationwindow: clarify when to use it. Commit.
- Page: Fix undefined error when using a Page in a ColumnView outside of a PageRow. Commit.
- Add cppcheck to CI. Commit.
KJobWidgets
- Fix double free of JobView in KUIServerV2JobTracker. Commit.
KNotifications
- Fix build with Qt 6.10 on Android. Commit.
KSVG
- Remove unused signal. Commit.
- Simplify ImageSet config file handling. Commit.
- Remove FallbackImageSet config handling. Commit.
- Wrap useGlobal handling in deprecation macro. Commit.
- Wrap ImageSet metadata handling in deprecation macro. Commit.
- Drop unused variable. Commit.
- Add test for ImageSet::filePath. Commit.
- Add test for currentImageSetHasImage. Commit.
- Rename imageSetChanged parameter. Commit.
- Test ImageSet file selectors. Commit.
- Drop iconImageSetMetadataPath. Commit.
- Reduce scope of themeMetadataPath variable. Commit.
- Remove KDirWatch leftovers. Commit.
- Run clang-format. Commit.
- [imageset] Preserve basePath when calling setImageName. Commit.
- Add Alpine CI build. Commit.
- Correct some typos in FrameSvg docs. Commit.
- Clarify what FrameSvg insets are. Commit.
- Clarify what FrameSvg margins are. Commit.
- Add FrameSvg::insets(). Commit.
- Add QMargins getters for margins in FrameSvg. Commit.
- Fix deprecation syntax. Commit.
- [imageset] Deprecate metadata. Commit.
- [imageset] Deprecate setCacheLimit. Commit.
- [imageset] Deprecate setUseGlobalSettings. Commit.
- [imageset] Remove unused isDefault. Commit.
- [imageset] Remove Plasma theme version handling. Commit.
- Don't use QDir::separator. Commit.
KTextTemplate
- Examples: Align cmake_minimum_required versions in examples/ w/ root file. Commit.
KUserFeedback
- CI - Flatpak - Update Runtime to 6.10. Commit.
QQC2 Desktop Style
- *Delegate: Update the paddings of all other delegates. Commit.
- ComboBox: fix paddings. Commit. Fixes bug #512914
- ItemDelegate: support custom paddings. Commit.
- DefaultListItemBackground: make alternating background touch the edges. Commit.
- SwipeDelegate: same behavior between SwipeDelegate and ItemDelegate. Commit.
- ItemDelegate: More padding/inset to ItemDelegate to match ToolBar paddings. Commit. Fixes bug #487653
- Consistent toolbar heights with QWidget applications. Commit.
- DefaultListItemBackground: hide hover effect when control is disabled. Commit.
Syntax Highlighting
- Add new QML keywords. Commit.
- Spdx-comments.xml: update SPDX licenses. Commit.
- Add support for new wayland interface delimiter. Commit.
- Fix(cmake.xml):
CACHE{name}also can be inif,elseif, andwhile. Commit. - Misc: update comment in
cmake.xmlgenerator. Commit. - Update cmake refs to new hl state. Commit.
- Replace regex where possible with plain string matching. Commit.
- Cmake.xml: update syntax for CMake 4.2. Commit.
- Highlight Kaitai Struct (.ksy) files as YAML. Commit.
- Add tool for generating Jinja highlighting and use it on some languages. Commit.
- CSV: tolerate spaces before double quotes (#38). Commit.
- Fix import context rule order and update test reference files. Commit.
- Fix backslash in symbolops entity for proper /\ operator matching. Commit.
- Merge operator rules to satisfy CI indexer. Commit. Fixes bug #512318
- Haskell: fix backslash operator tokenization. Commit. Fixes bug #512318
- Syntax: Add blueprint-compiler syntax highlighting. Commit.
Installing binary packages
On Linux, using packages for your favorite distribution is the recommended way to get access to KDE Frameworks. Get KDE Software on Your Linux Distro wiki page
Compiling from sources
The complete source code for KDE Frameworks 6.21.0 may be freely downloaded. Instructions on compiling and installing are available from the KDE Frameworks 6.21.0 Info Page.
Building from source is possible using the basic cmake .; make; make install commands. For a single Tier 1 framework, this is often the easiest solution. People interested in contributing to frameworks or tracking progress in development of the entire set are encouraged to use kdesrc-build. Frameworks 6.21.0 requires Qt 6.8.0.
A detailed listing of all Frameworks with API documentation is on api.kde.org.
Get Involved
Those interested in following and contributing to the development of Frameworks can check out the git repositories and follow the discussions on the KDE Frameworks Development mailing list. Policies and the current state of the project and plans are available at the Frameworks wiki. Real-time discussions take place on the #kde-devel IRC channel on Libera Chat.
Supporting KDE
KDE is a Free Software community that exists and grows only because of the help of many volunteers that donate their time and effort. KDE is always looking for new volunteers and contributions, whether it is help with coding, bug fixing or reporting, writing documentation, translations, promotion, money, etc. All contributions are gratefully appreciated and eagerly accepted. Please read through the Supporting KDE page for further information or become a KDE e.V. supporting member through our Join the Game initiative.