KDE Libraries

KDE Frameworks

The KDE Frameworks build on the Qt framework, providing everything from simple utility classes (such as those in KCoreAddons) to integrated solutions for common requirements of desktop applications (such as KNewStuff, for fetching downloadable add-on content in an application, or the powerful KIO multi-protocol file access framework).

The KDE Frameworks can be used in CMake-based and QMake-based projects, and most of them are portable to at least Windows, Mac and Linux. The documentation of each framework has code snippets that show how to include the framework in a QMake or CMake project.

The frameworks are divided into four tiers, based on the kind of dependencies that they have. For instance, Tier 1 frameworks depend on Qt and possibly some third-party libraries, but not on other frameworks. This makes them easy to integrate into existing applications.

Tier 0

ECMExtra CMake modules

Tier 1

Tier 1 frameworks depend only on Qt (and possibly a small number of other third-party libraries), so can easily be used by any Qt-based project.

AtticaOpen Collaboration Services API
BluezQtQt wrapper for BlueZ 5 DBus API
KArchiveFile compression
KCalendarCoreThe KDE calendar access library
KCodecsText encoding
KConfigConfiguration system
KCoreAddonsAddons to QtCore
KDBusAddonsAddons to QtDBus
KGlobalAccelAdd support for global workspace shortcuts
KGuiAddonsAddons to QtGui
KHolidaysHoliday calculation library
KI18nAdvanced internationalization framework
KIdleTimeMonitoring user activity
KirigamiQtQuick plugins to build user interfaces based on the KDE human interface guidelines
KItemModelsModels for Qt Model/View system
KItemViewsWidget addons for Qt Model/View
KPlottingLightweight plotting framework
KQuickChartsA QtQuick module providing high-performance charts
KSyntaxHighlightingSyntax Highlighting
KTextTemplateLibrary to allow application developers to separate the structure of documents from the data they contain
KUserFeedbackUser feedback framework
KWidgetsAddonsAddons to QtWidgets
KWindowSystemAccess to the windowing system
ModemManagerQtQt wrapper for ModemManager API
NetworkManagerQtQt wrapper for NetworkManager API
PrisonBarcode abstraction layer providing uniform access to generation of barcodes
SolidHardware integration and detection
SonnetSupport for spellchecking
ThreadWeaverHigh-level multithreading framework

Tier 2

Tier 2 frameworks additionally depend on tier 1 frameworks, but still have easily manageable dependencies.

KAuthAbstraction to system policy and authentication features
KColorSchemeClasses to interact with KColorScheme
KCompletionText completion helpers and widgets
KContactsSupport for vCard contacts
KCrashSupport for application crash analysis and bug report from apps
KDeclarativeProvides integration of QML and KDE Frameworks
KFileMetaDataA file metadata and text extraction library
KNotificationsAbstraction for system notifications
KPackageLibrary to load and install packages of non binary files as they were a plugin
KPtyPty abstraction
KServiceLibrary for querying installed applications and their associated file types
KStatusNotifierItemImplementation of Status Notifier Items
KUnitConversionSupport for unit conversion
SyndicationAn RSS/Atom parser library
KMimeThe KMime Library

Tier 3

Tier 3 frameworks are generally more powerful, comprehensive packages, and consequently have more complex dependencies.

BalooBaloo is a file indexing and searching framework
KBookmarksSupport for bookmarks and the XBEL format
KCMUtilsUtilities for working with KCModules
KConfigWidgetsWidgets for configuration dialogs
KDAVAn DAV protocol implementation with KJobs
KDESuIntegration with su for elevated privileges
KIconThemesSupport for icon themes
KIOResource and network access abstraction
KJobWidgetsWidgets for tracking KJob instances
KNewStuffSupport for downloading application assets from the network
KNotifyConfigConfiguration system for KNotify
KPartsDocument centric plugin system
KPeopleProvides access to all contacts and the people who hold them
KRunnerParallelized query system
KSvgA library for rendering SVG-based themes with stylesheet re-coloring and on-disk caching
KTextEditorAdvanced embeddable text editor
KTextWidgetsAdvanced text editing widgets
KWalletSecure and unified container for user passwords
KXMLGuiUser configurable main windows
PurposeOffers available actions for a specific purpose.

Tier 4

Tier 4 frameworks can be mostly ignored by application programmers; this tier consists of plugins acting behind the scenes to provide additional functionality or platform integration to existing frameworks (including Qt).

FrameworkIntegrationWorkspace and cross-framework integration plugins.

Other Libraries

These libraries are also offered by the KDE Community but don't neccesarily provide the same quality standards and compatibility promises as the KDE Frameworks.

Plasma

Plasma is a desktop environment for Linux and FreeBSD but it's built as a platforms in which plugins can be built to extends its features or completely new desktop environment can be built on top.

