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
| ECM | Extra 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.
| Attica | Open Collaboration Services API |
| BluezQt | Qt wrapper for BlueZ 5 DBus API |
| KArchive | File compression |
| KCalendarCore | The KDE calendar access library |
| KCodecs | Text encoding |
| KConfig | Configuration system |
| KCoreAddons | Addons to QtCore |
| KDBusAddons | Addons to QtDBus |
| KGlobalAccel | Add support for global workspace shortcuts |
| KGuiAddons | Addons to QtGui |
| KHolidays | Holiday calculation library |
| KI18n | Advanced internationalization framework |
| KIdleTime | Monitoring user activity |
| Kirigami | QtQuick plugins to build user interfaces based on the KDE human interface guidelines |
| KItemModels | Models for Qt Model/View system |
| KItemViews | Widget addons for Qt Model/View |
| KPlotting | Lightweight plotting framework |
| KQuickCharts | A QtQuick module providing high-performance charts |
| KSyntaxHighlighting | Syntax Highlighting |
| KTextTemplate | Library to allow application developers to separate the structure of documents from the data they contain |
| KUserFeedback | User feedback framework |
| KWidgetsAddons | Addons to QtWidgets |
| KWindowSystem | Access to the windowing system |
| ModemManagerQt | Qt wrapper for ModemManager API |
| NetworkManagerQt | Qt wrapper for NetworkManager API |
| Prison | Barcode abstraction layer providing uniform access to generation of barcodes |
| Solid | Hardware integration and detection |
| Sonnet | Support for spellchecking |
| ThreadWeaver | High-level multithreading framework |
Tier 2
Tier 2 frameworks additionally depend on tier 1 frameworks, but still have easily manageable dependencies.
| KAuth | Abstraction to system policy and authentication features |
| KColorScheme | Classes to interact with KColorScheme |
| KCompletion | Text completion helpers and widgets |
| KContacts | Support for vCard contacts |
| KCrash | Support for application crash analysis and bug report from apps |
| KDeclarative | Provides integration of QML and KDE Frameworks |
| KFileMetaData | A file metadata and text extraction library |
| KNotifications | Abstraction for system notifications |
| KPackage | Library to load and install packages of non binary files as they were a plugin |
| KPty | Pty abstraction |
| KService | Library for querying installed applications and their associated file types |
| KStatusNotifierItem | Implementation of Status Notifier Items |
| KUnitConversion | Support for unit conversion |
| Syndication | An RSS/Atom parser library |
Tier 3
Tier 3 frameworks are generally more powerful, comprehensive packages, and consequently have more complex dependencies.
| Baloo | Baloo is a file indexing and searching framework |
| KBookmarks | Support for bookmarks and the XBEL format |
| KCMUtils | Utilities for working with KCModules |
| KConfigWidgets | Widgets for configuration dialogs |
| KDAV | An DAV protocol implementation with KJobs |
| KDESu | Integration with su for elevated privileges |
| KIconThemes | Support for icon themes |
| KIO | Resource and network access abstraction |
| KJobWidgets | Widgets for tracking KJob instances |
| KNewStuff | Support for downloading application assets from the network |
| KNotifyConfig | Configuration system for KNotify |
| KParts | Document centric plugin system |
| KPeople | Provides access to all contacts and the people who hold them |
| KRunner | Parallelized query system |
| KSvg | A library for rendering SVG-based themes with stylesheet re-coloring and on-disk caching |
| KTextEditor | Advanced embeddable text editor |
| KTextWidgets | Advanced text editing widgets |
| KWallet | Secure and unified container for user passwords |
| KXMLGui | User configurable main windows |
| Purpose | Offers 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).
| FrameworkIntegration | Workspace 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.
| LibPlasma | Building Blocks for Plasma |
| KWin | Scripting API for KWin |
| Union | A Qt style supporting both QtQuick and QtWidgets |
| KDecoration | Plugin based library to create window decorations. |
| KPipeWire | Convenient classes to use PipeWire |
| LayerShellQt | Layer Shell Qt |
| Libksysguard | Library to retrieve and display information on the current status of computer hardware |
| Plasma Workspace | Plasma Workspace |
| Plasma5Support | Migration aids for plasma5 deprecated classes |
| Plasma Activities | Activities Libary |
| PlasmaActivitiesStats | Activities Stats Libary |
| KNightTime | Helpers 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 RFC822 (KMime), 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.
| Akonadi | PIM Storage Framework |
| Akonadi Calendar | Akonadi Calendar Library |
| Akonadi Contacts | Akonadi Contacts Library |
| Akonadi Mime | Akonadi Mime Library |
| Akonadi Search | Akonadi indexing and searching Library |
| CalendarSupport | Calendar Support Library |
| Eventviews | Event Views Library |
| GrantleeTheme | KDE PIM Grantlee theme support library |
| Gravatar | Gravatar Support Library |
| Indicenceeditor | Incidenceeditor Library |
| KCalUtils | Calendar Utility Library |
| KGAPI | Implementation of APIs for various Google services |
| KIdentityManagement | Manage PIM Identity |
| KIMAP | A job-based API for interacting with IMAP servers |
| KItinerary | Itinerary extraction and data model |
| KLdap | LDAP Support Library |
| KMbox | MBox library support |
| KMime | The KMime Library |
| KontactInterface | Kontact Plugin Interface Library |
| KPimTextEdit | Advanced text editor which provide advanced html feature |
| KPkPass | PkPass File Support |
| KPublicTransport | Public transport data querying API |
| KSMTP | SMTP Library |
| KTnef | An API for handling TNEF data |
| Libkdepim | KDEpim Library |
| Libkleo | Kleopatra certificate management library |
| Libksieve | Sieve Script Library |
| Mailcommon | MailCommon Library |
| MailImporter | Mail Importer Library implements importing of emails from various other email clients |
| MailTransport | Manage mail transport |
| Messagelib | Messagelib Library which contains MessageComposer, MessageCore, MessageList, MessageViewer, MimeTreeParser, TemplateParser and WebEngineViewer |
| Pimcommon | PimCommon Library which contains PimCommon, PimCommonAkonadi |
Other
| md4qt | C++ library for parsing Markdown |
| Kirigami Addons | Add-ons for the Kirigami framework |
| Alkimia API | Alkimia API documentation |
| Baloo Widgets | Widgets for Baloo |
| Futuresql | Non-blocking database framework for Qt |
| KAsync | API to build composable asynchronous tasks |
| KCDDB | KCDDB Library |
| KCGroups | Control cgroup resources through systemd dbus interface |
| KCompactDisc | Library for interfacing with CDs |
| KDcraw | A thread-safe wrapper around libraw |
| KDEGames | Common code and data for many KDE games |
| KExiv2 | Wrapper around Exiv2 library to manipulate picture metadata as EXIF and XMP |
| KHealthCertificate | Digital vaccination, test and recovery certificate parsing |
| KMyMoney Plugin API | KMyMoney Plugin API documentation |
| KompareDiff2 | Library to compare files and strings |
| KOpeningHours | OSM opening hours expression parser and evaluator |
| KOSMIndoorMap | OSM indoor map QML component |
| KQuickImageEditor | QtQuick plugins for image editing UI |
| Krita | Scripting API for Krita |
| KSane | SANE Library Qt-based interface |
| KSaneCore | Qt interface for the SANE library for scanner hardware |
| KStars | KStars is free, open source, cross-platform Astronomy Software. |
| KTextAddons | Text addons (autocorrection, text to speak, grammar checking, text translator, emoticon support, custom editor, autogenerate text) |
| KUnifiedPush | UnifiedPush client components |
| KWeatherCore | Query weather data |
| LibKEduVocDocument | libKEduVocDocument is a library for reading and writing vocabulary files used by Parley, Kanagram, KHangman and KWordQuiz |
| LibKmahjongg | For loading and rendering of Mahjongg tilesets and associated backgrounds |
| Marble | Marble framework, a library for maps, virtual globes and world atlases |
| Okular | Okular, the unified document viewer |
| Perceptual Color | GUI components for choosing colors, with focus on an intuitive and perceptually uniform presentation |
| Phonon | Phonon, the Qt multimedia abstraction library |
| Plasma Wayland Protocols | Provides the xml files of non-standard wayland protocols used in Plasma |
| PolkitQt-1 | Qt wrapper around polkit-1 |
| PulseAudioQt | Qt bindings for libpulse |
| Qt Accessibility Client | Accessibilty tools helper library, used e.g. by screen readers |
| KChart | A library for creating business charts |
| KGantt | A library for creating Gantt diagrams |