KDE Frameworks 5.93.0

Saturday, 9 April 2022

KDE today announces the release of KDE Frameworks 5.93.0.

KDE Frameworks are 83 addon libraries to Qt which provide a wide variety of commonly needed functionality in mature, peer reviewed and well tested libraries with friendly licensing terms. For an introduction see the KDE Frameworks release announcement.

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

Breeze Icons

  • Add some more symlinks for zoom icons (bug 450870)
  • Add input-tvremote

Extra CMake Modules

  • Fix finding qmake
  • ECMQueryQt: don’t fail when TRY is used
  • ECMQueryQt: Add fallbacks
  • ECMAddQch: Make it work with Qt6::qhelpgenerator too
  • Deprecate ECMQueryQmake, superseded by ECMQueryQt
  • KDEInstallDirs6: port from custom logic to ecm_query_qt
  • Port from ECMQueryQmake to ECMQueryQt
  • Android: use the current cmake executable
  • Add ECMQueryQt module, which encompases both Qt5 Qmake and Qt6 qtpaths
  • generate-fastlane-metadata: Don’t fail if source URL can not be found
  • Fix checking the repository name for detached remotes
  • Check that you’re building the framework in a supported platform
  • Android: autodetect the use of llvm

KDE Doxygen Tools

  • add cmake file for standardised build


  • add chrono overload for setTimeout


  • Add Android to supported platforms in repo metadata


  • Notify on notebook change for exceptions
  • Note use of low-level libical function
  • Print more information about errors when loading vCalendars (bug 328976)
  • Implement notebook association when parsing iCal data
  • Fix storing of times with UTC offsets
  • Compare QDateTime times, timespecs, and timezones


  • Fix KPluginSelector KCMs missing their metadata on plugin loading (bug 444378)
  • Mark Windows and macOS as supported


  • Disable DBus support on Windows by default
  • Make KConfig::mainConfigName() public
  • kconf_update: Fix checking for changes of update files


  • Merge KColorSchemePrivate::init and constructor
  • Unify both KColorSchemePrivate constructors
  • Default to light mode, where AppsUseLightTheme isn’t set (notably Windows 8.1)
  • Move KStatefulBrush to its own dedicated header
  • Deprecate KColorScheme::contrast
  • Fix automatic color scheme on Windows
  • khamburgermenu: Ensure menu is polished before creating window
  • Fix blame ignore list
  • [kcolorschememanager] Initialize selected scheme from config
  • Add Android to supported platforms in the repo metadata


  • Addressee: make birthday writable from QML (bug 446665)
  • Fix bug 451962: append Instant Messaging service list (bug 451962)


  • Add default argument for KPluginFactory::create where no keyword and args have to be specified
  • Also wrap Kdelibs4ConfigMigrator in a QT_VERSION check for Qt6
  • Optimize KPluginMetaData::findPluginById by using QPluginLoader directly
  • Remove *.doc pattern for text/plain
  • KPluginMetaData: find plugins in the directory of the executable, too


  • metainfo.yaml - add macOS as a supported platform


  • Deprecate KQuickAddons::QtQuickSettings::init

KDELibs 4 Support

  • Use KDE_INSTALL_FULL_* variables where needed
  • Don’t assume libexec is a LIB_INSTALL_DIR subfolder


  • exiv2extractor: add support for avif, heif, jpeg xl


  • Add macOS to supported platforms list

