|
| |
|
GTKバージョン4 (tk4-widget-factory) | |
| 作者 | スペンサー・キンボール、ピーター・マティス |
|---|---|
| 開発元 | GNOMEプロジェクト、eXperimental Computing Facility |
| 初版 | 1998年4月14日 |
| 最新版 |
4.24.1 |
| リポジトリ | |
| プログラミング 言語 | C言語, CSS |
| 対応OS | クロスプラットフォーム |
| 種別 | ウィジェット・ツールキット |
| ライセンス | LGPLv2 |
| 公式サイト |
gtk |
GTK (以前は GTK+、またはGIMP Toolkit) は、グラフィカルユーザインタフェース (GUI) を作るためのクロスプラットフォームのウィジェット・ツールキットである。WaylandおよびX Window System向けの最も人気のあるツールキットの1つである。
オープンソースな自由ソフトウェアであり、GNU LGPLでライセンスされているため、自由ソフトウェアとプロプライエタリソフトウェアの両方で使用できる。
GTKチームは定期的に新しいバージョンをリリースしている。GTK 4とGTK 3はメンテナンスされているが、GTK 2はサポートが終了している。GTK 1はCinePaintプロジェクトによって独立してメンテナンスされている。



GTKライブラリには、グラフィカルコントロール要素(ウィジェット)のセットが含まれている。バージョン3.22.16には、186個のアクティブなウィジェットと36個の非推奨のウィジェットが含まれている。GTKは、C言語で書かれたオブジェクト指向のウィジェットツールキットであり、GObject(GLibオブジェクトシステム)を使用している。GTKは主にX11やWaylandで使用されるが、Microsoft Windows(Windows APIを使用)やmacOS(Quartzを使用)など、他のプラットフォームでも動作する。BroadwayというHTML5バックエンドも存在する。
GTKは、描画されるウィジェットの外観を変更するように設定できる。これは、さまざまな表示エンジンを利用して行われる。使用中のプラットフォーム上のネイティブウィジェットの外観をエミュレートしようとする表示エンジンもいくつか存在する。
2005年にリリースされたバージョン2.8以降、GTKはグラフィカルコントロール要素ウィジェットのほとんどをCairoを使用してレンダリングするようになった。GTKバージョン3.0以降、すべてのレンダリングはCairoを使用して行われる 。
2018年1月26日、DevConf.czで、マティアス・クラセン(Matthias Clasen)はGTK 4開発の現状について概要を説明し、GTK 3でのレンダリングと入力の仕組み、GTK 4(>3.90)での変更点とその理由について詳細に説明した。2019年2月6日、GTK 4ではプロジェクト名から「+」が削除されることが発表された。
GDKは、基盤となるウィンドウシステムおよびグラフィックスシステムによって提供される低レベル関数のラッパーとして機能する。
GSKは、GTKのレンダリングおよびシーングラフAPIである。GSKは、グラフィカルコントロール要素(ウィジェット)とレンダリングの間に位置する。GSKは、最終的に2017年3月にリリースされたGTKバージョン3.90に統合された。
GtkBuilderを使用すると、コードを記述せずにユーザインターフェイスを設計できる。インターフェイスは、手動、またはGUIデザイナーによって生成されるExtensible Markup Language(XML)ファイルで記述され、実行時に読み込まれ、オブジェクトが自動的に作成される。ユーザインターフェイスの記述は、使用されているプログラミング言語に依存しない。
C++、Genie、JavaScript、Perl、Python、Valaなど、C以外の言語からGTKを使用するための言語バインディングが利用可能である。
GTKはさまざまなバックエンドをサポートしており、システムや環境に応じてGTKアプリケーションを表示するさまざまな方法を提供する。GTKバックエンドの例は次の通りである。

GTKには複数のGUIデザイナが存在する。以下にGTK GUIデザイナの一部を紹介する。