LibPlasmaBuilding Blocks for Plasma
KWinScripting API for KWin
UnionA Qt style supporting both QtQuick and QtWidgets
KDecorationPlugin based library to create window decorations.
KPipeWireConvenient classes to use PipeWire
LayerShellQtLayer Shell Qt
LibksysguardLibrary to retrieve and display information on the current status of computer hardware
Plasma WorkspacePlasma Workspace
Plasma5SupportMigration aids for plasma5 deprecated classes
Plasma ActivitiesActivities Libary
PlasmaActivitiesStatsActivities Stats Libary
KNightTimeHelpers for scheduling the dark-light cycle

KDE PIM

KDE PIM provides a set of libraries and applications to access and manage personal information like emails, contacts, events, etc.

KDE PIM provides a set of libraries to parse and interact with various standardized PIM data formats, like ICAL (KCalendarCore) or VCARD (KContacts).

The backbone of the entire suite is Akonadi, the PIM storage framework. Akonadi provides unified API to access and manage any kind of PIM data regardless of the actual storage backend.

There are quite a few other libraries that provide PIM-specific widgets and utilities and can be useful for application developers who need to work with PIM data in their projects.

Please note that unless stated otherwise, none of the libraries have stable API or ABI as of now. We are trying to keep the changes small and we always announce big changes ahead on the mailing lists, but as the project evolves we might need to adjust some API here and there.

AkonadiPIM Storage Framework
Akonadi CalendarAkonadi Calendar Library
Akonadi ContactsAkonadi Contacts Library
Akonadi MimeAkonadi Mime Library
Akonadi SearchAkonadi indexing and searching Library
CalendarSupportCalendar Support Library
EventviewsEvent Views Library
GrantleeThemeKDE PIM Grantlee theme support library
GravatarGravatar Support Library
IndicenceeditorIncidenceeditor Library
KCalUtilsCalendar Utility Library
KGAPIImplementation of APIs for various Google services
KIdentityManagementManage PIM Identity
KIMAPA job-based API for interacting with IMAP servers
KItineraryItinerary extraction and data model
KLdapLDAP Support Library
KMboxMBox library support
KontactInterfaceKontact Plugin Interface Library
KPimTextEditAdvanced text editor which provide advanced html feature
KPkPassPkPass File Support
KPublicTransportPublic transport data querying API
KSMTPSMTP Library
KTnefAn API for handling TNEF data
LibkdepimKDEpim Library
LibkleoKleopatra certificate management library
LibksieveSieve Script Library
MailcommonMailCommon Library
MailImporterMail Importer Library implements importing of emails from various other email clients
MailTransportManage mail transport
MessagelibMessagelib Library which contains MessageComposer, MessageCore, MessageList, MessageViewer, MimeTreeParser, TemplateParser and WebEngineViewer
PimcommonPimCommon Library which contains PimCommon, PimCommonAkonadi

Other

md4qtC++ library for parsing Markdown
Kirigami AddonsAdd-ons for the Kirigami framework
Alkimia APIAlkimia API documentation
Baloo WidgetsWidgets for Baloo
FuturesqlNon-blocking database framework for Qt
KAsyncAPI to build composable asynchronous tasks
KCDDBKCDDB Library
KCGroupsControl cgroup resources through systemd dbus interface
KCompactDiscLibrary for interfacing with CDs
KDcrawA thread-safe wrapper around libraw
KDEGamesCommon code and data for many KDE games
KExiv2Wrapper around Exiv2 library to manipulate picture metadata as EXIF and XMP
KHealthCertificateDigital vaccination, test and recovery certificate parsing
KMyMoney Plugin APIKMyMoney Plugin API documentation
KompareDiff2Library to compare files and strings
KOpeningHoursOSM opening hours expression parser and evaluator
KOSMIndoorMapOSM indoor map QML component
KQuickImageEditorQtQuick plugins for image editing UI
KritaScripting API for Krita
KSaneSANE Library Qt-based interface
KSaneCoreQt interface for the SANE library for scanner hardware
KStarsKStars is free, open source, cross-platform Astronomy Software.
KTextAddonsText addons (autocorrection, text to speak, grammar checking, text translator, emoticon support, custom editor, autogenerate text)
KUnifiedPushUnifiedPush client components
KWeatherCoreQuery weather data
LibKEduVocDocumentlibKEduVocDocument is a library for reading and writing vocabulary files used by Parley, Kanagram, KHangman and KWordQuiz
LibKmahjonggFor loading and rendering of Mahjongg tilesets and associated backgrounds
MarbleMarble framework, a library for maps, virtual globes and world atlases
OkularOkular, the unified document viewer
Perceptual ColorGUI components for choosing colors, with focus on an intuitive and perceptually uniform presentation
PhononPhonon, the Qt multimedia abstraction library
Plasma Wayland ProtocolsProvides the xml files of non-standard wayland protocols used in Plasma
PolkitQt-1Qt wrapper around polkit-1
PulseAudioQtQt bindings for libpulse
Qt Accessibility ClientAccessibilty tools helper library, used e.g. by screen readers
KChartA library for creating business charts
KGanttA library for creating Gantt diagrams