KDE Frameworks 5.87.0

Saturday, 9 October 2021

KDE today announces the release of KDE Frameworks 5.87.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


  • Do not mark jobs that have been aborted as errored (bug 43820)
  • Ensure categories.xml is only fetched once in parallel
  • Do not start basejobs twice

Breeze Icons

  • Fix KTimeTracker icon sizes (bug 442993)
  • Tweaks to AnyDesk icons
  • Fix index.theme issues from ! 124
  • Add 22px variants of the preferences icons
  • Add AnyDesk icons
  • Add more Godot MIME icons
  • Add symlink for skanlite’s new icon name
  • Add process-working-symbolic, overhaul 22px animation

Extra CMake Modules

  • Add -Werror=init-self to the default CMAKE_CXX_FLAGS
  • Handle git remotes that aren’t called origin in _repository_name()
  • python: Bump maximum version for Python 3 module generator check
  • Avoid raising an error for submodule git trees
  • Make sphinx happier about syntax


  • Set the correct last modified time when creating an exception for a recurring event
  • icalformat_p.cpp - support ATTACH parameter FILENAME (bug 436161)
  • Add Qt5Gui as dependency in pkgconfig file
  • Read floating date time as LocalTime
  • Implement PERIOD support in RDATE (bug 271308)


  • Fix Warning: Property type “Int” is not a known QVariant type
  • Add support for static builds
  • Add compat code for KService based plugin loading
  • Introduce KCModuleProxy::isChanged method
  • Un-overload KCModuleProxy:changed signal


  • KCodecs::decodeRFC2047String(): return “UTF-8” when multiple charsets used


  • New shouldAutoSuggest property on KCompletion (bug 420966)


  • Android: Fix writing to config if path is a content:// Uri
  • kconfigini: Only open the file once to write
  • Allow KConfigXT to use KSharedConfig::openStateConfig


  • Do not emit deprecation warnings for overload which gets chosen by compiler


  • KStringHandler: add a new perlSplit() overload that takes a QStringView
  • Deprecate KPluginMetaData::extraInformation


  • Introduce UpdateLaunchEnvJob
  • Correct to make sure we use the matching ECM version


  • Make sure the object gets destroyed before the view
  • Add support for static builds
  • SimpleKCM: remove custom header and footer handling


  • Remove obsolete LGPL-2.0-only license text
  • Relicense remaining LGPL-2.0-only file

KDE GUI Addons

  • Use imported target for X11 libs
  • Relicense remaining files away from LGPL-2.0-only
  • Add missing static dependency to Config.cmake.in


  • Update Canadian holidays


  • avif: performance and quality improvements


  • Fix KDE shutdown bug


  • New job: KEMailClientLauncherJob
  • KACLEditWidget: improve the initial widget size
  • [KUrlNavigator] Add the ability to show hidden folders in the subdirectories popup
  • Add support for static builds
  • KUrlCompletion blocks autosuggestion from happening if the input is an exact directory path (bug 420966)
  • KDirOperator: provide an option to enable showing open-with item actions (bug 440748)
  • Fix permissions when copying files (bug 103331)
  • KFileItem: refresh() shouldn’t discard ACL attributes (bug 299155)
  • KPropertiesDialog: show text label with item name for readonly items too (bug 442237)
  • Disable ACL functionality in kpropertiesdialog on FreeBSD
  • KDirOperator: use show() when opening KPropertiesDialog
  • Use errors=remount-ro when mounting ext2/3/4
  • OpenUrlJob: skip HTTP schemeHandler when setEnableExternalBrowser(false)
  • KMountPoint: restore findByPath() behaviour, i.e. resolve symlinks
  • Sort service menus before inserting them in context menu
  • Deprecate config widget related methods in ThumbCreator


  • PageRow: Do not async load the global header (bug 442660)
  • NavigationTabButton: Fix hover effect staying even after touch release
  • Fix BreadcrumbControl on mobile when using layers
  • cmake: Remove intermediate target for kirigamiplugin post-build steps
  • Add NavigationToolBar component
  • Split off an AboutItem from AboutPage
  • Improve warning about QML Units implementations
  • [SwipeListItem] Fix view property
  • Fix breadcrumb header title on secondary layers in mobile mode
  • [FormLayout] Fix in-group spacing in narrow mode
  • Fix page header being shown even when it’s specified not to
  • Set activeFocusOnTab to false for ListSectionHeader
  • Support enter/return and up/down keys in Global drawer for navigation
  • ColumnView: Simplify Units property access
  • Remove unwanted “/” prefix from iconId


  • Relicense files from LGPL-2.0-only to LGPL-2.0-or-later


  • staticxml: Do not report installed packages for page != 0
  • Engine: Do not require waiting for the providers to tell our installed entries
  • Fix crash in DownloadWidget
  • Add licenses CC0 license info to non-copyrightable files
  • Add BSD-2-Clause license info to cmake files
  • Add CC0-1.0 license identifier to non-copyrightable files
  • Include a user agent on KNS requests
  • attica: use compile-time connects
  • Add support for static builds - fixes
  • Add missing find_package(Qt5Gui)
  • Add support for static builds
  • FileCopyJob: implement error handling
  • Page: Remind/notify users that everything here is 3rd-party content


  • Add support for static builds
  • Correct the version of Phonon that we use


  • Remove stray GL include


  • Remove unneeded dependencies from .kde-ci.yml
  • Mark README.md as non-copyrightable
  • Add license information for runner C++ template
  • Mark non-copyrightable files as CC0-1.0
  • Add license information to cmake files


  • Deprecate KAutostart class
  • Deprecate KService::parentApp
  • Deprecate KService::pluginKeyword property


  • The user is not selecting as soon as we clearSelection
  • Fix missing i18n (bug 442071)


  • Handle RTL text selection the same way as Qt (bug 397922)


  • KWayland depends on libraries/plasma-wayland-protocols


  • Make lupdate happier
  • KCharSelect: Added option to show all blocks found in the data file (in the section menu)
  • KFontChooser: the widget shouldn’t become wider when toggling show fixed only


  • Add missing Q_INIT_RESOURCE(kxmlgui)
  • Replace “Libraries” by “Components” to show KAboutComponents info


  • Introduce countryCode Modem3gpp API

Plasma Framework

  • Update plasmoidheading.svg : fix the typo line 96 “correntColor”
  • Containment: Rename panel edit action to “Enter Edit Mode”
  • Revert “Change busywidget to a gear” (bug 442525)
  • ExpandableListitem: Correct expanded view height calculation (bug 442537)
  • Port internal plugin cache away from supporting multiple namespaces
  • Remove defunct python and ruby script engines


  • Select the most efficient QR encoding mode rather than always using 8bit


  • plugins/barcode: Call it a “QR code” in the UI
  • Add Barcode plugin


  • Properly get the path from a QUrl
  • MenuSeparator: fix height being wrong, rewrite whole file to be more correct
  • Button, ToolButton: improve implicit sizing, correctly set default button state
  • Use more process-working-symbolic icon for busy spinner


  • Add support for static builds
  • Support extracting cpu model on ppc64

Syntax Highlighting

  • Add basic QML API docs
  • yara - add new 4.x keywords
  • Change license to MIT
  • Removed items that are generating errors for now
  • initial work on terraform syntax highlight
  • Port AbstractHighlighter::highlightLine to QStringView

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

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 freenode.net.

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