KDE Frameworks: Difference between revisions
m Expand bare link. |
m Dating maintenance tags: {{Only primary sources}} |
||
(19 intermediate revisions by 13 users not shown) | |||
Line 1: | Line 1: | ||
{{short description|Collection of libraries and software frameworks for the Qt framework}} |
{{short description|Collection of libraries and software frameworks for the Qt framework}} |
||
{{Only primary sources|date=July 2024}} |
|||
{{Infobox software |
{{Infobox software |
||
| name = KDE Frameworks |
| name = KDE Frameworks |
||
Line 19: | Line 20: | ||
| discontinued = |
| discontinued = |
||
| programming language = [[C++]] ([[Qt (software)|Qt]]) |
| programming language = [[C++]] ([[Qt (software)|Qt]]) |
||
| operating system = [[Cross-platform]] (including "partial" support for [[Android (operating system)|Android]],<ref>{{Cite web|url=https://www.kde.org/announcements/kde-frameworks-5.24.0.php|title = Release of KDE Frameworks 5.24.0|date = 9 July 2016}}</ref><ref>{{Cite web|url=https://community.kde.org/Android|title=Android - KDE Community Wiki}}</ref> [[Windows]],<ref>{{Cite web|url=https://api.kde.org/|title=KDE API Homepage |
| operating system = [[Cross-platform]] (including "partial" support for [[Android (operating system)|Android]],<ref>{{Cite web|url = https://www.kde.org/announcements/kde-frameworks-5.24.0.php|title = Release of KDE Frameworks 5.24.0|date = 9 July 2016|access-date = 10 July 2016|archive-date = 11 July 2016|archive-url = https://web.archive.org/web/20160711112725/https://www.kde.org/announcements/kde-frameworks-5.24.0.php|url-status = live}}</ref><ref>{{Cite web|url=https://community.kde.org/Android|title=Android - KDE Community Wiki|access-date=2016-07-11|archive-date=2016-08-26|archive-url=https://web.archive.org/web/20160826060254/https://community.kde.org/Android|url-status=live}}</ref> [[Windows]],<ref>{{Cite web|url=https://api.kde.org/|title=KDE API Homepage|access-date=2016-07-11|archive-date=2016-08-26|archive-url=https://web.archive.org/web/20160826081136/https://api.kde.org/|url-status=live}}</ref> [[macOS]] and [[Haiku (operating system)|Haiku]]) |
||
| size = |
| size = |
||
| language = |
| language = |
||
Line 25: | Line 26: | ||
| language footnote = |
| language footnote = |
||
| genre = {{unbulleted list|[[Library (computing)|System libraries]]|[[Software framework]]s}} |
| genre = {{unbulleted list|[[Library (computing)|System libraries]]|[[Software framework]]s}} |
||
| license = [[GNU Lesser General Public License]] (LGPL)<ref name="release 5.0">{{cite web |url=http://kde.org/announcements/kde-frameworks-5.0.php |title=First release of KDE Frameworks 5 |date=2014-07-07}}</ref> |
| license = [[GNU Lesser General Public License]] (LGPL)<ref name="release 5.0">{{cite web |url=http://kde.org/announcements/kde-frameworks-5.0.php |title=First release of KDE Frameworks 5 |date=2014-07-07 |access-date=2014-07-08 |archive-date=2015-09-05 |archive-url=https://web.archive.org/web/20150905235848/https://www.kde.org/announcements/kde-frameworks-5.0.php |url-status=live }}</ref> |
||
}} |
}} |
||
'''KDE Frameworks''' is a collection of [[Library (computing)|libraries]] and [[software framework]]s readily available to any [[Qt (software)|Qt]]-based software stacks or applications on multiple [[operating system]]s.<ref>{{Cite web|url=https://api.kde.org/frameworks/index.html|title=The KDE Frameworks|website=API Documentation}}</ref> Featuring frequently needed functionality solutions like hardware integration, file format support, additional [[graphical control element]]s, plotting functions, and [[spell checker|spell checking]], the collection serves as technological foundation for [[KDE Plasma |
'''KDE Frameworks''' is a collection of [[Library (computing)|libraries]] and [[software framework]]s readily available to any [[Qt (software)|Qt]]-based software stacks or applications on multiple [[operating system]]s.<ref>{{Cite web|url=https://api.kde.org/frameworks/index.html|title=The KDE Frameworks|website=API Documentation|access-date=2020-03-17|archive-date=2019-12-07|archive-url=https://web.archive.org/web/20191207081505/https://api.kde.org/frameworks/index.html|url-status=live}}</ref> Featuring frequently needed functionality solutions like hardware integration, file format support, additional [[graphical control element]]s, plotting functions, and [[spell checker|spell checking]], the collection serves as the technological foundation for [[KDE Plasma]] and [[KDE Applications|KDE Gear]]. It is distributed under the [[GNU Lesser General Public License]] (LGPL).<ref>{{Cite web|url=https://techbase.kde.org/KDE_Frameworks|title=KDE Frameworks|website=Tech Base|access-date=2020-03-17|archive-date=2020-08-13|archive-url=https://web.archive.org/web/20200813210057/https://techbase.kde.org/KDE_Frameworks|url-status=live}}</ref> |
||
== Overview == |
== Overview == |
||
KDE Frameworks is based on Qt, which enables a more widespread use of [[QML]], a simpler [[JavaScript]]-based declarative programming language, for the design of user interfaces. The graphics rendering engine used by QML allows for more fluid user interfaces across different devices.<ref name=rel.struct/> |
|||
[[File:Evolution and development of KDE software.svg|thumb|300px|Some source code was moved from being part of KDE Frameworks 5 to being part of Qt 5.2 and later.]] |
[[File:Evolution and development of KDE software.svg|thumb|300px|Some source code was moved from being part of KDE Frameworks 5 to being part of Qt 5.2 and later.]] |
||
Since the split of the [[KDE Software Compilation]] into KDE Frameworks 5, [[KDE Plasma 5]] and [[KDE Applications]], each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis<ref name=schedule>{{cite web |url=https://community.kde.org/Schedules/Frameworks |title=Release schedule for KDE Frameworks 5}}</ref> and use |
Since the split of the [[KDE Software Compilation]] into KDE Frameworks 5, [[KDE Plasma 5]] and [[KDE Applications]], each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis<ref name=schedule>{{cite web |url=https://community.kde.org/Schedules/Frameworks |title=Release schedule for KDE Frameworks 5 |access-date=2016-05-18 |archive-date=2016-06-24 |archive-url=https://web.archive.org/web/20160624011418/https://community.kde.org/Schedules/Frameworks |url-status=live }}</ref> and use [[Git]].<ref>{{cite web |url=https://community.kde.org/Frameworks/Git_Workflow |title=Git workflow for Frameworks |access-date=2014-08-19 |archive-date=2020-10-20 |archive-url=https://web.archive.org/web/20201020230548/https://community.kde.org/Frameworks/Git_Workflow |url-status=live }}</ref><ref>{{cite web |url=http://api.kde.org/frameworks-api/frameworks5-apidocs/ |title=KDE Frameworks5 API documentation |url-status=dead |archive-url=https://web.archive.org/web/20140822020749/http://api.kde.org/frameworks-api/frameworks5-apidocs/ |archive-date=2014-08-22 }}</ref> |
||
It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.<ref>{{cite web |url=https://community.kde.org/Frameworks/Coinstallability |title=Coinstallability with KDE Platform 4}}</ref> |
It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.<ref>{{cite web |url=https://community.kde.org/Frameworks/Coinstallability |title=Coinstallability with KDE Platform 4 |access-date=2014-08-19 |archive-date=2020-12-01 |archive-url=https://web.archive.org/web/20201201003619/https://community.kde.org/Frameworks/Coinstallability |url-status=live }}</ref> |
||
=== API and ABI stability === |
=== API and ABI stability === |
||
Line 54: | Line 55: | ||
=== Components === |
=== Components === |
||
The KDE Frameworks bundle consists of over 70 packages. These existed as a single large package, called kdelibs, in [[KDE Software Compilation 4|KDE SC 4]]. Kdelibs was split into several individual frameworks, some of which are no longer part of KDE but were integrated into |
The KDE Frameworks bundle consists of over 70 packages. These existed as a single large package, called kdelibs, in [[KDE Software Compilation 4|KDE SC 4]]. Kdelibs was split into several individual frameworks, some of which are no longer part of KDE but were integrated into Qt 5.2.<ref>{{cite web|url=https://dot.kde.org/2013/12/17/qt-52-foundation-kde-frameworks-5|title=Qt 5.2 - Foundation for KDE Frameworks 5|publisher=Dot.kde.org|author=Jos Poortvliet|date=2013-12-17|access-date=2014-03-10|archive-date=2020-11-11|archive-url=https://web.archive.org/web/20201111211242/https://dot.kde.org/2013/12/17/qt-52-foundation-kde-frameworks-5|url-status=live}}</ref> |
||
KDE Frameworks are grouped in four different tiers according to dependency on other libraries.<ref>{{cite web|url=http://dot.kde.org/2013/09/25/frameworks-5|title=Frameworks 5|publisher=Dot.kde.org|author=Howard Chan|date=2013-09-25|access-date=2014-03-10}}</ref><ref>{{Cite web|title=API Documentation|url=https://api.kde.org/frameworks/#sg-tier_1|access-date=2021-10-02|website=api.kde.org}}</ref> |
KDE Frameworks are grouped in four different tiers according to dependency on other libraries.<ref>{{cite web|url=http://dot.kde.org/2013/09/25/frameworks-5|title=Frameworks 5|publisher=Dot.kde.org|author=Howard Chan|date=2013-09-25|access-date=2014-03-10|archive-date=2020-11-26|archive-url=https://web.archive.org/web/20201126022246/https://dot.kde.org/2013/09/25/frameworks-5|url-status=live}}</ref><ref>{{Cite web|title=API Documentation|url=https://api.kde.org/frameworks/#sg-tier_1|access-date=2021-10-02|website=api.kde.org|archive-date=2021-10-02|archive-url=https://web.archive.org/web/20211002160917/https://api.kde.org/frameworks/#sg-tier_1|url-status=live}}</ref> |
||
; Tiers of Frameworks: |
; Tiers of Frameworks: |
||
:Tier 1 |
:Tier 1 {{En dash}} Mostly depend only on [[Qt (software)|Qt]], highly portable |
||
:Tier 2 |
:Tier 2 {{En dash}} Depends on Tier 1, but dependencies are still manageable. |
||
:Tier 3 |
:Tier 3 {{En dash}} Complex dependencies, including Tiers 1{{En dash}}2 etc. |
||
:Tier 4 |
:Tier 4 {{En dash}} Mostly plugins that provide additional features like platform support can be ignored. |
||
{| class="wikitable collapsible collapsed sortable" style="width:100%; margin-top:0; text-align:left;" |
{| class="wikitable collapsible collapsed sortable" style="width:100%; margin-top:0; text-align:left;" |
||
Line 75: | Line 75: | ||
| {{Anchor|Frameworkintegration}} Frameworkintegration |
| {{Anchor|Frameworkintegration}} Frameworkintegration |
||
| 4 |
| 4 |
||
| [https:// |
| [https://invent.kde.org/frameworks/frameworkintegration.git frameworkintegration.git] |
||
| Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. Applications do not need to link to this directly. The library KF5Style provides integration with KDE Plasma Workspace settings for Qt styles. Derive your Qt style from KStyle to automatically inherit various settings from the KDE Plasma Workspace, providing a consistent user experience. For example, this will ensure a consistent single-click or double-click activation setting, and the use of standard themed icons. |
| Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. Applications do not need to link to this directly. The library KF5Style provides integration with KDE Plasma Workspace settings for Qt styles. Derive your Qt style from KStyle to automatically inherit various settings from the KDE Plasma Workspace, providing a consistent user experience. For example, this will ensure a consistent single-click or double-click activation setting, and the use of standard themed icons. |
||
|- |
|- |
||
| {{Anchor|KActivities}} KActivities |
| {{Anchor|KActivities}} KActivities |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kactivities.git kactivities.git] |
||
| Core components for KDE Activities' Activity Manager. |
| Core components for KDE Activities' Activity Manager. |
||
|- |
|- |
||
| {{Anchor|KApiDox}} KApiDox |
| {{Anchor|KApiDox}} KApiDox |
||
| 4 |
| 4 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kapidox.git kapidox.git] |
||
| Scripts and data for building API documentation in a standard format and style. This framework contains scripts and data for building API documentation (dox) in a standard format and style. The Doxygen tool is used to do the actual documentation extraction and formatting, but this framework provides a wrapper script to make generating the documentation more convenient (including reading settings from the target framework or other module) and a standard template for the generated documentation. |
| Scripts and data for building API documentation in a standard format and style. This framework contains scripts and data for building API documentation (dox) in a standard format and style. The Doxygen tool is used to do the actual documentation extraction and formatting, but this framework provides a wrapper script to make generating the documentation more convenient (including reading settings from the target framework or other module) and a standard template for the generated documentation. |
||
|- |
|- |
||
| {{Anchor|KArchive}} KArchive |
| {{Anchor|KArchive}} KArchive |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/karchive.git karchive.git] |
||
| Classes for easy reading, creation and manipulation of "archive" formats including [[Zip (file format)|zip]] and [[tar (computing)|tar]]. |
| Classes for easy reading, creation and manipulation of "archive" formats including [[Zip (file format)|zip]] and [[tar (computing)|tar]]. |
||
|- |
|- |
||
| {{Anchor|KAuth}} KAuth |
| {{Anchor|KAuth}} KAuth |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kauth.git kauth.git] |
||
| Provides a convenient, system-integrated way to offload actions that need to be performed as a privileged user to small helper utilities. |
| Provides a convenient, system-integrated way to offload actions that need to be performed as a privileged user to small helper utilities. |
||
|- |
|- |
||
| {{Anchor|KBookmarks}} KBookmarks |
| {{Anchor|KBookmarks}} KBookmarks |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kbookmarks.git kbookmarks.git] |
||
| KBookmarks lets you access and manipulate bookmarks stored using the "XBEL format". The most common use for bookmarks is web browsers, but this can also be useful in any application where local files or URLs can be saved as bookmarks. |
| KBookmarks lets you access and manipulate bookmarks stored using the "XBEL format". The most common use for bookmarks is web browsers, but this can also be useful in any application where local files or URLs can be saved as bookmarks. |
||
|- |
|- |
||
| {{Anchor|KCMUtils}} KCMUtils |
| {{Anchor|KCMUtils}} KCMUtils |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kcmutils.git kcmutils.git] |
||
| Utilities, i.a. KSettings, for KDE System Settings modules. KCMUtils provides various classes to work with KCModules. KCModules can be created with the KConfigWidgets framework. |
| Utilities, i.a. KSettings, for KDE System Settings modules. KCMUtils provides various classes to work with KCModules. KCModules can be created with the KConfigWidgets framework. |
||
|- |
|- |
||
| {{Anchor|KCodecs}} KCodecs |
| {{Anchor|KCodecs}} KCodecs |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kcodecs.git kcodecs.git] |
||
| KCodecs is a string encoding library, it provides a collection of methods to manipulate strings using various encodings. It can automatically determine the charset of a string, translate XML entities, validate email addresses, and find encodings by name in a more tolerant way than QTextCodec (useful e.g. for data coming from the Internet). |
| KCodecs is a string encoding library, it provides a collection of methods to manipulate strings using various encodings. It can automatically determine the charset of a string, translate XML entities, validate email addresses, and find encodings by name in a more tolerant way than QTextCodec (useful e.g. for data coming from the Internet). |
||
|- |
|- |
||
| {{Anchor|KCompletion}} KCompletion |
| {{Anchor|KCompletion}} KCompletion |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kcompletion.git kcompletion.git] |
||
| String completion framework, including completion-enabled lineedit and combobox. When typing filenames, email addresses and other text where the user often wants to select from existing data (including what they previously typed) rather than enter anything wholly original, users often find it helpful if they only need to type the first few characters, and then have the application offer them a set of choices or attempt to finish off what they were typing. Email clients, shells and "open file" dialogs often provide this functionality. This framework helps implement this in Qt-based applications. You can use one of the completion-ready widgets provided by this framework, or integrate it into your application's other widgets directly. <br /> The easiest way to get started is to use a KComboBox, KHistoryComboBox or KLineEdit. If you want to integrate completion into other parts of the user interface, you can use KCompletion to manage and select the possible completions. |
| String completion framework, including completion-enabled lineedit and combobox. When typing filenames, email addresses and other text where the user often wants to select from existing data (including what they previously typed) rather than enter anything wholly original, users often find it helpful if they only need to type the first few characters, and then have the application offer them a set of choices or attempt to finish off what they were typing. Email clients, shells and "open file" dialogs often provide this functionality. This framework helps implement this in Qt-based applications. You can use one of the completion-ready widgets provided by this framework, or integrate it into your application's other widgets directly. <br /> The easiest way to get started is to use a KComboBox, KHistoryComboBox or KLineEdit. If you want to integrate completion into other parts of the user interface, you can use KCompletion to manage and select the possible completions. |
||
|- |
|- |
||
| {{Anchor|KConfig}} KConfig |
| {{Anchor|KConfig}} KConfig |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kconfig.git kconfig.git] |
||
| Persistent platform-independent application settings made of two parts: KConfigCore and KConfigGui.<br />KConfigCore provides access to the configuration files themselves, meaning it also generates the configuration in [[Extensible Markup Language|XML]].<br /> KConfigGui provides a way to hook graphical control elements (widgets) to the configuration so that they are automatically initialized from the configuration and automatically propagate their changes to their respective configuration files. |
| Persistent platform-independent application settings made of two parts: KConfigCore and KConfigGui.<br />KConfigCore provides access to the configuration files themselves, meaning it also generates the configuration in [[Extensible Markup Language|XML]].<br /> KConfigGui provides a way to hook graphical control elements (widgets) to the configuration so that they are automatically initialized from the configuration and automatically propagate their changes to their respective configuration files. |
||
|- |
|- |
||
| {{Anchor|KConfigWidgets}}KConfigWidgets |
| {{Anchor|KConfigWidgets}}KConfigWidgets |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kconfigwidgets.git kconfigwidgets.git] |
||
| [[Graphical control element]]s (widgets) for configuration dialogs. Widgets for configuration dialogs. KConfigWidgets provides easy-to-use classes to create configuration dialogs, as well as a set of widgets which uses KConfig to store their settings. |
| [[Graphical control element]]s (widgets) for configuration dialogs. Widgets for configuration dialogs. KConfigWidgets provides easy-to-use classes to create configuration dialogs, as well as a set of widgets which uses KConfig to store their settings. |
||
|- |
|- |
||
| {{Anchor|KCoreAddons}}KCoreAddons |
| {{Anchor|KCoreAddons}}KCoreAddons |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kcoreaddons.git kcoreaddons.git] |
||
| Utilities for core application functionality and accessing the OS. Qt addon library with a collection of non-GUI utilities. KCoreAddons provides classes built on top of QtCore to perform various tasks such as manipulating mime types, autosaving files, creating backup files, generating random sequences, performing text manipulations such as macro replacement, accessing user information and many more. |
| Utilities for core application functionality and accessing the OS. Qt addon library with a collection of non-GUI utilities. KCoreAddons provides classes built on top of QtCore to perform various tasks such as manipulating mime types, autosaving files, creating backup files, generating random sequences, performing text manipulations such as macro replacement, accessing user information and many more. |
||
|- |
|- |
||
| {{Anchor|KCrash}}KCrash |
| {{Anchor|KCrash}}KCrash |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kcrash.git kcrash.git] |
||
| Provides support for intercepting and handling application crashes. |
| Provides support for intercepting and handling application crashes. |
||
|- |
|- |
||
| {{Anchor|KDBusAddons}}KDBusAddons |
| {{Anchor|KDBusAddons}}KDBusAddons |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdbusaddons.git kdbusaddons.git] |
||
| KDBusAddons provides convenience [[D-Bus|DBus]] classes on top of QtDBus, as well as an API to create KDED modules. |
| KDBusAddons provides convenience [[D-Bus|DBus]] classes on top of QtDBus, as well as an API to create KDED modules. |
||
|- |
|- |
||
| KDeclarative |
| KDeclarative |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdeclarative.git kdeclarative.git] |
||
| Addon for Qt declarative |
| Addon for Qt declarative |
||
|- |
|- |
||
| {{Anchor|KDBusAddons|KDE Daemon}}KDED |
| {{Anchor|KDBusAddons|KDE Daemon}}KDED |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kded.git kded.git] |
||
| KDED stands for KDE Daemon, the central daemon of KDE work spaces. KDED runs in the background and performs a number of small tasks. Some of these tasks are built in, others are started on demand. |
| KDED stands for KDE Daemon, the central daemon of KDE work spaces. KDED runs in the background and performs a number of small tasks. Some of these tasks are built in, others are started on demand. |
||
|- |
|- |
||
| KDesignerPlugin |
| KDesignerPlugin |
||
| 3 |
| 3 |
||
| [https://invent.kde.org/frameworks/kdesignerplugin.git kdesignerplugin.git] |
|||
| [https://cgit.kde.org/kdeclarative.git kdeclarative.git] {{Webarchive|url=https://web.archive.org/web/20171228201737/https://cgit.kde.org/kdeclarative.git/ |date=2017-12-28 }} |
|||
| This framework provides plugins for Qt Designer that allow it to display the widgets provided by various KDE frameworks, as well as a utility (kgendesignerplugin) that can be used to generate other such plugins from ini-style description files. |
| This framework provides plugins for Qt Designer that allow it to display the widgets provided by various KDE frameworks, as well as a utility (kgendesignerplugin) that can be used to generate other such plugins from ini-style description files. |
||
|- |
|- |
||
| KDESu |
| KDESu |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdesu.git kdesu.git] |
||
| KDESU (KDE super user) provides a user interface for running shell commands with root privileges. It provides functionality for building GUI front ends for (password asking) console mode programs. For example, kdesu and kdessh use it to interface with [[su (Unix)|su]] and [[Secure Shell|ssh]] respectively. |
| KDESU (KDE super user) provides a user interface for running shell commands with root privileges. It provides functionality for building GUI front ends for (password asking) console mode programs. For example, kdesu and kdessh use it to interface with [[su (Unix)|su]] and [[Secure Shell|ssh]] respectively. |
||
|- |
|- |
||
| {{Anchor|KDEWebkit}}KDEWebkit |
| {{Anchor|KDEWebkit}}KDEWebkit |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdewebkit.git kdewebkit.git] |
||
| Integration of the HTML rendering engine [[WebKit]]. The KDEWebkit library provides KDE integration of the QtWebKit library. If you are using QtWebKit in your KDE application, you are encouraged to use this layer instead of using the QtWebKit classes directly. In particular, you should use KWebView in place of QWebView, KGraphicsWebView in place of QGraphicsWebView and KWebPage in place of QWebPage. |
| Integration of the HTML rendering engine [[WebKit]]. The KDEWebkit library provides KDE integration of the QtWebKit library. If you are using QtWebKit in your KDE application, you are encouraged to use this layer instead of using the QtWebKit classes directly. In particular, you should use KWebView in place of QWebView, KGraphicsWebView in place of QGraphicsWebView and KWebPage in place of QWebPage. |
||
|- |
|- |
||
| KDNSSDFramework |
| KDNSSDFramework |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdnssd.git kdnssd.git] |
||
| KDNSSD is a library for handling the DNS-based Service Discovery Protocol ([[DNS-SD]]), the layer of [Zeroconf] (http://www.zeroconf.org) that allows network services, such as printers, to be discovered without any user intervention or centralized infrastructure. |
| KDNSSD is a library for handling the DNS-based Service Discovery Protocol ([[DNS-SD]]), the layer of [Zeroconf] (http://www.zeroconf.org) that allows network services, such as printers, to be discovered without any user intervention or centralized infrastructure. |
||
|- |
|- |
||
| KDocTools |
| KDocTools |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kdoctools.git kdoctools.git] |
||
| Provides tools to generate documentation in various format from DocBook files. |
| Provides tools to generate documentation in various format from DocBook files. |
||
|- |
|- |
||
| KEmoticons |
| KEmoticons |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kemoticons.git kemoticons.git] |
||
| Provides emoticons themes as well as helper classes to automatically convert text emoticons to graphical emoticons. |
| Provides emoticons themes as well as helper classes to automatically convert text emoticons to graphical emoticons. |
||
|- |
|- |
||
| {{Anchor|KGlobalAccel}}KGlobalAccel |
| {{Anchor|KGlobalAccel}}KGlobalAccel |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kglobalaccel.git kglobalaccel.git] |
||
| KGlobalAccel allows you to have global keyboard shortcuts (accelerators) that are independent of the focused window. Unlike regular shortcuts, the application's window does not need focus for them to be activated. |
| KGlobalAccel allows you to have global keyboard shortcuts (accelerators) that are independent of the focused window. Unlike regular shortcuts, the application's window does not need focus for them to be activated. |
||
|- |
|- |
||
| KGuiAddons |
| KGuiAddons |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kguiaddons.git kguiaddons.git] |
||
| KDE GUI Addons; Utilities for graphical user interfaces; The KDE GUI addons provide utilities for graphical user interfaces in the areas of colors, fonts, text, images, keyboard input. |
| KDE GUI Addons; Utilities for graphical user interfaces; The KDE GUI addons provide utilities for graphical user interfaces in the areas of colors, fonts, text, images, keyboard input. |
||
|- |
|- |
||
| {{Anchor|KHTML}}[[KHTML]] |
| {{Anchor|KHTML}}[[KHTML]] |
||
| 4 |
| 4 |
||
| [https:// |
| [https://invent.kde.org/frameworks/khtml.git khtml.git] |
||
| KHTML is the HTML rendering engine from which WebKit was forked. It is based on the KParts technology and uses KJS for JavaScript support. |
| KHTML is the HTML rendering engine from which WebKit was forked. It is based on the KParts technology and uses KJS for JavaScript support. |
||
|- |
|- |
||
| Ki18n |
| Ki18n |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/ki18n.git ki18n.git] |
||
| KDE gettext-based UI text internationalization. KI18n provides functionality for internationalizing user interface text in applications, based on the [[GNU Gettext]] translation system. It wraps the standard Gettext functionality, so that the programmers and translators can use the familiar Gettext tools and workflows. KI18n provides additional functionality as well, for both programmers and translators, which can help to achieve a higher overall quality of source and translated text. This includes argument capturing, customizable markup, and translation scripting. |
| KDE gettext-based UI text internationalization. KI18n provides functionality for internationalizing user interface text in applications, based on the [[GNU Gettext]] translation system. It wraps the standard Gettext functionality, so that the programmers and translators can use the familiar Gettext tools and workflows. KI18n provides additional functionality as well, for both programmers and translators, which can help to achieve a higher overall quality of source and translated text. This includes argument capturing, customizable markup, and translation scripting. |
||
|- |
|- |
||
| KIconThemes |
| KIconThemes |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kiconthemes.git kiconthemes.git] |
||
| This library contains classes to improve the handling of icons in applications using the KDE Frameworks. |
| This library contains classes to improve the handling of icons in applications using the KDE Frameworks. |
||
|- |
|- |
||
| KIdleTime |
| KIdleTime |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kidletime.git kidletime.git] |
||
| Integration module for idle time detection. |
| Integration module for idle time detection. |
||
|- |
|- |
||
| KImageFormats |
| KImageFormats |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kimageformats.git kimageformats.git] |
||
| Plugins to allow QImage to support extra file formats. This framework provides additional image format plugins for QtGui. As such it is not required for the compilation of any other software, but may be a runtime requirement for Qt-based software to support certain image formats.<br>The following image formats have read-only support: |
| Plugins to allow QImage to support extra file formats. This framework provides additional image format plugins for QtGui. As such it is not required for the compilation of any other software, but may be a runtime requirement for Qt-based software to support certain image formats.<br>The following image formats have read-only support: |
||
* [[GIMP]] ([[XCF (file format)|xcf]]) |
* [[GIMP]] ([[XCF (file format)|xcf]]) |
||
Line 231: | Line 231: | ||
| {{Anchor|KInit}}KInit |
| {{Anchor|KInit}}KInit |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kinit.git kinit.git] |
||
| kdeinit is a process launcher, that launches processes by forking and then loading a dynamic library which should contain a 'kdemain(...)' function. kdeinit speeds up start of applications on KDE workspaces; kdeinit is linked against all libraries a standard KDE application needs. With this technique starting an application becomes much faster because now only the application itself needs to be linked whereas otherwise both the application as well as all the libraries it uses need to be linked. |
| kdeinit is a process launcher, that launches processes by forking and then loading a dynamic library which should contain a 'kdemain(...)' function. kdeinit speeds up start of applications on KDE workspaces; kdeinit is linked against all libraries a standard KDE application needs. With this technique starting an application becomes much faster because now only the application itself needs to be linked whereas otherwise both the application as well as all the libraries it uses need to be linked. |
||
|- |
|- |
||
| [[KIO]] |
| [[KIO]] |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kio.git kio.git] |
||
| Network transparent access to files and data. This framework implements almost all the file management functions you will ever need. [[Dolphin (file manager)|Dolphin]] and the KDE file dialog also uses this to provide its network-enabled file management. |
| Network transparent access to files and data. This framework implements almost all the file management functions you will ever need. [[Dolphin (file manager)|Dolphin]] and the KDE file dialog also uses this to provide its network-enabled file management. |
||
|- |
|- |
||
| Kirigami |
| Kirigami |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kirigami.git/ kirigami.git] |
||
| A set of QtQuick plugins to build user interfaces based on the KDE UX guidelines |
| A set of QtQuick plugins to build user interfaces based on the KDE UX guidelines |
||
|- |
|- |
||
| KItemModels |
| KItemModels |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kitemmodels.git kitemmodels.git] |
||
| Set of item models extending the Qt model-view framework. KItemModels provides the following models: |
| Set of item models extending the Qt model-view framework. KItemModels provides the following models: |
||
* KBreadcrumbSelectionModel - Selects the parents of selected items to create breadcrumbs |
* KBreadcrumbSelectionModel - Selects the parents of selected items to create breadcrumbs |
||
Line 261: | Line 261: | ||
| KItemViews |
| KItemViews |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kitemviews.git kitemviews.git] |
||
| Set of item views extending the Qt model-view framework. KItemViews includes a set of views, which can be used with item models. It includes views for categorizing lists and to add search filters to flat and hierarchical lists. |
| Set of item views extending the Qt model-view framework. KItemViews includes a set of views, which can be used with item models. It includes views for categorizing lists and to add search filters to flat and hierarchical lists. |
||
|- |
|- |
||
| KJobWidgets |
| KJobWidgets |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kjobwidgets.git kjobwidgets.git] |
||
| KJobWIdgets provides widgets for showing progress of asynchronous jobs. |
| KJobWIdgets provides widgets for showing progress of asynchronous jobs. |
||
|- |
|- |
||
| [[KJS (software)|KJS]] |
| [[KJS (software)|KJS]] |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kjs.git kjs.git] |
||
| [[KJS (software)|KJS]] provides an ECMAScript compatible interpreter. The ECMA standard is based on well known scripting languages such as Netscape's JavaScript and Microsoft's JScript. |
| [[KJS (software)|KJS]] provides an ECMAScript compatible interpreter. The ECMA standard is based on well known scripting languages such as Netscape's JavaScript and Microsoft's JScript. |
||
|- |
|- |
||
| KJSEmbed |
| KJSEmbed |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kjsembed.git kjsembed.git] |
||
| KSJEmbed provides a method of binding JavaScript objects to QObjects, so you can script your applications. |
| KSJEmbed provides a method of binding JavaScript objects to QObjects, so you can script your applications. |
||
|- |
|- |
||
| KMediaPlayer |
| KMediaPlayer |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kmediaplayer.git kmediaplayer.git] |
||
| ''Deprecated'': Interface for media player KParts. KMediaPlayer builds on the KParts framework to provide a common interface for KParts that can play media files. This framework is a porting aid. It is not recommended for new projects, and existing projects that use it are advised to port away from it, and use plain KParts instead. |
| ''Deprecated'': Interface for media player KParts. KMediaPlayer builds on the KParts framework to provide a common interface for KParts that can play media files. This framework is a porting aid. It is not recommended for new projects, and existing projects that use it are advised to port away from it, and use plain KParts instead. |
||
|- |
|- |
||
| {{Anchor|KNewStuff}} KNewStuff |
| {{Anchor|KNewStuff}} KNewStuff |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/knewstuff.git knewstuff.git] |
||
| Framework for downloading and sharing additional application data. The KNewStuff library implements collaborative data sharing for applications. It uses libattica to support the Open Collaboration Services specification.<br /> |
| Framework for downloading and sharing additional application data. The KNewStuff library implements collaborative data sharing for applications. It uses libattica to support the Open Collaboration Services specification.<br /> |
||
[https:// |
[https://invent.kde.org/frameworks/attica.git Attica] is a Qt library that implements the Open Collaboration Services API version 1.6. It grants easy access to the services such as querying information about persons and contents. |
||
|- |
|- |
||
| {{Anchor|KNotifications}} KNotifications |
| {{Anchor|KNotifications}} KNotifications |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/knotifications.git knotifications.git] |
||
| Solution with abstraction for system notifications. |
| Solution with abstraction for system notifications. |
||
|- |
|- |
||
| {{Anchor|KNotifyConfig}} KNotifyConfig |
| {{Anchor|KNotifyConfig}} KNotifyConfig |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/knotifyconfig.git knotifyconfig.git] |
||
| Module for KNotify configuration. |
| Module for KNotify configuration. |
||
|- |
|- |
||
| {{Anchor|KParts}} KParts |
| {{Anchor|KParts}} KParts |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kparts.git kparts.git] |
||
| The KParts library implements the framework for KDE parts. One individual user interface component is called a ''KPart'' and is some elaborate widget with a user-interface defined in terms of actions (menu items, toolbar icons). KParts are analogous to [[Bonobo ( |
| The KParts library implements the framework for KDE parts. One individual user interface component is called a ''KPart'' and is some elaborate widget with a user-interface defined in terms of actions (menu items, toolbar icons). KParts are analogous to [[Bonobo (GNOME)|Bonobo]] components in [[GNOME]] and [[ActiveX]] controls in Microsoft's [[Component Object Model]]. [[Konsole]] is available as a KPart and is used in applications like [[Konqueror]] and [[Kate (text editor)|Kate]]. Example uses of KParts: |
||
* [[Konqueror]] uses the [[Okular]] part to display documents |
* [[Konqueror]] uses the [[Okular]] part to display documents |
||
* [[Konqueror]] uses the [[Dragon Player]] part to play multimedia |
* [[Konqueror]] uses the [[Dragon Player]] part to play multimedia |
||
Line 315: | Line 315: | ||
| {{Anchor|KPlotting}} KPlotting |
| {{Anchor|KPlotting}} KPlotting |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kplotting.git kplotting.git] |
||
| KPlotWidget is a QWidget-derived class that provides a virtual base class for easy data-plotting. The idea behind KPlotWidget is that you only have |
| KPlotWidget is a QWidget-derived class that provides a virtual base class for easy data-plotting. The idea behind KPlotWidget is that you only have |
||
to specify information in "data units"; i.e., the natural units of the data being plotted. KPlotWidget automatically converts everything to screen pixel units. KPlotWidget draws X and Y axes with tick marks and tick labels. It automatically determines how many tick marks to use and where they should be, based on the data limits specified for the plot. You change the limits by calling `setLimits(double x1, double x2, double y1, double y2)`. Data to be plotted are stored using the KPlotObject class. KPlotObject consists of a QList of QPointF's, each specifying the X,Y coordinates of a data point. KPlotObject also specifies the "type" of data to be plotted (POINTS or CURVE or POLYGON or LABEL). |
to specify information in "data units"; i.e., the natural units of the data being plotted. KPlotWidget automatically converts everything to screen pixel units. KPlotWidget draws X and Y axes with tick marks and tick labels. It automatically determines how many tick marks to use and where they should be, based on the data limits specified for the plot. You change the limits by calling `setLimits(double x1, double x2, double y1, double y2)`. Data to be plotted are stored using the KPlotObject class. KPlotObject consists of a QList of QPointF's, each specifying the X,Y coordinates of a data point. KPlotObject also specifies the "type" of data to be plotted (POINTS or CURVE or POLYGON or LABEL). |
||
Line 321: | Line 321: | ||
| {{Anchor|KPty}} KPty |
| {{Anchor|KPty}} KPty |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kpty.git kpty.git] |
||
| Interfacing with pseudo terminal devices. This library provides primitives to interface with pseudo terminal devices as well as a KProcess derived class for running child processes and communicating with them using a pty. |
| Interfacing with [[pseudo terminal]] devices. This library provides primitives to interface with pseudo terminal devices as well as a KProcess derived class for running child processes and communicating with them using a pty. |
||
|- |
|- |
||
| {{Anchor|Kross}} [[Kross (software)|Kross]] |
| {{Anchor|Kross}} [[Kross (software)|Kross]] |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kross.git kross.git] |
||
| Embedding of scripting into applications. Kross is a scripting bridge to embed scripting functionality into an application. It supports [[QtScript]] as a scripting interpreter back-end.<br /> |
| Embedding of scripting into applications. Kross is a scripting bridge to embed scripting functionality into an application. It supports [[QtScript]] as a scripting interpreter back-end.<br /> |
||
The core of Kross provides the framework to deal transparently with interpreter-back-ends and offers abstract functionality to deal with scripts. |
The core of Kross provides the framework to deal transparently with interpreter-back-ends and offers abstract functionality to deal with scripts. |
||
Line 332: | Line 332: | ||
| {{Anchor|KRunner}} KRunner |
| {{Anchor|KRunner}} KRunner |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/krunner.git krunner.git] |
||
| Framework for providing different actions given a string query. Framework for Plasma runners. The Plasma workspace provides an application called KRunner which, among other things, allows one to type into a text area which causes various actions and information that match the text appear as the text is being typed. One application for this is the universal runner you can launch with {{keypress|ALT|F2}}. |
| Framework for providing different actions given a string query. Framework for Plasma runners. The Plasma workspace provides an application called KRunner which, among other things, allows one to type into a text area which causes various actions and information that match the text appear as the text is being typed. One application for this is the universal runner you can launch with {{keypress|ALT|F2}}. |
||
|- |
|- |
||
| {{Anchor|KService}} KService |
| {{Anchor|KService}} KService |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kservice.git kservice.git] |
||
| KService provides a plugin framework for handling desktop services. Services can be applications or libraries. They can be bound to MIME types or handled by application specific code. |
| KService provides a plugin framework for handling desktop services. Services can be applications or libraries. They can be bound to MIME types or handled by application specific code. |
||
|- |
|- |
||
| {{Anchor|KSyntaxHighlighting}} KSyntaxHighlighting |
| {{Anchor|KSyntaxHighlighting}} KSyntaxHighlighting |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/syntax-highlighting.git/ syntax-highlighting.git] |
||
| This is a stand-alone implementation of the Kate syntax highlighting engine. It's meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class. |
| This is a stand-alone implementation of the Kate syntax highlighting engine. It's meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class. |
||
Line 348: | Line 348: | ||
| {{Anchor|KTextEditor}} KTextEditor |
| {{Anchor|KTextEditor}} KTextEditor |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/ktexteditor.git ktexteditor.git] |
||
| KTextEditor provides a powerful text editor component that you can embed in your application, either as a KPart or using the KF5::TextEditor library (if you need more control). The text editor component contains many useful features, from syntax highlighting and automatic indentation to advanced scripting support, making it suitable for everything from a simple embedded text-file editor to an advanced IDE. |
| KTextEditor provides a powerful text editor component that you can embed in your application, either as a KPart or using the KF5::TextEditor library (if you need more control). The text editor component contains many useful features, from syntax highlighting and automatic indentation to advanced scripting support, making it suitable for everything from a simple embedded text-file editor to an advanced IDE. |
||
|- |
|- |
||
| {{Anchor|KTextWidgets}} KTextWidgets |
| {{Anchor|KTextWidgets}} KTextWidgets |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/ktextwidgets.git ktextwidgets.git] |
||
| KTextWidgets provides widgets for displaying and editing text. It supports rich text as well as plain text. |
| KTextWidgets provides widgets for displaying and editing text. It supports rich text as well as plain text. |
||
|- |
|- |
||
| {{Anchor|KUnitConversion}} KUnitConversion |
| {{Anchor|KUnitConversion}} KUnitConversion |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kunitconversion.git kunitconversion.git] |
||
| KUnitConversion provides functions to convert values in different physical units. It supports converting different prefixes (e.g. kilo, mega, giga) as well as converting between different unit systems (e.g. liters, gallons). The following areas are supported: |
| KUnitConversion provides functions to convert values in different physical units. It supports converting different prefixes (e.g. kilo, mega, giga) as well as converting between different unit systems (e.g. liters, gallons). The following areas are supported: |
||
* Acceleration |
* Acceleration |
||
Line 386: | Line 386: | ||
| {{Anchor|KWallet|KWalletFramework}}KWalletFramework |
| {{Anchor|KWallet|KWalletFramework}}KWalletFramework |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kwallet.git kwallet.git] |
||
| Safe desktop-wide storage for passwords. This framework contains two main components: |
| Safe desktop-wide storage for passwords. This framework contains two main components: |
||
* Interface to KWallet, the safe desktop-wide storage for passwords on KDE work spaces. |
* Interface to KWallet, the safe desktop-wide storage for passwords on KDE work spaces. |
||
Line 393: | Line 393: | ||
| {{Anchor|KWayland}} [[KWayland]] |
| {{Anchor|KWayland}} [[KWayland]] |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kwayland.git kwayland.git] |
||
| KWayland is the KDE library for implementing Wayland support in KDE applications, it fulfills needs beyond what [[QtWayland]] provides. All the KDE applications in a plasma-wayland-session use this library and LXQt maybe as well. KWayland has been part of KDE Frameworks since 5.22 (May 2016); it was formerly distributed as part of KDE Plasma 5. |
| KWayland is the KDE library for implementing Wayland support in KDE applications, it fulfills needs beyond what [[QtWayland]] provides. All the KDE applications in a plasma-wayland-session use this library and LXQt maybe as well. KWayland has been part of KDE Frameworks since 5.22 (May 2016); it was formerly distributed as part of KDE Plasma 5. |
||
|- |
|- |
||
| {{Anchor|KWidgetsAddons}} KWidgetsAddons |
| {{Anchor|KWidgetsAddons}} KWidgetsAddons |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kwidgetsaddons.git kwidgetsaddons.git] |
||
| Addon with various classes on top of QtWidgets. If you are porting applications from KDE Platform 4 "kdeui" library, you will find many of its classes here. Provided are action classes that can be added to toolbars or menus, a wide range of widgets for selecting characters, fonts, colors, actions, dates and times, or MIME types, as well as platform-aware dialogs for configuration pages, message boxes, and password requests. Further widgets and classes can be found in other KDE frameworks. |
| Addon with various classes on top of QtWidgets. If you are porting applications from KDE Platform 4 "kdeui" library, you will find many of its classes here. Provided are action classes that can be added to toolbars or menus, a wide range of widgets for selecting characters, fonts, colors, actions, dates and times, or MIME types, as well as platform-aware dialogs for configuration pages, message boxes, and password requests. Further widgets and classes can be found in other KDE frameworks. |
||
|- |
|- |
||
| {{Anchor|KWindowSystem}} KWindowSystem |
| {{Anchor|KWindowSystem}} KWindowSystem |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kwindowsystem.git kwindowsystem.git] |
||
| Allows to interact with the [[windowing system]]. It provides a NETRootInfo for accessing the global state (all that's set on the root window) and NETWinInfo for all information about a specific window. The classes have a window manager and client perspective. This is the foundation which powers [[KWin]] and various parts of the [[graphical shell]] such as the taskmanager.<ref>{{Cite web|url=http://blog.martin-graesslin.com/blog/2014/02/kwindowsystem-in-frameworks-5/|title = KWindowSystem in Frameworks 5|date = 6 February 2014}}</ref> On top of those X11-specific classes we have a convenient API KWindowInfo and KWindowSystem which provides a windowing system independent API for our applications. |
| Allows to interact with the [[windowing system]]. It provides a NETRootInfo for accessing the global state (all that's set on the root window) and NETWinInfo for all information about a specific window. The classes have a window manager and client perspective. This is the foundation which powers [[KWin]] and various parts of the [[graphical shell]] such as the taskmanager.<ref>{{Cite web|url = http://blog.martin-graesslin.com/blog/2014/02/kwindowsystem-in-frameworks-5/|title = KWindowSystem in Frameworks 5|date = 6 February 2014|access-date = 25 July 2014|archive-date = 28 July 2014|archive-url = https://web.archive.org/web/20140728155928/http://blog.martin-graesslin.com/blog/2014/02/kwindowsystem-in-frameworks-5/|url-status = live}}</ref> On top of those X11-specific classes we have a convenient API KWindowInfo and KWindowSystem which provides a windowing system independent API for our applications. |
||
|- |
|- |
||
| {{Anchor|KXMLGUI}} KXMLGUI |
| {{Anchor|KXMLGUI}} KXMLGUI |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/kxmlgui.git kxmlgui.git] |
||
| KXMLGUI provides a framework for managing menu and toolbar actions in an abstract way. The actions are configured through a XML description and hooks in the application code. The framework supports merging of multiple description for example for integrating actions from plugins.<br /> KXMLGui makes use of the Kiosk authorization functionality of KConfig (see the KAuthorized namespace in that framework). Notably, QAction instances added to a KActionCollection are disabled if KAuthorized::authorizeAction() reports that they are not authorized. The items on the standard help menu (KHelpMenu) can likewise be disabled based on Kiosk settings, and toolbar editing can be restricted. See KActionCollection, KHelpMenu and KToolBar documentation for more information. |
| KXMLGUI provides a framework for managing menu and toolbar actions in an abstract way. The actions are configured through a XML description and hooks in the application code. The framework supports merging of multiple description for example for integrating actions from plugins.<br /> KXMLGui makes use of the Kiosk authorization functionality of KConfig (see the KAuthorized namespace in that framework). Notably, QAction instances added to a KActionCollection are disabled if KAuthorized::authorizeAction() reports that they are not authorized. The items on the standard help menu (KHelpMenu) can likewise be disabled based on Kiosk settings, and toolbar editing can be restricted. See KActionCollection, KHelpMenu and KToolBar documentation for more information. |
||
|- |
|- |
||
| {{Anchor|Plasma-framework}} Plasma-framework |
| {{Anchor|Plasma-framework}} Plasma-framework |
||
| 3 |
| 3 |
||
| [https:// |
| [https://invent.kde.org/frameworks/plasma-framework.git plasma-framework.git] |
||
| Foundational libraries, runtime components and tools of the KDE Plasma workspaces based upon KF5 and Qt5. The plasma framework provides the following: |
| Foundational libraries, runtime components and tools of the KDE Plasma workspaces based upon KF5 and Qt5. The plasma framework provides the following: |
||
* [[QML]] components |
* [[QML]] components |
||
Line 429: | Line 429: | ||
| {{Anchor|Prison}} Prison |
| {{Anchor|Prison}} Prison |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/prison.git/ prison.git] |
||
| Prison is a Qt-based barcode abstraction layer/library and provides uniform access to generation of barcodes with data. |
| Prison is a Qt-based barcode abstraction layer/library and provides uniform access to generation of barcodes with data. |
||
|- |
|- |
||
| {{Anchor|Solid}} Solid |
| {{Anchor|Solid}} Solid |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/solid.git solid.git] |
||
| Solid provides a way of querying and interacting with hardware independently of the underlying operating system. It provides the following features for application developers: |
| Solid provides a way of querying and interacting with hardware independently of the underlying operating system. It provides the following features for application developers: |
||
* Hardware Discovery |
* Hardware Discovery |
||
Line 443: | Line 443: | ||
| {{Anchor|Sonnet}} [[Sonnet (software)|Sonnet]] |
| {{Anchor|Sonnet}} [[Sonnet (software)|Sonnet]] |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/sonnet.git sonnet.git] |
||
| Sonnet is a plugin-based [[Spell checker|spell checking]] library for Qt-based applications. It supports several different plugins, including HSpell, Enchant, ASpell and HUNSPELL. It also supports automated language detection, based on a combination of different algorithms. The simplest way to use Sonnet in your application is to use the SpellCheckDecorator class on your QTextEdit. |
| Sonnet is a plugin-based [[Spell checker|spell checking]] library for Qt-based applications. It supports several different plugins, including HSpell, Enchant, ASpell and HUNSPELL. It also supports automated language detection, based on a combination of different algorithms. The simplest way to use Sonnet in your application is to use the SpellCheckDecorator class on your QTextEdit. |
||
|- |
|- |
||
| {{Anchor|Syndication}} Syndication |
| {{Anchor|Syndication}} Syndication |
||
| 2 |
| 2 |
||
| [https:// |
| [https://invent.kde.org/frameworks/syndication.git syndication.git] |
||
| Syndication is an RSS/Atom parser library. |
| Syndication is an RSS/Atom parser library. |
||
|- |
|- |
||
| {{Anchor|ThreadWeaver}} [[ThreadWeaver]] |
| {{Anchor|ThreadWeaver}} [[ThreadWeaver]] |
||
| 1 |
| 1 |
||
| [https:// |
| [https://invent.kde.org/frameworks/threadweaver.git threadweaver.git] |
||
| ThreadWeaver is a Job queue. It executes jobs in threads it internally manages. |
| ThreadWeaver is a Job queue. It executes jobs in threads it internally manages. |
||
|} |
|} |
||
==== Kirigami ==== |
==== Kirigami ==== |
||
Kirigami is a [[QML]] application framework<ref name="KDE Kirigami">{{cite web|title=KDE Kirigami|url=https://www.kde.org/products/kirigami/|access-date=November 25, 2018|publisher=KDE}}</ref> developed by Marco Martin<ref>{{Cite web|title=Contributors to KDE/Kirigami|website=[[GitHub]]|url=https://github.com/KDE/kirigami/graphs/contributors}}</ref> that enables developers to write applications that run natively on Android, iOS, Windows, Plasma Mobile and any classic Linux desktop environment without code adjustments. |
Kirigami is a [[QML]] application framework<ref name="KDE Kirigami">{{cite web|title=KDE Kirigami|url=https://www.kde.org/products/kirigami/|access-date=November 25, 2018|publisher=KDE|archive-date=July 29, 2019|archive-url=https://web.archive.org/web/20190729201722/https://kde.org/products/kirigami/|url-status=live}}</ref> developed by Marco Martin<ref>{{Cite web|title=Contributors to KDE/Kirigami|website=[[GitHub]]|url=https://github.com/KDE/kirigami/graphs/contributors|access-date=2021-08-08|archive-date=2019-04-30|archive-url=https://web.archive.org/web/20190430053626/https://github.com/KDE/kirigami/graphs/contributors|url-status=live}}</ref> that enables developers to write applications that run natively on Android, iOS, Windows, Plasma Mobile and any classic Linux desktop environment without code adjustments. |
||
It is used by various applications, for example [[Linus Torvalds]] and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji,<ref>Archived at [https://ghostarchive.org/varchive/youtube/20211205/LjyKtusCy2Y Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20200802235905/https://www.youtube.com/watch?v=LjyKtusCy2Y Wayback Machine]{{cbignore}}: {{cite web| url = https://youtube.com/watch?v=LjyKtusCy2Y| title = Banji (Ring-KDE) new skin on desktop Linux and Android | website=[[YouTube]]}}{{cbignore}}</ref> the Kaidan messenger,<ref>{{Cite web|url=https://github.com/KaidanIM/Kaidan|title = Kaidan - A user-friendly XMPP client for every device!|website = [[GitHub]]|date = 4 July 2021}}</ref> Vvave music player and the KDE software center Discover. |
It is used by various applications, for example [[Linus Torvalds]] and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji,<ref>Archived at [https://ghostarchive.org/varchive/youtube/20211205/LjyKtusCy2Y Ghostarchive]{{cbignore}} and the [https://web.archive.org/web/20200802235905/https://www.youtube.com/watch?v=LjyKtusCy2Y Wayback Machine]{{cbignore}}: {{cite web| url = https://youtube.com/watch?v=LjyKtusCy2Y| title = Banji (Ring-KDE) new skin on desktop Linux and Android | website=[[YouTube]]}}{{cbignore}}</ref> the Kaidan messenger,<ref>{{Cite web|url = https://github.com/KaidanIM/Kaidan|title = Kaidan - A user-friendly XMPP client for every device!|website = [[GitHub]]|date = 4 July 2021|access-date = 8 August 2021|archive-date = 26 April 2019|archive-url = https://web.archive.org/web/20190426025950/https://github.com/KaidanIM/Kaidan|url-status = live}}</ref> Vvave music player and the KDE software center Discover. |
||
==== Software packages ==== |
==== Software packages ==== |
||
Linux distribution use some [[package management system]] to package the software they distribute. [[Debian]] for example distributes ''KGlobalAccel'' under the package name ''libkf5globalaccel'',<ref>{{cite web |url=https://packages.debian.org/search?suite=default§ion=all&arch=amd64&searchon=names&keywords=libkf5globalaccel |title=KGlobalAccel in Debian}}</ref> while [[Fedora Linux]] distributes it under the name ''kf5-kglobalaccel''.<ref>{{cite web |url=https://apps.fedoraproject.org/packages/s/KGlobalAccel |title=KGlobalAccel in Fedora}}{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> |
Linux distribution use some [[package management system]] to package the software they distribute. [[Debian]] for example distributes ''KGlobalAccel'' under the package name ''libkf5globalaccel'',<ref>{{cite web |url=https://packages.debian.org/search?suite=default§ion=all&arch=amd64&searchon=names&keywords=libkf5globalaccel |title=KGlobalAccel in Debian |access-date=2016-09-11 |archive-date=2016-09-20 |archive-url=https://web.archive.org/web/20160920164942/https://packages.debian.org/search?suite=default§ion=all&arch=amd64&searchon=names&keywords=libkf5globalaccel |url-status=live }}</ref> while [[Fedora Linux]] distributes it under the name ''kf5-kglobalaccel''.<ref>{{cite web |url=https://apps.fedoraproject.org/packages/s/KGlobalAccel |title=KGlobalAccel in Fedora}}{{Dead link|date=August 2021 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> |
||
=== Bindings === |
=== Bindings === |
||
While being mainly written in C++, there are many bindings for other programming languages available:<ref>{{cite web|title=The KDE development platform|url=https://www.kde.org/developerplatform/|access-date=2010-11-26}}</ref><ref>[http://techbase.kde.org/Development/Languages Development/Languages - KDE TechBase]. Techbase.kde.org (2012-07-12). Retrieved on 2013-07-17.</ref> |
While being mainly written in C++, there are many bindings for other programming languages available:<ref>{{cite web|title=The KDE development platform|url=https://www.kde.org/developerplatform/|access-date=2010-11-26|archive-date=2018-10-03|archive-url=https://web.archive.org/web/20181003161722/https://www.kde.org/developerplatform/|url-status=live}}</ref><ref>[http://techbase.kde.org/Development/Languages Development/Languages - KDE TechBase] {{Webarchive|url=https://web.archive.org/web/20210203083736/https://techbase.kde.org/Development/Languages |date=2021-02-03 }}. Techbase.kde.org (2012-07-12). Retrieved on 2013-07-17.</ref> |
||
* Python |
* Python |
||
* Ruby ([[Korundum]], built on top of [[QtRuby]]) |
* Ruby ([[Korundum]], built on top of [[QtRuby]]) |
||
* Perl |
* Perl |
||
* [[C Sharp (programming language)|C#]] (however, the current framework for binding to C# and other .NET languages has been deprecated, and the replacement only compiles on Windows).<ref>{{cite web|title=Qyoto|url=https://techbase.kde.org/Development/Languages/Qyoto|access-date=2015-01-18}}</ref> |
* [[C Sharp (programming language)|C#]] (however, the current framework for binding to C# and other .NET languages has been deprecated, and the replacement only compiles on Windows).<ref>{{cite web|title=Qyoto|url=https://techbase.kde.org/Development/Languages/Qyoto|access-date=2015-01-18|archive-date=2020-11-27|archive-url=https://web.archive.org/web/20201127041557/https://techbase.kde.org/Development/Languages/Qyoto|url-status=live}}</ref> |
||
These and other bindings use the following technologies: |
These and other bindings use the following technologies: |
||
Line 484: | Line 484: | ||
{{See also|KDE Software Compilation#Release cycle}} |
{{See also|KDE Software Compilation#Release cycle}} |
||
The 5.0 release was preceded by a technology preview, two alpha releases, and three beta releases.<ref>{{cite web|url=http://kde.org/announcements/frameworks5TP/|title=Frameworks 5 Technology Preview|publisher=KDE|date=2014-01-07}}</ref><ref>{{cite web|url=http://www.kde.org/announcements/announce-frameworks5-alpha.php|title=KDE Ships First Alpha of Frameworks 5|publisher=KDE|date=2014-02-14}}</ref><ref name=alpha2rel>{{cite web|url=http://www.kde.org/announcements/announce-frameworks5-alpha2.php|title=KDE Ships Second Alpha of Frameworks 5|publisher=KDE|date=2014-03-03}}</ref> |
The 5.0 release was preceded by a technology preview, two alpha releases, and three beta releases.<ref>{{cite web|url=http://kde.org/announcements/frameworks5TP/|title=Frameworks 5 Technology Preview|publisher=KDE|date=2014-01-07|access-date=2014-02-27|archive-date=2014-02-26|archive-url=https://web.archive.org/web/20140226212223/http://www.kde.org/announcements/frameworks5TP/|url-status=live}}</ref><ref>{{cite web|url=http://www.kde.org/announcements/announce-frameworks5-alpha.php|title=KDE Ships First Alpha of Frameworks 5|publisher=KDE|date=2014-02-14|access-date=2014-02-27|archive-date=2014-03-01|archive-url=https://web.archive.org/web/20140301164720/http://www.kde.org/announcements/announce-frameworks5-alpha.php|url-status=live}}</ref><ref name=alpha2rel>{{cite web|url=http://www.kde.org/announcements/announce-frameworks5-alpha2.php|title=KDE Ships Second Alpha of Frameworks 5|publisher=KDE|date=2014-03-03|access-date=2014-03-04|archive-date=2014-03-09|archive-url=https://web.archive.org/web/20140309093024/http://www.kde.org/announcements/announce-frameworks5-alpha2.php|url-status=live}}</ref> |
||
The source code of KDE Frameworks has been around since KDElibs 1. The first release as ''KDE Frameworks'' was with version 5, to account for the fact that the code base was that of KDE Platform version 4 (the only major version of [[KDE Platform]]). |
The source code of KDE Frameworks has been around since KDElibs 1. The first release as ''KDE Frameworks'' was with version 5, to account for the fact that the code base was that of KDE Platform version 4 (the only major version of [[KDE Platform]]). |
||
The transition from [[KDE Platform]] to KDE Frameworks began in August 2013, guided by top KDE technical contributors.<ref name=rel.struct>{{cite web|url=https://dot.kde.org/2013/09/04/kde-release-structure-evolves|title=KDE Release Structure Evolves|author=Howard Chan|publisher=KDE|date=2013-09-04|access-date=2014-02-27}}</ref> |
The transition from [[KDE Platform]] to KDE Frameworks began in August 2013, guided by top KDE technical contributors.<ref name=rel.struct>{{cite web|url=https://dot.kde.org/2013/09/04/kde-release-structure-evolves|title=KDE Release Structure Evolves|author=Howard Chan|publisher=KDE|date=2013-09-04|access-date=2014-02-27|archive-date=2020-11-12|archive-url=https://web.archive.org/web/20201112015744/https://dot.kde.org/2013/09/04/kde-release-structure-evolves|url-status=live}}</ref> |
||
After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5,<ref>{{cite web |url=http://mail.kde.org/pipermail/kde-frameworks-devel/2014-July/017410.html |title=KF5 Update Meeting Minutes 2014-w28 |date=2014-07-08}}</ref> an example being better integration of [[Firefox]] into KDE.<ref>{{cite web |
After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5,<ref>{{cite web |url=http://mail.kde.org/pipermail/kde-frameworks-devel/2014-July/017410.html |title=KF5 Update Meeting Minutes 2014-w28 |date=2014-07-08 |access-date=2014-07-10 |archive-date=2016-03-07 |archive-url=https://web.archive.org/web/20160307155318/https://mail.kde.org/pipermail/kde-frameworks-devel/2014-July/017410.html |url-status=live }}</ref> an example being better integration of [[Firefox]] into KDE.<ref>{{cite web|url=https://mail.mozilla.org/pipermail/firefox-dev/2014-July/001940.html|title=Firefox + KDE integration: Getting FF to use Dolphin reliably|date=2014-07-03|access-date=2014-07-10|archive-date=2018-05-15|archive-url=https://web.archive.org/web/20180515070853/https://mail.mozilla.org/pipermail/firefox-dev/2014-July/001940.html|url-status=live}}</ref> |
||
The major improvement of Frameworks 5 is its modularization. In earlier KDE versions, the libraries were bundled as a single large package. In Frameworks, the libraries were split into individual smaller packages. This facilitates utilization of the libraries by other Qt-based software, since dependencies can be kept at a minimum.<ref name=rel.struct/> |
The major improvement of Frameworks 5 is its modularization. In earlier KDE versions, the libraries were bundled as a single large package. In Frameworks, the libraries were split into individual smaller packages. This facilitates utilization of the libraries by other Qt-based software, since dependencies can be kept at a minimum.<ref name=rel.struct/> |
||
While KDE 4 was based on version 4 of the [[Qt (software)|Qt]] widget toolkit, Frameworks 5 is based on version 5. |
While KDE 4 was based on version 4 of the [[Qt (software)|Qt]] widget toolkit, Frameworks 5 is based on version 5. |
||
As part of the KDE project's 'MegaRelease 6', on February 28, 2024, KDE Frameworks 6 was released, upgrading it to a Qt 6 base.<ref>{{cite web|title=KDE MegaRelease 6 Announcement|url=https://kde.org/announcements/megarelease/6/|date=2024-02-28|access-date=2024-03-20}}</ref> |
|||
=== KDE4 transformation === |
=== KDE4 transformation === |
||
During KDE SC 4, the then so called [[KDE Platform 4|KDE Platform]] consisted of all libraries and services needed for KDE Plasma and the applications. Starting with Qt 5, this platform was transformed into a set of modules that is now referred to as KDE Frameworks. These modules include: [[Solid (KDE)|Solid]], [[NEPOMUK (framework)|Nepomuk]], [[Phonon (KDE)|Phonon]], etc. and are licensed either under the LGPL, BSD license, [[MIT License]] or X11 license.<ref>{{cite web|title=KDE Licensing Policy|url=http://techbase.kde.org/index.php?title=Policies |
During KDE SC 4, the then so called [[KDE Platform 4|KDE Platform]] consisted of all libraries and services needed for KDE Plasma and the applications. Starting with Qt 5, this platform was transformed into a set of modules that is now referred to as KDE Frameworks. These modules include: [[Solid (KDE)|Solid]], [[NEPOMUK (framework)|Nepomuk]], [[Phonon (KDE)|Phonon]], etc. and are licensed either under the LGPL, BSD license, [[MIT License]] or X11 license.<ref>{{cite web|title=KDE Licensing Policy|url=http://techbase.kde.org/index.php?title=Policies%2FLicensing_Policy|access-date=2010-11-06|archive-date=2010-12-16|archive-url=https://web.archive.org/web/20101216003927/http://techbase.kde.org/index.php?title=Policies%2FLicensing_Policy|url-status=live}}</ref> |
||
== Adoption == |
== Adoption == |
Latest revision as of 14:17, 10 July 2024
This article only references primary sources.(July 2024) |
Original author(s) | KDE |
---|---|
Developer(s) | KDE |
Initial release | 1 July 2014 |
Stable release | 6.5.0[1]
/ 9 August 2024 |
Repository | |
Written in | C++ (Qt) |
Operating system | Cross-platform (including "partial" support for Android,[2][3] Windows,[4] macOS and Haiku) |
Type | |
License | GNU Lesser General Public License (LGPL)[5] |
Website | api |
KDE Frameworks is a collection of libraries and software frameworks readily available to any Qt-based software stacks or applications on multiple operating systems.[6] Featuring frequently needed functionality solutions like hardware integration, file format support, additional graphical control elements, plotting functions, and spell checking, the collection serves as the technological foundation for KDE Plasma and KDE Gear. It is distributed under the GNU Lesser General Public License (LGPL).[7]
Overview
[edit]KDE Frameworks is based on Qt, which enables a more widespread use of QML, a simpler JavaScript-based declarative programming language, for the design of user interfaces. The graphics rendering engine used by QML allows for more fluid user interfaces across different devices.[8]
Since the split of the KDE Software Compilation into KDE Frameworks 5, KDE Plasma 5 and KDE Applications, each sub-project can pick its own development pace. KDE Frameworks are released on a monthly basis[9] and use Git.[10][11]
It should be possible to install KDE Frameworks alongside the KDE Platform 4 so apps can use either one.[12]
API and ABI stability
[edit]Platform releases are those which begin a series (version number X.0). Only these major releases are allowed to break binary compatibility with the predecessor. Releases in the minor series (X.1, X.2, ...) will guarantee binary portability (API & ABI). This means, for instance, that software that was developed for KDE 3.0 will work on all (future) KDE 3 releases; however, an application developed for KDE 2 is not guaranteed to be able to make use of the KDE 3 libraries. KDE major version numbers mainly follow the Qt release cycle, meaning that KDE SC 4 is based on Qt 4, while KDE 3 was based on Qt 3.
Supported operating systems
[edit]The repository of each framework should contain a file named metainfo.yaml.[13] This file documents the maintainer of the framework, the type, the supported operating system and other information. The currently supported platforms are Linux, Microsoft Windows, macOS and Android.
Software architecture
[edit]This section needs to be updated.(October 2021) |
Structure
[edit]The Frameworks have a clear dependency structure, divided into "categories" and "tiers". The "categories" refer to runtime dependencies:
- Functional elements have no runtime dependencies.
- Integration designates code that may require runtime dependencies for integration depending on what the OS or platform offers.
- Solutions have mandatory runtime dependencies.
Components
[edit]The KDE Frameworks bundle consists of over 70 packages. These existed as a single large package, called kdelibs, in KDE SC 4. Kdelibs was split into several individual frameworks, some of which are no longer part of KDE but were integrated into Qt 5.2.[14]
KDE Frameworks are grouped in four different tiers according to dependency on other libraries.[15][16]
- Tiers of Frameworks
- Tier 1 – Mostly depend only on Qt, highly portable
- Tier 2 – Depends on Tier 1, but dependencies are still manageable.
- Tier 3 – Complex dependencies, including Tiers 1–2 etc.
- Tier 4 – Mostly plugins that provide additional features like platform support can be ignored.
Name | Tier | Git repository | Description |
---|---|---|---|
Frameworkintegration | 4 | frameworkintegration.git | Framework Integration is a set of plugins responsible for better integration of Qt applications when running on a KDE Plasma workspace. Applications do not need to link to this directly. The library KF5Style provides integration with KDE Plasma Workspace settings for Qt styles. Derive your Qt style from KStyle to automatically inherit various settings from the KDE Plasma Workspace, providing a consistent user experience. For example, this will ensure a consistent single-click or double-click activation setting, and the use of standard themed icons. |
KActivities | 3 | kactivities.git | Core components for KDE Activities' Activity Manager. |
KApiDox | 4 | kapidox.git | Scripts and data for building API documentation in a standard format and style. This framework contains scripts and data for building API documentation (dox) in a standard format and style. The Doxygen tool is used to do the actual documentation extraction and formatting, but this framework provides a wrapper script to make generating the documentation more convenient (including reading settings from the target framework or other module) and a standard template for the generated documentation. |
KArchive | 1 | karchive.git | Classes for easy reading, creation and manipulation of "archive" formats including zip and tar. |
KAuth | 2 | kauth.git | Provides a convenient, system-integrated way to offload actions that need to be performed as a privileged user to small helper utilities. |
KBookmarks | 3 | kbookmarks.git | KBookmarks lets you access and manipulate bookmarks stored using the "XBEL format". The most common use for bookmarks is web browsers, but this can also be useful in any application where local files or URLs can be saved as bookmarks. |
KCMUtils | 3 | kcmutils.git | Utilities, i.a. KSettings, for KDE System Settings modules. KCMUtils provides various classes to work with KCModules. KCModules can be created with the KConfigWidgets framework. |
KCodecs | 1 | kcodecs.git | KCodecs is a string encoding library, it provides a collection of methods to manipulate strings using various encodings. It can automatically determine the charset of a string, translate XML entities, validate email addresses, and find encodings by name in a more tolerant way than QTextCodec (useful e.g. for data coming from the Internet). |
KCompletion | 2 | kcompletion.git | String completion framework, including completion-enabled lineedit and combobox. When typing filenames, email addresses and other text where the user often wants to select from existing data (including what they previously typed) rather than enter anything wholly original, users often find it helpful if they only need to type the first few characters, and then have the application offer them a set of choices or attempt to finish off what they were typing. Email clients, shells and "open file" dialogs often provide this functionality. This framework helps implement this in Qt-based applications. You can use one of the completion-ready widgets provided by this framework, or integrate it into your application's other widgets directly. The easiest way to get started is to use a KComboBox, KHistoryComboBox or KLineEdit. If you want to integrate completion into other parts of the user interface, you can use KCompletion to manage and select the possible completions. |
KConfig | 1 | kconfig.git | Persistent platform-independent application settings made of two parts: KConfigCore and KConfigGui. KConfigCore provides access to the configuration files themselves, meaning it also generates the configuration in XML. KConfigGui provides a way to hook graphical control elements (widgets) to the configuration so that they are automatically initialized from the configuration and automatically propagate their changes to their respective configuration files. |
KConfigWidgets | 3 | kconfigwidgets.git | Graphical control elements (widgets) for configuration dialogs. Widgets for configuration dialogs. KConfigWidgets provides easy-to-use classes to create configuration dialogs, as well as a set of widgets which uses KConfig to store their settings. |
KCoreAddons | 1 | kcoreaddons.git | Utilities for core application functionality and accessing the OS. Qt addon library with a collection of non-GUI utilities. KCoreAddons provides classes built on top of QtCore to perform various tasks such as manipulating mime types, autosaving files, creating backup files, generating random sequences, performing text manipulations such as macro replacement, accessing user information and many more. |
KCrash | 2 | kcrash.git | Provides support for intercepting and handling application crashes. |
KDBusAddons | 1 | kdbusaddons.git | KDBusAddons provides convenience DBus classes on top of QtDBus, as well as an API to create KDED modules. |
KDeclarative | 3 | kdeclarative.git | Addon for Qt declarative |
KDED | 3 | kded.git | KDED stands for KDE Daemon, the central daemon of KDE work spaces. KDED runs in the background and performs a number of small tasks. Some of these tasks are built in, others are started on demand. |
KDesignerPlugin | 3 | kdesignerplugin.git | This framework provides plugins for Qt Designer that allow it to display the widgets provided by various KDE frameworks, as well as a utility (kgendesignerplugin) that can be used to generate other such plugins from ini-style description files. |
KDESu | 3 | kdesu.git | KDESU (KDE super user) provides a user interface for running shell commands with root privileges. It provides functionality for building GUI front ends for (password asking) console mode programs. For example, kdesu and kdessh use it to interface with su and ssh respectively. |
KDEWebkit | 3 | kdewebkit.git | Integration of the HTML rendering engine WebKit. The KDEWebkit library provides KDE integration of the QtWebKit library. If you are using QtWebKit in your KDE application, you are encouraged to use this layer instead of using the QtWebKit classes directly. In particular, you should use KWebView in place of QWebView, KGraphicsWebView in place of QGraphicsWebView and KWebPage in place of QWebPage. |
KDNSSDFramework | 2 | kdnssd.git | KDNSSD is a library for handling the DNS-based Service Discovery Protocol (DNS-SD), the layer of [Zeroconf] (http://www.zeroconf.org) that allows network services, such as printers, to be discovered without any user intervention or centralized infrastructure. |
KDocTools | 2 | kdoctools.git | Provides tools to generate documentation in various format from DocBook files. |
KEmoticons | 3 | kemoticons.git | Provides emoticons themes as well as helper classes to automatically convert text emoticons to graphical emoticons. |
KGlobalAccel | 1 | kglobalaccel.git | KGlobalAccel allows you to have global keyboard shortcuts (accelerators) that are independent of the focused window. Unlike regular shortcuts, the application's window does not need focus for them to be activated. |
KGuiAddons | 1 | kguiaddons.git | KDE GUI Addons; Utilities for graphical user interfaces; The KDE GUI addons provide utilities for graphical user interfaces in the areas of colors, fonts, text, images, keyboard input. |
KHTML | 4 | khtml.git | KHTML is the HTML rendering engine from which WebKit was forked. It is based on the KParts technology and uses KJS for JavaScript support. |
Ki18n | 1 | ki18n.git | KDE gettext-based UI text internationalization. KI18n provides functionality for internationalizing user interface text in applications, based on the GNU Gettext translation system. It wraps the standard Gettext functionality, so that the programmers and translators can use the familiar Gettext tools and workflows. KI18n provides additional functionality as well, for both programmers and translators, which can help to achieve a higher overall quality of source and translated text. This includes argument capturing, customizable markup, and translation scripting. |
KIconThemes | 3 | kiconthemes.git | This library contains classes to improve the handling of icons in applications using the KDE Frameworks. |
KIdleTime | 1 | kidletime.git | Integration module for idle time detection. |
KImageFormats | 1 | kimageformats.git | Plugins to allow QImage to support extra file formats. This framework provides additional image format plugins for QtGui. As such it is not required for the compilation of any other software, but may be a runtime requirement for Qt-based software to support certain image formats. The following image formats have read-only support:
The following image formats have read and write support:
|
KInit | 3 | kinit.git | kdeinit is a process launcher, that launches processes by forking and then loading a dynamic library which should contain a 'kdemain(...)' function. kdeinit speeds up start of applications on KDE workspaces; kdeinit is linked against all libraries a standard KDE application needs. With this technique starting an application becomes much faster because now only the application itself needs to be linked whereas otherwise both the application as well as all the libraries it uses need to be linked. |
KIO | 3 | kio.git | Network transparent access to files and data. This framework implements almost all the file management functions you will ever need. Dolphin and the KDE file dialog also uses this to provide its network-enabled file management. |
Kirigami | 1 | kirigami.git | A set of QtQuick plugins to build user interfaces based on the KDE UX guidelines |
KItemModels | 1 | kitemmodels.git | Set of item models extending the Qt model-view framework. KItemModels provides the following models:
|
KItemViews | 1 | kitemviews.git | Set of item views extending the Qt model-view framework. KItemViews includes a set of views, which can be used with item models. It includes views for categorizing lists and to add search filters to flat and hierarchical lists. |
KJobWidgets | 2 | kjobwidgets.git | KJobWIdgets provides widgets for showing progress of asynchronous jobs. |
KJS | 1 | kjs.git | KJS provides an ECMAScript compatible interpreter. The ECMA standard is based on well known scripting languages such as Netscape's JavaScript and Microsoft's JScript. |
KJSEmbed | 3 | kjsembed.git | KSJEmbed provides a method of binding JavaScript objects to QObjects, so you can script your applications. |
KMediaPlayer | 3 | kmediaplayer.git | Deprecated: Interface for media player KParts. KMediaPlayer builds on the KParts framework to provide a common interface for KParts that can play media files. This framework is a porting aid. It is not recommended for new projects, and existing projects that use it are advised to port away from it, and use plain KParts instead. |
KNewStuff | 3 | knewstuff.git | Framework for downloading and sharing additional application data. The KNewStuff library implements collaborative data sharing for applications. It uses libattica to support the Open Collaboration Services specification. Attica is a Qt library that implements the Open Collaboration Services API version 1.6. It grants easy access to the services such as querying information about persons and contents. |
KNotifications | 3 | knotifications.git | Solution with abstraction for system notifications. |
KNotifyConfig | 3 | knotifyconfig.git | Module for KNotify configuration. |
KParts | 3 | kparts.git | The KParts library implements the framework for KDE parts. One individual user interface component is called a KPart and is some elaborate widget with a user-interface defined in terms of actions (menu items, toolbar icons). KParts are analogous to Bonobo components in GNOME and ActiveX controls in Microsoft's Component Object Model. Konsole is available as a KPart and is used in applications like Konqueror and Kate. Example uses of KParts:
Further documentation:
|
KPlotting | 1 | kplotting.git | KPlotWidget is a QWidget-derived class that provides a virtual base class for easy data-plotting. The idea behind KPlotWidget is that you only have
to specify information in "data units"; i.e., the natural units of the data being plotted. KPlotWidget automatically converts everything to screen pixel units. KPlotWidget draws X and Y axes with tick marks and tick labels. It automatically determines how many tick marks to use and where they should be, based on the data limits specified for the plot. You change the limits by calling `setLimits(double x1, double x2, double y1, double y2)`. Data to be plotted are stored using the KPlotObject class. KPlotObject consists of a QList of QPointF's, each specifying the X,Y coordinates of a data point. KPlotObject also specifies the "type" of data to be plotted (POINTS or CURVE or POLYGON or LABEL). |
KPty | 2 | kpty.git | Interfacing with pseudo terminal devices. This library provides primitives to interface with pseudo terminal devices as well as a KProcess derived class for running child processes and communicating with them using a pty. |
Kross | 3 | kross.git | Embedding of scripting into applications. Kross is a scripting bridge to embed scripting functionality into an application. It supports QtScript as a scripting interpreter back-end. The core of Kross provides the framework to deal transparently with interpreter-back-ends and offers abstract functionality to deal with scripts. |
KRunner | 3 | krunner.git | Framework for providing different actions given a string query. Framework for Plasma runners. The Plasma workspace provides an application called KRunner which, among other things, allows one to type into a text area which causes various actions and information that match the text appear as the text is being typed. One application for this is the universal runner you can launch with ALT+F2. |
KService | 3 | kservice.git | KService provides a plugin framework for handling desktop services. Services can be applications or libraries. They can be bound to MIME types or handled by application specific code. |
KSyntaxHighlighting | 1 | syntax-highlighting.git | This is a stand-alone implementation of the Kate syntax highlighting engine. It's meant as a building block for text editors as well as for simple highlighted text rendering (e.g. as HTML), supporting both integration with a custom editor as well as a ready-to-use QSyntaxHighlighter sub-class. |
KTextEditor | 3 | ktexteditor.git | KTextEditor provides a powerful text editor component that you can embed in your application, either as a KPart or using the KF5::TextEditor library (if you need more control). The text editor component contains many useful features, from syntax highlighting and automatic indentation to advanced scripting support, making it suitable for everything from a simple embedded text-file editor to an advanced IDE. |
KTextWidgets | 3 | ktextwidgets.git | KTextWidgets provides widgets for displaying and editing text. It supports rich text as well as plain text. |
KUnitConversion | 2 | kunitconversion.git | KUnitConversion provides functions to convert values in different physical units. It supports converting different prefixes (e.g. kilo, mega, giga) as well as converting between different unit systems (e.g. liters, gallons). The following areas are supported:
|
KWalletFramework | 3 | kwallet.git | Safe desktop-wide storage for passwords. This framework contains two main components:
|
KWayland | 1 | kwayland.git | KWayland is the KDE library for implementing Wayland support in KDE applications, it fulfills needs beyond what QtWayland provides. All the KDE applications in a plasma-wayland-session use this library and LXQt maybe as well. KWayland has been part of KDE Frameworks since 5.22 (May 2016); it was formerly distributed as part of KDE Plasma 5. |
KWidgetsAddons | 1 | kwidgetsaddons.git | Addon with various classes on top of QtWidgets. If you are porting applications from KDE Platform 4 "kdeui" library, you will find many of its classes here. Provided are action classes that can be added to toolbars or menus, a wide range of widgets for selecting characters, fonts, colors, actions, dates and times, or MIME types, as well as platform-aware dialogs for configuration pages, message boxes, and password requests. Further widgets and classes can be found in other KDE frameworks. |
KWindowSystem | 1 | kwindowsystem.git | Allows to interact with the windowing system. It provides a NETRootInfo for accessing the global state (all that's set on the root window) and NETWinInfo for all information about a specific window. The classes have a window manager and client perspective. This is the foundation which powers KWin and various parts of the graphical shell such as the taskmanager.[17] On top of those X11-specific classes we have a convenient API KWindowInfo and KWindowSystem which provides a windowing system independent API for our applications. |
KXMLGUI | 3 | kxmlgui.git | KXMLGUI provides a framework for managing menu and toolbar actions in an abstract way. The actions are configured through a XML description and hooks in the application code. The framework supports merging of multiple description for example for integrating actions from plugins. KXMLGui makes use of the Kiosk authorization functionality of KConfig (see the KAuthorized namespace in that framework). Notably, QAction instances added to a KActionCollection are disabled if KAuthorized::authorizeAction() reports that they are not authorized. The items on the standard help menu (KHelpMenu) can likewise be disabled based on Kiosk settings, and toolbar editing can be restricted. See KActionCollection, KHelpMenu and KToolBar documentation for more information. |
Plasma-framework | 3 | plasma-framework.git | Foundational libraries, runtime components and tools of the KDE Plasma workspaces based upon KF5 and Qt5. The plasma framework provides the following:
|
Prison | 1 | prison.git | Prison is a Qt-based barcode abstraction layer/library and provides uniform access to generation of barcodes with data. |
Solid | 1 | solid.git | Solid provides a way of querying and interacting with hardware independently of the underlying operating system. It provides the following features for application developers:
|
Sonnet | 1 | sonnet.git | Sonnet is a plugin-based spell checking library for Qt-based applications. It supports several different plugins, including HSpell, Enchant, ASpell and HUNSPELL. It also supports automated language detection, based on a combination of different algorithms. The simplest way to use Sonnet in your application is to use the SpellCheckDecorator class on your QTextEdit. |
Syndication | 2 | syndication.git | Syndication is an RSS/Atom parser library. |
ThreadWeaver | 1 | threadweaver.git | ThreadWeaver is a Job queue. It executes jobs in threads it internally manages. |
Kirigami
[edit]Kirigami is a QML application framework[18] developed by Marco Martin[19] that enables developers to write applications that run natively on Android, iOS, Windows, Plasma Mobile and any classic Linux desktop environment without code adjustments.
It is used by various applications, for example Linus Torvalds and Dirk Hohndels' scuba diving application Subsurface, the messenger client Banji,[20] the Kaidan messenger,[21] Vvave music player and the KDE software center Discover.
Software packages
[edit]Linux distribution use some package management system to package the software they distribute. Debian for example distributes KGlobalAccel under the package name libkf5globalaccel,[22] while Fedora Linux distributes it under the name kf5-kglobalaccel.[23]
Bindings
[edit]While being mainly written in C++, there are many bindings for other programming languages available:[24][25]
- Python
- Ruby (Korundum, built on top of QtRuby)
- Perl
- C# (however, the current framework for binding to C# and other .NET languages has been deprecated, and the replacement only compiles on Windows).[26]
These and other bindings use the following technologies:
- Smoke: for creating bindings for Ruby, C# and PHP
- SIP: for creating bindings for Python
- Kross: Embedded scripting for C++ applications, with support for Ruby, Python, JavaScript, QtScript, Falcon and Java
Many bindings weren't updated to Qt5 and KF5 or only later in the release cycle.
History
[edit]The 5.0 release was preceded by a technology preview, two alpha releases, and three beta releases.[27][28][29]
The source code of KDE Frameworks has been around since KDElibs 1. The first release as KDE Frameworks was with version 5, to account for the fact that the code base was that of KDE Platform version 4 (the only major version of KDE Platform).
The transition from KDE Platform to KDE Frameworks began in August 2013, guided by top KDE technical contributors.[8]
After the initial release of KDE Frameworks 5.0, the developers focused on adding new features to the components in KDE Frameworks 5,[30] an example being better integration of Firefox into KDE.[31]
The major improvement of Frameworks 5 is its modularization. In earlier KDE versions, the libraries were bundled as a single large package. In Frameworks, the libraries were split into individual smaller packages. This facilitates utilization of the libraries by other Qt-based software, since dependencies can be kept at a minimum.[8]
While KDE 4 was based on version 4 of the Qt widget toolkit, Frameworks 5 is based on version 5.
As part of the KDE project's 'MegaRelease 6', on February 28, 2024, KDE Frameworks 6 was released, upgrading it to a Qt 6 base.[32]
KDE4 transformation
[edit]During KDE SC 4, the then so called KDE Platform consisted of all libraries and services needed for KDE Plasma and the applications. Starting with Qt 5, this platform was transformed into a set of modules that is now referred to as KDE Frameworks. These modules include: Solid, Nepomuk, Phonon, etc. and are licensed either under the LGPL, BSD license, MIT License or X11 license.[33]
Adoption
[edit]Besides the KDE Software Compilation, there are other adopters such as the desktop environments LXQt, MoonLightDE or Hawaii.
Version 3.0 of Krita, the raster graphics editor of the Calligra Suite, which was released on May 31, 2016, depends on KDE Frameworks 5 and Qt 5.2.
With Kirigami, there is also increased usage by applications such as Amarok, Avogadro, Trojitá or Subsurface.
References
[edit]- ^ "KDE Ships Frameworks 6.5.0". 9 August 2024. Retrieved 20 August 2024.
- ^ "Release of KDE Frameworks 5.24.0". 9 July 2016. Archived from the original on 11 July 2016. Retrieved 10 July 2016.
- ^ "Android - KDE Community Wiki". Archived from the original on 2016-08-26. Retrieved 2016-07-11.
- ^ "KDE API Homepage". Archived from the original on 2016-08-26. Retrieved 2016-07-11.
- ^ "First release of KDE Frameworks 5". 2014-07-07. Archived from the original on 2015-09-05. Retrieved 2014-07-08.
- ^ "The KDE Frameworks". API Documentation. Archived from the original on 2019-12-07. Retrieved 2020-03-17.
- ^ "KDE Frameworks". Tech Base. Archived from the original on 2020-08-13. Retrieved 2020-03-17.
- ^ a b c Howard Chan (2013-09-04). "KDE Release Structure Evolves". KDE. Archived from the original on 2020-11-12. Retrieved 2014-02-27.
- ^ "Release schedule for KDE Frameworks 5". Archived from the original on 2016-06-24. Retrieved 2016-05-18.
- ^ "Git workflow for Frameworks". Archived from the original on 2020-10-20. Retrieved 2014-08-19.
- ^ "KDE Frameworks5 API documentation". Archived from the original on 2014-08-22.
- ^ "Coinstallability with KDE Platform 4". Archived from the original on 2020-12-01. Retrieved 2014-08-19.
- ^ "metainfo.yaml of KConfig".[permanent dead link]
- ^ Jos Poortvliet (2013-12-17). "Qt 5.2 - Foundation for KDE Frameworks 5". Dot.kde.org. Archived from the original on 2020-11-11. Retrieved 2014-03-10.
- ^ Howard Chan (2013-09-25). "Frameworks 5". Dot.kde.org. Archived from the original on 2020-11-26. Retrieved 2014-03-10.
- ^ "API Documentation". api.kde.org. Archived from the original on 2021-10-02. Retrieved 2021-10-02.
- ^ "KWindowSystem in Frameworks 5". 6 February 2014. Archived from the original on 28 July 2014. Retrieved 25 July 2014.
- ^ "KDE Kirigami". KDE. Archived from the original on July 29, 2019. Retrieved November 25, 2018.
- ^ "Contributors to KDE/Kirigami". GitHub. Archived from the original on 2019-04-30. Retrieved 2021-08-08.
- ^ Archived at Ghostarchive and the Wayback Machine: "Banji (Ring-KDE) new skin on desktop Linux and Android". YouTube.
- ^ "Kaidan - A user-friendly XMPP client for every device!". GitHub. 4 July 2021. Archived from the original on 26 April 2019. Retrieved 8 August 2021.
- ^ "KGlobalAccel in Debian". Archived from the original on 2016-09-20. Retrieved 2016-09-11.
- ^ "KGlobalAccel in Fedora".[permanent dead link]
- ^ "The KDE development platform". Archived from the original on 2018-10-03. Retrieved 2010-11-26.
- ^ Development/Languages - KDE TechBase Archived 2021-02-03 at the Wayback Machine. Techbase.kde.org (2012-07-12). Retrieved on 2013-07-17.
- ^ "Qyoto". Archived from the original on 2020-11-27. Retrieved 2015-01-18.
- ^ "Frameworks 5 Technology Preview". KDE. 2014-01-07. Archived from the original on 2014-02-26. Retrieved 2014-02-27.
- ^ "KDE Ships First Alpha of Frameworks 5". KDE. 2014-02-14. Archived from the original on 2014-03-01. Retrieved 2014-02-27.
- ^ "KDE Ships Second Alpha of Frameworks 5". KDE. 2014-03-03. Archived from the original on 2014-03-09. Retrieved 2014-03-04.
- ^ "KF5 Update Meeting Minutes 2014-w28". 2014-07-08. Archived from the original on 2016-03-07. Retrieved 2014-07-10.
- ^ "Firefox + KDE integration: Getting FF to use Dolphin reliably". 2014-07-03. Archived from the original on 2018-05-15. Retrieved 2014-07-10.
- ^ "KDE MegaRelease 6 Announcement". 2024-02-28. Retrieved 2024-03-20.
- ^ "KDE Licensing Policy". Archived from the original on 2010-12-16. Retrieved 2010-11-06.