KDE Frameworks(ケーディーイー・フレームワークス)は、複数のオペレーティングシステム上のQtベースのソフトウェアスタックやアプリケーションですぐに利用できるライブラリとソフトウェアフレームワークのコレクションである。KDE Frameworksのコレクションははハードウェアの統合、ファイルフォーマットのサポート、追加のコントロール要素、プロット関数、スペルチェックなどの一般的に必要となる機能を特徴としており、GNU Lesser General Public License (LGPL) の下で配布されているKDE Plasma 5とKDE Applicationsの技術的な基盤となっている。
概要 KDE Frameworks 5はQt 5に基づいており、JavaScriptをベースとした宣言型プログラミング言語のQMLをユーザインタフェースの設計に利用することができる。QMLで使用されるグラフィックスレンダリングエンジンは、様々なデバイス間でより柔軟なユーザインタフェースを実現することができる。
をKDE Frameworks 5、KDE Plasma 5、KDE Applicationsに分割して以降、各プロジェクトは独自の開発ペースを選択することができるようになった。KDE Frameworksは毎月新たなバージョンがリリースされ、バージョン管理システムにはGitを利用している。
KDE Platform 4ランタイムとKDE Frameworks 5ランタイムの両方をインストールすることで、アプリケーションはどちらかを利用できるようになる。
APIとABIの安定性 プラットフォームリリースとはシリーズ(バージョン番号X.0)を開始するリリースのことである。このメジャーリリースだけが前のバージョンとのを損なうことが許容されているが、マイナーシリーズ (X.1, X.2, ....) のリリースではバイナリ移植性 (APIとABI) は保証されている。これは例えばK Desktop Environment 3 (KDE 3) 向けに開発されたソフトウェアは全てのバージョンのKDE 3で動作するが、K Desktop Environment 2 (KDE 2) 向けに開発されたアプリケーションはKDE 3のライブラリを利用できないことを意味する。KDEのメジャーリリースのバージョン番号は主にQtのリリースサイクルに従う。これはKDE Software Compilation 4 (KDE SC 4) がQt 4に、KDE 3がQt 3に基づくことを示す。
サポートされるオペレーティングシステム 各フレームワークのリポジトリにはmetainfo.yamlという名前のファイルが含まれなければならない。このファイルには、フレームワークのメンテナ、種類、サポートされているオペレーティングシステムなどの情報が記載されている。現在サポートされているプラットフォームはLinux、Microsoft Windows、macOS、Androidである。
ソフトウェアアーキテクチャ
構造 KDE Frameworksは明確な依存構造を持っている。この構造は「カテゴリ」と「階層」からなり、「カテゴリ」は実行時の依存関係を示すものである。 各機能は実行時の依存関係が存在しない。 指定されたコードを統合する場合、オペレーティングシステムやプラットフォームによって実行時の依存関係が必要になる可能性がある。 ソリューションには必須の実行時の依存関係が存在する。
「階層」はコンパイル時の他のフレームワークへの依存関係を示す。 第1階層フレームワークは、フレームワーク内には依存関係が存在せず、Qtやその他の関連するライブラリのみが必要となる。 第2階層フレームワークは、第1階層フレームワークにのみ依存することができる。 第3階層フレームワークは、第1階層フレームワークや第2階層フレームワークと同様に、他の第3階層フレームワークに依存することができる。
コンポーネント KDE Frameworksは70以上のパッケージから構成されている。KDE SC 4では、これらのパッケージはKDELibsとして単一の大きなパッケージから構成されていた。KDELibsはいくつかのフレームワークに分割されたが、一部はKDEではなくQt 5.2に統合された。
KDEFrameworksは他のライブラリへの依存度に応じて、異なる4つの階層にグループ化されている。第1階層フレームワークはQtや他のシステムライブラリにのみ依存する。第2階層フレームワークは第1階層ライブラリ、Qtや他のシステムライブラリなどに依存できる。
フレームワークの全リスト Name Tier git Description Frameworkintegration Frameworkintegration 4 frameworkintegration.git Frameworkintegrationは、KDE Plasmaワークスペースで実行する場合のQtアプリケーションの統合を改善するプラグインのセットである。アプリケーションはこれに直接リンクする必要はない。ライブラリKF5Styleは、QtスタイルのKDE Plasmaワークスペース設定との統合を提供する。QStyleをKStyleから派生させて、KDE Plasmaワークスペースから様々な設定を自動的に継承し、一貫したユーザーエクスペリエンスを提供する。例えば、これにより、一貫したシングルクリックまたはダブルクリックのアクティベーション設定と、標準のテーマアイコンの使用が保証される。 KActivities KActivities 3 kactivities.git KDE ActivitiesのActivity Manager用コアコンポーネント。 KApiDox KApiDox 4 kapidox.git 標準形式とスタイルでAPIドキュメントを構築するためのスクリプトとデータ。このフレームワークには、標準形式とスタイルでAPIドキュメント (dox) を構築するためのスクリプトとデータが含まれている。Doxygenツールは、実際のドキュメントの抽出とフォーマットを行うために使用されるが、このフレームワークは、ドキュメントの生成をより便利にするラッパースクリプト(ターゲットフレームワークまたは他のモジュールからの設定の読み取りを含む)と、生成されたドキュメントの標準テンプレートを提供する。 KArchive KArchive 1 karchive.git zipやtarを含む「アーカイブ」形式の簡単な読み取り、作成、操作のためのクラス。 KAuth KAuth 2 kauth.git 特権ユーザーとして実行する必要があるアクションを小さなヘルパーユーティリティにオフロードする便利でシステム統合された方法を提供する。 KBookmarks KBookmarks 3 kbookmarks.git KBookmarksを使用すると、「XBEL形式」を使用して保存されているブックマークにアクセスして操作できる。ブックマークの最も一般的な使用方法はウェブブラウザであるが、ローカルファイルまたはURLをブックマークとして保存できるアプリケーションでも役立つ。 KCMUtils KCMUtils 3 kcmutils.git KDEシステム設定モジュール用のユーティリティ(KSettingsなど)。KCMUtilsは、KCModulesを操作するための様々なクラスを提供する。KCModuleは、KConfigWidgetsフレームワークを使用して作成される。 KCodecs KCodecs 1 kcodecs.git KCodecsは文字列エンコードライブラリであり、様々なエンコードを使用して文字列を操作するメソッドのコレクションを提供する。文字列の文字セットを自動的に決定し、XMLエンティティを変換し、電子メールアドレスを検証し、QTextCodecよりも寛容な方法で名前によるエンコーディングを検索できる(インターネットからのデータなどに便利)。 KCompletion KCompletion 2 kcompletion.git 補完対応のラインエディットとコンボボックスを含む、文字列補完フレームワーク。ユーザーが完全にオリジナルのものを入力するのではなく、既存のデータ(以前に入力したものを含む)から選択することが多いファイル名、電子メールアドレス、その他のテキストを入力する場合、ユーザーは最初の数文字だけを入力する必要がある場合に役立つことがよくある。その後、アプリケーションに一連の選択肢を提供するか、入力した内容を終了させる。多くの場合、メールクライアント、シェル、および「ファイルを開く」ダイアログがこの機能を提供する。このフレームワークは、Qtベースのアプリケーションでこれを実装するのに役立つ。このフレームワークが提供する補完対応ウィジェットの1つを使用するか、アプリケーションの他のウィジェットに直接統合できる。開始する最も簡単な方法は、KComboBox、KHistoryComboBox、またはKLineEditを使用することである。ユーザインタフェースの他の部分に補完を統合する場合は、KCompletionを使用して、可能な補完を管理および選択できる。 KConfig KConfig 1 kconfig.git KConfigCoreとKConfigGuiの2つの部分で構成される永続的なプラットフォームに依存しないアプリケーション設定。KConfigCoreは構成ファイル自体へのアクセスを提供するが、それはつまりXML構成の生成である。KConfigGuiはグラフィカルなコントロール要素(ウィジェット)を設定にフックする手段を提供する。これにより、ウィジェットは設定から自動的に初期化され、ウィジェットの変更はそれぞれの設定ファイルへと自動的に伝搬されるようになる。 KConfigWidgetsKConfigWidgets 3 kconfigwidgets.git 構成ダイアログ用のグラフィカルなコントロール要素(ウィジェット)。構成ダイアログ用のウィジェット。KConfigWidgetsは設定ダイアログを作成するための使いやすいクラスと、KConfigを使用して設定を保存する一連のウィジェットを提供する。 KCoreAddonsKCoreAddons 1 kcoreaddons.git コアアプリケーション機能およびOSへのアクセス用のユーティリティ。非GUIユーティリティのコレクションを備えたQtアドオンライブラリ。KCoreAddonsはQtCoreの上に構築されたクラスで、MIMEタイプの操作、ファイルの自動保存、バックアップファイルの作成、ランダムシーケンスの生成、マクロ置換などのテキスト操作の実行、ユーザー情報へのアクセスなど、様々なタスクを実行するクラスを提供する。 KCrashKCrash 2 kcrash.git アプリケーションのクラッシュの傍受と処理のサポートを提供する。 KDBusAddonsKDBusAddons 1 kdbusaddons.git KDBusAddonsはQtDBus上に便利なDBusクラスや、KDEDモジュールを作成するためのAPIを提供する。 KDeclarative 3 kdeclarative.git Qt宣言のアドオン。 KDE DaemonKDED 3 kded.git KDEDは、KDEワークスペースの中心的なデーモンであるKDE Daemonの略である。KDEDはバックグラウンドで実行され、いくつかの小さなタスクを実行する。これらのタスクの一部は組み込みで、それ以外はオンデマンドで開始される。 KDesignerPlugin 3 kdeclarative.git このフレームワークは、様々なKDEフレームワークによって提供されるウィジェットを表示できるQt Designerのプラグインと、iniスタイルの記述ファイルから他のプラグインを生成するために使用できるユーティリティ (kgendesignerplugin) を提供する。 KDESu 3 kdesu.git KDESU(KDEスーパーユーザー)は、root権限でシェルコマンドを実行するためのユーザインタフェースを提供する。(パスワードを要求する)コンソールモードプログラムのGUIフロントエンドを構築する機能を提供する。例えば、kdesuとkdesshは、それぞれsuとsshとのインタフェースに使用する。 KDEWebkitKDEWebkit 3 kdewebkit.git HTMLレンダリングエンジンWebKitの統合。KDEWebkitライブラリは、QtWebKitライブラリのKDE統合を提供する。KDEアプリケーションでQtWebKitを使用している場合、QtWebKitクラスを直接使用する代わりにこのレイヤーを使用することが推奨される。特に、QWebViewではなくKWebView、QGraphicsWebViewではなくKGraphicsWebView、QWebPageではなくKWebPageを使用すべきである。 KDNSSDFramework 2 kdnssd.git KDNSSDは、DNSベースのサービス検出プロトコル(DNS-SD)であるZeroconf(http://www.zeroconf.org/)の層を処理するためのライブラリである。これにより、ユーザーの介入または集中インフラストラクチャなしにプリンターなどのネットワークサービスを何もせずに検出できる。 KDocTools 2 kdoctools.git DocBookファイルから様々な形式のドキュメントを生成するツールを提供する。 KEmoticons 3 kemoticons.git テキストの絵文字をグラフィカルな絵文字に自動的に変換するヘルパークラスだけでなく、絵文字のテーマも提供する。 KGlobalAccelKGlobalAccel 1 kglobalaccel.git KGlobalAccelを使用すると、フォーカスされたウィンドウに依存しないグローバルキーボードショートカット(アクセラレータ)を使用できる。通常のショートカットとは異なり、アプリケーションのウィンドウをアクティブ化するためにフォーカスする必要はない。 KGuiAddons 1 kguiaddons.git KDE GUIアドオン。グラフィカルユーザインタフェースのユーティリティ。KDE GUIアドオンは、色、フォント、テキスト、画像、キーボード入力の分野でグラフィカルユーザインタフェース用のユーティリティを提供する。 KHTMLKHTML 4 khtml.git KHTMLはWebKitからフォークされたHTMLレンダリングエンジンである。KPartsテクノロジーに基づいており、JavaScriptサポートにKJSを使用する。 Ki18n 1 ki18n.git KDE gettextベースのUIテキストの国際化。KI18nは、GNU Gettext翻訳システムに基づいて、アプリケーションでユーザインタフェーステキストを国際化する機能を提供する。標準のGettext機能をラップしているため、プログラマや翻訳者は使い慣れたGettextツールとワークフローを使用できる。KI18nは、プログラマと翻訳者の両方に追加の機能も提供する。これにより、ソースおよび翻訳テキストの全体的な品質を高めることができる。これには、引数のキャプチャ、カスタマイズ可能なマークアップ、および翻訳スクリプトが含まれる。 KIconThemes 3 kiconthemes.git このライブラリには、KDEフレームワークを使用するアプリケーションでアイコンの処理を改善するためのクラスが含まれる。 KIdleTime 1 kidletime.git アイドリング時間検出用の統合モジュール。 KImageFormats 1 kimageformats.git QImageが追加のファイル形式をサポートできるようにするプラグイン。このフレームワークはQtGui用の追加の画像形式プラグインを提供する。そのため、他のソフトウェアのコンパイルには必要ないが、Qtベースのソフトウェアが特定の画像形式をサポートするためのランタイム要件になる場合がある。
以下の画像形式は読み取りのみをサポートする: GIMP (xcf) OpenEXR (exr) Adobe Photoshopドキュメント (psd) (ras)
以下の画像形式は読み取りと書き込みをサポートする: Encapsulated PostScript (eps) Personal Computer Exchange (pcx) SGI画像 (rgb, rgba, sgi, bw) Autodesk Softimage (pic) Targa (tga):Qtのバージョンより多くの形式をサポート XView (xv) KInitKInit 3 kinit.git kdeinitはプロセスランチャーで、「kdemain(...)」関数を含むダイナミックライブラリをフォークしてからロードすることでプロセスを起動します。kdeinitは、KDEワークスペースでのアプリケーションの起動を高速化する。kdeinitは、標準のKDEアプリケーションが必要とする全てのライブラリに対してリンクされている。この手法では、アプリケーション自体のみをリンクする必要があるので、アプリケーションの起動がはるかに速くなる。 KIO 3 kio.git ファイルおよびデータへのネットワーク透過的なアクセス。このフレームワークは必要となるほぼ全てのファイル管理機能を実装している。DolphinとKDEファイルダイアログもネットワーク対応のファイル管理を提供するためにこれを使用している。 Kirigami 1 kirigami.git KDE UXガイドラインに基づいてユーザインタフェースを構築するためのQtQuickプラグインのセット。 KItemModels 1 kitemmodels.git Qtモデルビューフレームワークを拡張するアイテムモデルのセット。KItemModelsは以下のモデルを提供する: KBreadcrumbSelectionModel - パンくずリストを作成するため選択されたアイテムの親を選択する。 KCheckableProxyModel - ソースモデルにチェック可能な機能を追加する。 KConcatenateRowsProxyModel - 複数のソースモデルから行を連結する。 KDescendantsProxyModel - ツリーをリストに再構築するためのプロキシモデル。 KExtraColumnsProxyModel - 既存の列の後に列を追加する。 KLinkItemSelectionModel - 同じソースモデルを持たない複数のビューで選択を共有する。 KModelIndexProxyMapper - プロキシモデルを介してインデックスと選択をマッピングする。 KRearrangeColumnsProxyModel - ソースモデルの列を並べ替えて非表示にできる。 KRecursiveFilterProxyModel - モデルの再帰フィルタリング。 KSelectionProxyModel - ソースモデルのサブセットをオブザーバーに提示するプロキシモデル。 KItemViews 1 kitemviews.git Qtモデルビューフレームワークを拡張するアイテムビューのセット。KItemViewsには、アイテムモデルで使用できる一連のビューが含まれている。KItemViewsにはリストを分類し、検索フィルターをフラットリストおよび階層リストに追加するためのビューが含まれている。 KJobWidgets 2 kjobwidgets.git KJobWIdgetsは、非同期ジョブの進行状況を表示するためのウィジェットを提供する。 KJS 1 kjs.git KJSはECMAScript互換のインタプリタを提供する。ECMA標準はネットスケープのJavaScriptやマイクロソフトのJScriptなどのよく知られたスクリプト言語に基づいている。 KJSEmbed 3 kjsembed.git KSJEmbedはJavaScriptオブジェクトをQObjectにバインドする方法を提供するため、アプリケーションをスクリプト化可能にする。 KMediaPlayer 3 kmediaplayer.git 非推奨:メディアプレーヤーKPartsのインタフェース。KMediaPlayerはKPartsフレームワーク上に構築され、メディアファイルを再生できるKPartsの共通インタフェースを提供する。このフレームワークは移植支援である。KMediaPlayerは新しいプロジェクトには非推奨であり、それを使用する既存のプロジェクトは、それから移植して、代わりにプレーンなKPartsを使用することが推奨される。 KNewStuff KNewStuff 3 knewstuff.git 追加のアプリケーションデータをダウンロードおよび共有するためのフレームワーク。KNewStuffライブラリは、アプリケーションの共同データ共有を実装する。libatticaを使用して、Open Collaboration Services仕様をサポートする。 Atticaは、Open Collaboration Services APIバージョン1.6を実装するQtライブラリであり、個人やコンテンツに関する情報の照会などのサービスへの簡単なアクセスができるようにする。 KNotifications KNotifications 3 knotifications.git システム通知を抽象化したソリューション。 KNotifyConfig KNotifyConfig 3 knotifyconfig.git KNotify構成用のモジュール。 KParts KParts 3 kparts.git KPartsライブラリは、KDEパーツのフレームワークを実装する。1つの個別のユーザインタフェースコンポーネントはKPartと呼ばれ、アクション(メニュー項目、ツールバーアイコン)の観点から定義されたユーザインタフェースを持つ精巧なウィジェットである。KPartsは、GNOMEのBonoboコンポーネントやマイクロソフトのComponent Object ModelのActiveXコントロールに類似している。KonsoleはKPartとして利用でき、KonquerorやKateなどのアプリケーションで使用される。KPartsの使用例には以下が存在する: KonquerorはOkularパーツを使用してドキュメントを表示する。 KonquerorはDragon Playerの一部を使用してマルチメディアを再生する。 Kontactはkdepimアプリケーションを組み込む。 Kateやその他のエディタはkatepartエディタコンポーネントを使用する。 いくつかのアプリケーションはKonsole KPartを使用して端末を組み込む。 以下も参照: コンポーネント(KParts)の作成と使用(KDEから) KDEアプリケーション用のプラグインの作成(KDEから) KPlotting KPlotting 1 kplotting.git KPlotWidgetはQWidgetから派生したクラスで、データを簡単にプロットできる仮想ベースクラスを提供する。KPlotWidgetの背後にある考え方は、あなただけが持っているということである「データ単位」、すなわち、プロットされるデータの自然単位で情報を指定する。KPlotWidgetは全て自動的にスクリーンピクセル単位に変換する。KPlotWidgetは目盛りと目盛りラベルでX軸とY軸を描画し、プロットに指定されたデータ制限に基づいて、使用する目盛りの数と位置を自動的に決定する。'setLimits(double x1、double x2、double y1、double y2)'を呼び出すことで制限を変更する。プロットされるデータはKPlotObjectクラスを使用して保存される。KPlotObjectはQPointFのQListで構成され、それぞれがデータポイントのX、Y座標を指定する。KPlotObjectはプロットするデータの「タイプ」も指定(POINTSまたはCURVEまたはPOLYGONまたはLABEL)する。 KPty KPty 2 kpty.git 疑似端末デバイスとのインタフェース。このライブラリは疑似端末デバイスとインターフェイスするプリミティブと、子プロセスを実行してptyを使用して子プロセスと通信するためのKProcess派生クラスを提供する。 Kross Kross 3 kross.git アプリケーションへスクリプトを組み込む。Krossはスクリプト機能をアプリケーションに組み込むためのスクリプトブリッジであり、スクリプトインタプリタバックエンドとしてQtScriptをサポートする。 Krossのコアはインタプリタバックエンドを透過的に処理するためのフレームワークを提供し、スクリプトを処理するための抽象的な機能を提供する。 KRunner KRunner 3 krunner.git 文字列クエリを指定してさまざまなアクションを提供するためのフレームワーク。Plasmaランナー用フレームワーク。PlasmaワークスペースはKRunnerと呼ばれるアプリケーションを提供する。これによりテキストエリアに入力することで、入力され表示されたテキストに一致する様々なアクションを発生させたり、情報を表示することができるようになる。このための1つのアプリケーションがで起動できるユニバーサルランナーである。 KService KService 3 kservice.git KServiceはデスクトップサービスを処理するためのプラグインフレームワークを提供する。サービスはアプリケーションまたはライブラリであり、MIMEタイプにバインドするかアプリケーション固有のコードで処理をすることができる。 KSyntaxHighlighting KSyntaxHighlighting 1 syntax-highlighting.git Kate構文強調表示エンジンのスタンドアロン実装。これは、テキストエディタと単純な強調表示されたテキストレンダリング(HTMLなど)の構成要素として、カスタムエディターとすぐに使用できるQSyntaxHighlighterサブクラスの両方の統合をサポートする。 KTextEditor KTextEditor 3 ktexteditor.git KTextEditorはKPartとして、またはKF5 :: TextEditorライブラリを使用して(さらに制御が必要な場合)アプリケーションに組み込むことができる、強力なテキストエディタコンポーネントを提供する。テキストエディタコンポーネントには構文の強調表示や自動インデントから高度なスクリプトサポートまで多くの便利な機能が含まれており、シンプルな組み込みテキストファイルエディタから高度なIDEまであらゆるものに適している。 KTextWidgets KTextWidgets 3 ktextwidgets.git KTextWidgetsはテキストを表示および編集するためのウィジェットを提供する。リッチテキストとプレーンテキストをサポートする。 KUnitConversion KUnitConversion 2 kunitconversion.git KUnitConversionは異なる物理単位の値を変換する関数を提供する。KUnitConversionは異なる接頭辞(キロ、メガ、ギガなど)の変換と、異なる単位系(リットル、ガロンなど)間の変換をサポートする。以下の領域がサポートされている: 加速度 角度 面積 通貨 密度 電流 電気抵抗 エネルギー 力 周波数 燃料効率 長さ 質量 力 圧力 温度 熱伝導率 熱流束 熱発電 時間 速度