GTKインスペクタはGTKに組み込まれたインタラクティブなデバッグツールであり、UI要素の検査と変更、CSSの変更のテスト、ウィジェット構造のリアルタイム分析を行うことができる。Control + Shift + IまたはControl + Shift + Dのショートカットを使用するか、GTK_DEBUG=interactive環境変数を設定することで有効にできる。GTKバージョン3.14で導入された。
GTKは主にGNOMEプロジェクトによって開発されている。GNOMEプロジェクトはGNOME開発プラットフォームとGNOMEデスクトップ環境も開発している。GTKは主にC言語で書かれており、多くの言語バインディングが利用可能である。GTKの開発は緩く管理されている。
GNOMEの開発者とユーザーは、毎年開催されるGNOMEユーザーと開発者のヨーロッパ会議GUADECミーティングに集まり、GNOMEの現状と将来の方向性について議論する。GNOMEは、他のデスクトップとの相互運用性を高めるために、freedesktop.orgの標準とプログラムを取り入れている[要出典]。
2016年9月1日、GTK開発ブログの投稿で、GTKの将来の番号付けスキームなどが示された。2016年秋にリリースされたGTKバージョン3.22は、3.x系の最後のリリースとなる予定だったが、2018年秋にはGTK 4の遅れによりバージョン3.24が続いた。GTK 4の開発では、2020年12月に最初のGTK 4.0安定リリースが開始されるまで、バージョン名3.90、3.92などが使用されていた。最初の安定したGTK 4リリースにもかかわらず、GTKを使用する一部のアプリケーションは依然としてGTK 2に依存している。たとえば、2022年1月現在、GIMPはまだGTK 3に移植されていない。
GTKのマスターブランチはビルド自動化にMesonを利用している。GTK(およびGNOME、GLibなど)は、以前はビルド自動化システムとしてGNU Build System(Autotools)を利用していた。2017年8月14日以降、Autotoolsビルドシステムファイルは削除された。
GTKに対する最も一般的な批判は、主要なアップデートにおける下位互換性の欠如であり、特にAPIとテーマにおいてそれが顕著である。その結果、アプリケーション開発者やテーマ開発者は、GTKの新しいバージョンで動作するようにコードを書き直す必要がある。
GTK 3.xの開発サイクル中にマイナーリリース間で互換性が途切れたのは、現代のユーザーが期待する機能の提供や、影響力が増しているWaylandのサポートなど、革新への強いプレッシャーが原因であるとBenjamin Otteは説明した。GTK 4のリリースにより、革新の必要性によるプレッシャーは解消され、安定性と革新のバランスはより安定することになる。同様に、テーマに対する最近の変更は、APIのその部分を改善し安定化させることを特に意図している。


GTKをウィジェットツールキットとして使用するアプリケーションには、以下のものがある。
GTKプログラムは、必要なライブラリがインストールされていれば、X11とWaylandをベースにしたデスクトップ環境や、GTKで作成されていない他のデスクトップ環境でも実行できる。これには、X11.appがインストールされていればmacOSも含まれる。GTKはMicrosoft Windowsでも実行でき、PidginやGIMPなどの人気のあるクロスプラットフォームアプリケーションで使用されている。クロスプラットフォームGUIツールキットであるwxWidgetsは、LinuxでデフォルトでGTKを使用する。他のポートにはDirectFB(例えばDebianインストーラで使用)がある。
いくつかのデスクトップ環境はウィジェット・ツールキットとしてGTKを使用している。
次のウィンドウマネージャはGTKを使用している。
シンタックスハイライトにはGtkSourceView(ソースコード編集ウィジェット)が利用できる。GtkSourceView は、GTK とは別に GNOME によってライブラリ gtksourceview として管理されている。gsv への名称変更が計画されている[要出典]。
GtkSpell は GTK とは別のライブラリである。GtkSpell は GTK と Enchant に依存している。Enchant は実際のスペルチェッカーエンジンやソフトウェアである ispell、Hunspell などのラッパーである。GtkSpell は GTK の GtkTextView ウィジェットを使用してスペルミスのある単語を強調表示し、置換を提案する。
GTKは当初、Motifの代替としてGIMPのために設計され、用いられた。ピーター・マティスはMotifに失望し、彼自身のGUIツールキット、GIMP toolkitが書かれた。これはGIMP 0.60のリリースでMotifを置き換えることに成功した。最終的にGTKは書き直され、オブジェクト指向となり、GTK+に名前が変更された。これはGIMPの0.99リリースで最初に使われた。GTKはその後、GNOME Foundationによってメンテナンス対応がなされGNOMEデスクトップ環境で使われるようになった。
GTK 2.0.0リリース(2002年)シリーズでは、Pangoを使用したテキストレンダリングの改善、新しいテーマエンジン、アクセシビリティ・ツールキットを使用したアクセシビリティの改善、UTF-8文字列を使用したUnicodeへの移行、より柔軟なAPIなどの新機能が導入された。バージョン2.8から、GTK 2はベクターグラフィックスの描画のためのライブラリとしてCairoに依存するようになっている。
GTKバージョン3.0.0(2011年)には、入力デバイス処理の改良、CSSのような構文で書かれたテーマのサポート、開いている他のGTKアプリケーションに関する情報を受け取る機能が含まれていた。
2019年2月のハッカソン中に「+」が削除され、名前が「GTK」に戻った。
HPは、必要なOpenVMSの変更をGTKバージョン1.3の開発ストリームに統合することを目標としていたが、これは実現しなかった。OpenVMS用のGTKの最新バージョンはバージョン1.2.10である。
GTK 4 開発サイクル(GTK 3.92 など)中に行われた主な変更の1つは、ユーザーカスタマイズオプション(GTK+ 2で設定可能な個別のキーボードショートカットなど)の削除と、GTKが提供する基本クラスに機能をエンコードするのではなく、補助オブジェクトに機能を委任したことである。その他の変更には次のものがある。
2018年のDevConf.czで、マティアス・クラセン(Matthias Clasen)は当時のGTK 4開発の現状について概要を説明し、GTK 3でのレンダリングと入力の仕組み、GTK 4でどのような変更が行われたか、その変更の理由などについて詳細に説明した。GTK 4で可能になったことの例も示された。