KDE GUI Addons

  • Gracefully ignore SIGPIPE
  • Use nativeInterface to access the x11 display


  • All values of category get read from holiday file
  • Unreliable print of solstice in holidays
  • Remove double entries and correct indian- (bug 441275)


  • Build without kglobalaccel on Windows and mac


  • Fixed crash during KIdleTime::timeoutReached() (bug 451946)
  • Use nativeInterface to access the x11 display


  • Fix XCF parasites metadata in QImage and support to ICC profile
  • avif: encoder speed 7->6
  • avif: fix jumpToImage
  • avif: warn about non-recommended libavif configuration


  • Fix KRecentDocumentTest
  • fix reading wrong integer type from config (bug 452048)
  • Add Yandex search keywords
  • [KFilePlacesView] Don’t append “(hidden)” to disappearing groups
  • Don’t use KCrash on Android, currently not used there
  • KOpenWithDialog: alternative fix for the sort filter model regex
  • Introduce KCoreUrlNavigator
  • filewidgets: Auto-select filename before extension in filename dialog
  • Add support in krecentdocument to add to recently-used.xbel
  • [KFilePlacesView] Drop now unused placeEntered/Left handling
  • [KFilePlacesView] Show free space as permanent thin line
  • include QStandardPaths
  • KRecentDocuments: don’t save history for hidden files by default
  • KUrlNavigator: don’t force LtR (bug 428567)
  • [KPropertiesDialog] Use PlainText format for most labels
  • KFileItem: protect againt ’ ’ passed mimeType
  • KFileItem: use passed mimeType to determine isDir (bug 401579)
  • KOpenWithDialog: Include arguments in name when writing a new desktop file
  • Add Android to the list of supported platforms
  • [KPropertiesDialog] Make read-only filename label selectable by mouse
  • [KFilePlacesModel] Improve outcome of dropped places
  • [ftp] Simplify code


  • InlineMessage: Do not layout for actions at bottom when there are none
  • only change height if visible
  • -warning: Shortcut.sequence is an Array
  • Units: Delete QML FontMetrics object when Units is destructed
  • ListItemDragHandle: Emit moveRequest when cursor enters a new index (bug 451014)
  • BasicListItem: tighten up spacing for text+subtitle labels
  • ListSectionHeader: vertically align default text item
  • PlaceholderMessage: compare string length rather than content
  • Render Page’s default heading as PlainText
  • Page: Don’t load global toolbar async so that the header looks less stuttery
  • Fix warning on the org.kde.desktop Theme
  • controls/SwipeListItem: handle RtL properly (bug 441156)


  • KExtendableItemDelegate: Fix HiDPI positioning of indicator arrows (bug 414904)


  • Fix problems renaming a temporary file on Windows
  • Installation: don’t let QTemporaryFile delete the file before using it
  • Do not set user-visible name as additional agent information when copying provider (bug 451165)
  • Do not set user-visible name as additional agent information (bug 451165)
  • Engine: Default to autoconfig.kde.org for reading ProvidersUrl
  • Port to ECMQmlModule
  • Fix close button for NewStuff.Dialog not existing on X11 (bug 437653)
  • Fix certain tars not being recognized as valid archives (bug 450662)

KPackage Framework

  • PackageJobThread: Also check if metadata.json file exists
  • Explicitly call KPluginMetaData::fromJsonFile when constructing metadata objects
  • Fix desktoptojson invocation when cross-compiling


  • Mark copy job when opening remote URLs as transient
  • Mark Android as supported


  • Add macOS to supported platforms
  • add setWinSize() overload which also takes pixels


  • Add Android, Windows and MacOS to supported platforms
  • Correct install location for ecm_finalize_qml_module()
  • cmake: Use the right path to find ECMFindQmlModule.cmake
  • Don’t crash if we have no qmlContext for a deprecated object
  • Use the right path when including ECMFindQmlModule in CMake package config
  • Fix punctuation/whitespace of runtime rate-limited deprecation warnings
  • Don’t add module-uri based path to finalize_qml_module
  • Don’t use CMake exports for things that aren’t really exported
  • Port controls module to use ECMQmlModule
  • Port main module to use ECMQmlModule


  • Mark qrc file as non-copyrightable
  • Remove upper-limits for RunnerManagerTest’s timeouts


  • simplify + optimize uniq command
  • Fix switching back to normal mode from VI
  • quickfix crash on Qt 6
  • remove shortcut conflicting with KDevelop ATM
  • fix wrap of search for slash (bug 451893)
  • Fix multicursor anchor in findNext
  • Fix multicursor pasting when cursors don’t match copied text
  • Fix ordering of selectionText
  • Warn + assert if multicursorClipboard.size == 1
  • Implement multicursor copy/paste
  • Hide statusbar with permanent widget
  • Improve cursor movement with RTL text in doc (bug 451789)
  • Add support for custom line height (bug 328837)
  • Fix cursor in RTL text with dyn wrap on (bug 385694 368182)
  • Don’t try to convert non-char key codes to strings
  • port to QScreen & fix position on Wayland
  • Move print and export actions into submenu
  • Add actions to allow adding a new line above/below
  • multicursor: Use same code path as primary for cursor placing
  • Fix multicursor position after selection removal
  • use special value to indicate never for auto save
  • Allow auto saving document
  • Take wrapCursor into account when creating cursor using keybaord
  • Improve autocompletion handling
  • Add support for auto wrap selection with chars + test
  • Add support for auto brackets + fix indentation + test
  • Fix crash with stale indexes (bug 451593)
  • Rewrite merge selections to fix all known cases
  • multicursors: combine cursor and selection into one type
  • fix config dialog sizing
  • Disable multicursor in block selection mode (bug 451542)
  • Remove shortcut for duplicateLinesUp
  • Clear previous selections when finding AllOcurrences
  • Ensure to provide a proper cursor position
  • Use moving cursors directly in typeChars
  • Use doc->lineLength
  • Avoid tagging lines that are not in view
  • Fix toggle comment with space at the start (bug 451471)
  • Improve performance with multiple cursors
  • Make the multicursor modifier configurable
  • keep bom action in tools
  • Move some editing related actions to Edit menu from Tools
  • Fix incorrect select anchor after undo
  • Fix multicursor undo selection restoration
  • Allow toggling camel cursor movement
  • Clear highlights when multiselecting next occurence
  • Find All occurences and select them
  • Find next occurence and select it
  • Make multicursor shortcuts actions
  • multicursor: Introduce setSecondaryCursors
  • multicursors: Support tab indent
  • Undo: Clear cursors when undo doesn’t have secondary cursors…
  • Don’t allow to place cursor on top of primary
  • New shortcuts for duplicate-line-up/down
  • Read script action shortcuts as portable text instead of native text
  • Remove stray include
  • Fix undo doesn’t restore cursors
  • new method to add a bunch of cursors at once
  • Fix backspace cursor duplication
  • Completely disable cursors for vimode
  • Try to add new cursor in the same column as primary cursor
  • clear multicursors on mouse move
  • Fix word jumping
  • Restore old Ctrl+H behaviour
  • Make cursor painting instant
  • Make paintCursor a bit more efficient
  • ensure to update cursors immediately
  • Fix Ctrl+H, use only primary selection text as pattern
  • Multicursors undo/redo support
  • Allow creating cursors from selection
  • Slightly improve Alt+Ctrl+Up/Down cursor creation
  • Fix selection merging for cursorUp/Down
  • Fix home and end actions
  • Ensure unique cursors after deleting
  • Remove multicursors on doc reload
  • move caret drawing to separate function
  • Fix all cursors get hidden with cursorUp
  • Remove selections when adding new cursor
  • Fix cursor still visible when toggling
  • Disable multicursors for overwrite mode
  • Clear multicursors in block select mode
  • Multicursor text transforms (capitalize, lowercase, uppercase)
  • multicursor transpose chars
  • Multicursor newline support
  • Multi cursor auto completion support
  • Ctrl + Alt Up/Down to create new cursors
  • Remove unused method
  • multicursor copy support
  • Add incremental multicursor search
  • Fix selection removal with multicursors
  • Multicursor home/end support
  • Mutlicurosr delete key
  • Disable multicursor for overwrite/vi mode
  • Backspace for multiple cursors
  • multicursor selection removal
  • Multicursor kill lines
  • Improve cursorUp and handle selection removal
  • Remove multicursors on big movements
  • WIP: Basic multicursor support
  • Don’t build KAuth integration on Windows
  • vimode: fix extra newline when using the “Find” action (bug 451076)
  • fixed loop break condition
  • ensure correct highlighting after text change
  • fix highlighting while typing in search bar (/)
  • fix config dialog sizes for KTextEditor (bug 445541)
  • simplify check for empty last line
  • add new line on save inside the buffer (bug 450919)
  • Implement TextBuffer::saveBuffer without QTextStream
  • tidy: make trivially destructible


  • Install Client headers in a dirs hierarchy matching the C++ namespaces
  • We don’t actually need Qt6WaylandCompositor


  • Align buttons (and icon) on top, also when word wrap is off, but text is pre-formatted to span multiple lines
  • avoid quadratic search of children widgets


  • KShortcutsEditorDelegate: Fix HiDPI rendering of indicator arrows (bug 414904)
  • Tests: Enable HiDPI pixmap rendering
  • Add Android to supported platforms in repo metadata
  • Fix broken “Add to Toolbar” action


  • Check DBus signal connection
  • Include milliseconds when formatting SMS timestamps


  • Connect in the correct order everywhere
  • Remove workaround for properties changing
  • Do not create devices to just find out the type

Plasma Framework

  • Make WindowThumbnail build against Qt6 as well
  • Highlight: change hover: property to hovered:
  • Don’t install the heading SVG in breeze-light and breeze-dark Plasma themes
  • AppletInterface: Add self property which just returns this
  • Allow applets to have empty json metadata & use KPackage’s metadata instead
  • Do not compute sizes within dialogs when they’re not visible
  • Port dateengine away from inperformant KPluginInfo hack
  • Factor out QML module URI string
  • Adapt to the deprecation of qmlRegisterInterface in Qt6
  • Add default switch statement
  • Add power profile icons (bug 449475)
  • Fix Plasmoid attached property look-up on Config objects (bug 451482)
  • Fix potential null parent access
  • Break recursion when checking compact representation
  • Use generic breeze-styled arrow in Plasma style
  • Port to PlasmaExtras version of Highlight
  • Hardcode keyboard shortcut in SearchField for now
  • Add ActionTextField, SearchField, and PasswordField
  • PC3: Remove unreachable code in Svg item from DefaultListItemBackground
  • AppletQuickItem: Ensure we provide the attached property when we have it
  • Port from using plasmoid to Plasmoid
  • Calendar: Draw highlight below the text (bug 451209)
  • Use PACKAGE_CMAKE_INSTALL_PREFIX before any find_dependency() calls
  • Move Highlight from PlasmaComponents 2.0 to PlasmaExtras
  • Introduce PLASMA_NO_CONTEXTPROPERTIES to disable Plasma QML context properties


  • Do not make space for invisible items in menus
  • TextFieldContextMenu: Make menu separator invisible when its preceding items are too
  • KQuickStyleItem: use control mirrored property if available


  • Recognize fuse.gocryptfs mounts as devices like we do for cryfs and encfs (bug 452070)


  • Enable Windows spellchecker with mingw
  • Add Android to supported platforms in repo metadata
  • hunspell: resolve symlinks with canonicalFilePath()

Syntax Highlighting

  • Go syntax - “go” → ControlFlow
  • Go syntax - Separate ControlFlow from Keywords
  • Bash/Zsh: fix expression closing parenthesis in regex (bug 450478)

Security information

The released code has been GPG-signed using the following key: pub rsa2048/58D0EE648A48B3BB 2016-09-05 David Faure faure@kde.org Primary key fingerprint: 53E6 B47B 45CE A3E0 D5B7 4577 58D0 EE64 8A48 B3BB

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 5.93.0 may be freely downloaded. Instructions on compiling and installing are available from the KDE Frameworks 5.93.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 5.93.0 requires Qt 5.15.2.

A detailed listing of all Frameworks and other third party Qt libraries is at inqlude.org, the curated archive of Qt libraries. A complete list 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