GTK (ツールキット)

GTK
GTKバージョン4 (tk4-widget-factory)
作者 スペンサー・キンボール(英語版)、ピーター・マティス(英語版)
開発元 GNOMEプロジェクト、eXperimental Computing Facility(英語版)
初版 1998年4月14日(28年前) (1998-04-14)
最新版 4.24.1 ウィキデータを編集 - 2026年10月1日 (29日前) [±]
リポジトリ ウィキデータを編集
プログラミング
言語
C言語, CSS
対応OS クロスプラットフォーム
種別 ウィジェット・ツールキット
ライセンス LGPLv2
公式サイト gtk.org ウィキデータを編集
テンプレートを表示

GTK (以前は GTK+、またはGIMP Toolkit) は、グラフィカルユーザインタフェース (GUI) を作るためのクロスプラットフォームのウィジェット・ツールキットである。WaylandおよびX Window System向けの最も人気のあるツールキットの1つである。

オープンソースな自由ソフトウェアであり、GNU LGPLでライセンスされているため、自由ソフトウェアとプロプライエタリソフトウェアの両方で使用できる。

GTKチームは定期的に新しいバージョンをリリースしている。GTK 4とGTK 3はメンテナンスされているが、GTK 2はサポートが終了している。GTK 1はCinePaintプロジェクトによって独立してメンテナンスされている。

ソフトウェアアーキテクチャ

GTKツールキット
GTK の簡略化されたソフトウェアアーキテクチャ。Pango、GDK(英語版)、ATK(英語版)、GIO(英語版)、Cairo、GLib
GDKにはX11、Wayland、Broadway(HTTP)、Quartz、GDIのバックエンドが含まれており、レンダリングにはCairoを使用している。新しいSceneGraphは現在開発中である。

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ではプロジェクト名から「+」が削除されることが発表された。

GTK Drawing Kit (GDK)

GDKは、基盤となるウィンドウシステムおよびグラフィックスシステムによって提供される低レベル関数のラッパーとして機能する。

GTK Scene Graph Kit (GSK)

GSKは、GTKのレンダリングおよびシーングラフ(英語版)APIである。GSKは、グラフィカルコントロール要素(ウィジェット)とレンダリングの間に位置する。GSKは、最終的に2017年3月にリリースされたGTKバージョン3.90に統合された。

GtkBuilder

GtkBuilderを使用すると、コードを記述せずにユーザインターフェイスを設計できる。インターフェイスは、手動、またはGUIデザイナーによって生成されるExtensible Markup Language(XML)ファイルで記述され、実行時に読み込まれ、オブジェクトが自動的に作成される。ユーザインターフェイスの記述は、使用されているプログラミング言語に依存しない。

言語バインディング

C++、Genie、JavaScript、Perl、Python、Valaなど、C以外の言語からGTKを使用するための言語バインディングが利用可能である。

バックエンド

GTKはさまざまなバックエンドをサポートしており、システムや環境に応じてGTKアプリケーションを表示するさまざまな方法を提供する。GTKバックエンドの例は次の通りである。

開発ツール

GUIデザイナ

Cambalache Interface Designer

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

GTKインスペクタ

GTKインスペクタ

GTKインスペクタはGTKに組み込まれたインタラクティブなデバッグツールであり、UI要素の検査と変更、CSSの変更のテスト、ウィジェット構造のリアルタイム分析を行うことができる。Control + Shift + IまたはControl + Shift + Dのショートカットを使用するか、GTK_DEBUG=interactive環境変数を設定することで有効にできる。GTKバージョン3.14で導入された。

機能

  • インタラクティブなデバッグ
  • リアルタイムのCSSテストと変更
  • 詳細な検査のためのウィジェットの拡大
  • UI構造の分析とオブジェクトプロパティの検査
  • 環境変数によるカスタマイズ可能な表示設定
  • 詳細なオブジェクト検査(タイプ、状態、プロパティ、CSS、アクションなど)
  • グローバルアプリケーション情報の表示
  • CSSルールのデバッグ
  • レンダリングパイプラインの記録と検査

開発

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の Waylandサポートには、アプリケーションもWaylandに対応させる必要がある。
GIMP 2.8のスクリーンショット - GTKは、メニュー、ボタン、入力フィールドなど、プログラムのインターフェースコンポーネントの管理を担当している。

GTKをウィジェットツールキットとして使用するアプリケーションには、以下のものがある。

GTKプログラムは、必要なライブラリがインストールされていれば、X11とWaylandをベースにしたデスクトップ環境や、GTKで作成されていない他のデスクトップ環境でも実行できる。これには、X11.appがインストールされていればmacOSも含まれる。GTKはMicrosoft Windowsでも実行でき、PidginやGIMPなどの人気のあるクロスプラットフォームアプリケーションで使用されている。クロスプラットフォームGUIツールキットであるwxWidgetsは、LinuxでデフォルトでGTKを使用する。他のポートにはDirectFB(例えばDebianインストーラで使用)がある。

デスクトップ環境

いくつかのデスクトップ環境はウィジェット・ツールキットとしてGTKを使用している。

開発中

  • GNOME - GTKをベースとしており、GNOMEネイティブのプログラムはGTKを使用する。
  • Budgie - Solus OSの後継であるSolusオペレーティングシステム用にゼロから構築された。
  • Cinnamon - GNOME 3のフォークで、GTKバージョン3を使用する。
  • MATE - GNOME 2のフォークで、バージョン1.18以降はGTK 3を使用する。
  • Xfce - バージョン4.14以降はGTK 3ベース。
  • Pantheon - elementary OSによって開発されており、GTK 3のみを使用する。
  • Sugar - 青少年初等教育用のデスクトップ環境で、GTK、特にPyGTKを使用する。
  • Phosh - PureOS用に設計されたモバイルUI。
  • LXDE(軽量X11デスクトップ環境) - GTK 2をベースとしている。
  • Unity - Ubuntuの以前のデフォルトのデスクトップ環境。

非アクティブ

ウィンドウマネージャ

次のウィンドウマネージャはGTKを使用している。

GtkSourceView

シンタックスハイライトにはGtkSourceView(ソースコード編集ウィジェット)が利用できる。GtkSourceView は、GTK とは別に GNOME によってライブラリ gtksourceview として管理されている。gsv への名称変更が計画されている[要出典]。

GtkSpell

GtkSpell は GTK とは別のライブラリである。GtkSpell は GTK と Enchant に依存している。Enchant は実際のスペルチェッカーエンジンやソフトウェアである ispell、Hunspell(英語版) などのラッパーである。GtkSpell は GTK の GtkTextView ウィジェットを使用してスペルミスのある単語を強調表示し、置換を提案する。

歴史

Linux/Unix

GTKは当初、Motifの代替としてGIMPのために設計され、用いられた。ピーター・マティス(英語版)はMotifに失望し、彼自身のGUIツールキット、GIMP toolkitが書かれた。これはGIMP 0.60のリリースでMotifを置き換えることに成功した。最終的にGTKは書き直され、オブジェクト指向となり、GTK+に名前が変更された。これはGIMPの0.99リリースで最初に使われた。GTKはその後、GNOME Foundationによってメンテナンス対応がなされGNOMEデスクトップ環境で使われるようになった。

GTK 2

GTK 2.0.0リリース(2002年)シリーズでは、Pangoを使用したテキストレンダリングの改善、新しいテーマエンジン、アクセシビリティ・ツールキット(英語版)を使用したアクセシビリティの改善、UTF-8文字列を使用したUnicodeへの移行、より柔軟なAPIなどの新機能が導入された。バージョン2.8から、GTK 2はベクターグラフィックスの描画のためのライブラリとしてCairoに依存するようになっている。

GTK 3

GTKバージョン3.0.0(2011年)には、入力デバイス処理の改良、CSSのような構文で書かれたテーマのサポート、開いている他のGTKアプリケーションに関する情報を受け取る機能が含まれていた。

2019年2月のハッカソン中に「+」が削除され、名前が「GTK」に戻った。

OpenVMS

HPは、必要なOpenVMSの変更をGTKバージョン1.3の開発ストリームに統合することを目標としていたが、これは実現しなかった。OpenVMS用のGTKの最新バージョンはバージョン1.2.10である。

GTK 4

GTK 4 開発サイクル(GTK 3.92 など)中に行われた主な変更の1つは、ユーザーカスタマイズオプション(GTK+ 2で設定可能な個別のキーボードショートカットなど)の削除と、GTKが提供する基本クラスに機能をエンコードするのではなく、補助オブジェクトに機能を委任したことである。その他の変更には次のものがある。

2018年のDevConf.cz(英語版)で、マティアス・クラセン(Matthias Clasen)は当時のGTK 4開発の現状について概要を説明し、GTK 3でのレンダリングと入力の仕組み、GTK 4でどのような変更が行われたか、その変更の理由などについて詳細に説明した。GTK 4で可能になったことの例も示された。

関連項目

脚注

  1. ↑ “4.24.1” (2026年10月1日). 2026年10月4日閲覧。
  2. ↑ “The GTK Open Source Project on Open Hub: Languages Page”. openhub.net. 2019年3月28日閲覧。
  3. ↑ Bassi, Emmanuele (2019年2月6日). “Project rename to "GTK"”. mail.gnome.org. GNOME mailinglist. 2020年11月7日時点のオリジナルよりアーカイブ。2019年2月7日閲覧。
  4. ↑ “A brief description on how GTK was born.”. www.gtk.org. 2023年6月9日時点のオリジナルよりアーカイブ。2023年7月5日閲覧。
  5. ↑ The GTK+ Team. “GTK+ Features”. 2019年5月25日時点のオリジナルよりアーカイブ。2014年9月8日閲覧。
  6. ↑ “Documentation”. www.x.org. 2019年12月21日時点のオリジナルよりアーカイブ。2019年11月22日閲覧。
  7. ↑ “Projects/GTK/Roadmap - GNOME Wiki!”. wiki.gnome.org. 2019年5月22日時点のオリジナルよりアーカイブ。2019年11月22日閲覧。
  8. ↑ “GTK 4.0 – GTK Development Blog” (英語) (2020年12月16日). 2023年5月28日時点のオリジナルよりアーカイブ。2021年10月18日閲覧。
  9. ↑ “Robin Rowe / GTK1 · GitLab”. GitLab. 2023年3月9日時点のオリジナルよりアーカイブ。2023年2月22日閲覧。
  10. ↑ “GTK+ 3 Reference Manual”. 2021年6月23日時点のオリジナルよりアーカイブ。2017年7月15日閲覧。
  11. 1 2 “Using GTK+ with Broadway”. GNOME Developer. GNOME. 2021年6月14日時点のオリジナルよりアーカイブ。2018年3月6日閲覧。
  12. 1 2 “Broadway - GitHub symbiose/symbiose Wiki”. GitHub. 2023年6月28日時点のオリジナルよりアーカイブ。2018年3月6日閲覧。
  13. 1 2 “GTK+ to Use Cairo Vector Engine” (2005年2月5日). 2009年12月27日閲覧。
  14. 1 2 “Gtk: Migrating from GTK 2.x to GTK 3” (英語). docs.gtk.org. 2023年5月26日時点のオリジナルよりアーカイブ。2022年6月16日閲覧。 “All drawing in GTK 3 is done via Cairo.”
  15. ↑ “glade - man pages section 1: User Commands”. docs.oracle.com. 2024年9月11日閲覧。
  16. ↑ “Debian -- Package Search Results -- gazpacho”. packages.debian.org. 2023年6月28日時点のオリジナルよりアーカイブ。2019年11月22日閲覧。
  17. ↑ “Nothing-personal - A development site for Crow Designer, GuiLoader and Rally - Google Project Hosting”. 2013年1月24日時点のオリジナルよりアーカイブ。2014年2月17日閲覧。
  18. ↑ “GTK Inspector” (英語). GNOME Developer Documentation. 2024年9月14日閲覧。
  19. ↑ “Introducing GtkInspector” (2014年5月15日). 2014年5月17日時点のオリジナルよりアーカイブ。2014年5月17日閲覧。
  20. ↑ “Another GtkInspector update” (2014年7月11日). 2014年7月14日時点のオリジナルよりアーカイブ。2014年7月13日閲覧。
  21. ↑ “GNOME Quick SWOT Analysis”. The GNOME Project. 2014年3月18日時点のオリジナルよりアーカイブ。2014年3月18日閲覧。
  22. ↑ “GNOME Languages”. Open Hub. Black Duck Software. 2014年5月22日時点のオリジナルよりアーカイブ。2014年5月22日閲覧。
  23. ↑ “About”. GNOME Users And Developers European Conference (GUADEC). 2011年10月4日時点のオリジナルよりアーカイブ。2011年12月3日閲覧。
  24. ↑ “Versioning and long term stability promise in GTK”. GTK development blog (2016年9月1日). 2016年9月21日時点のオリジナルよりアーカイブ。2016年9月2日閲覧。
  25. ↑ “GTK+ 3.24 To Deliver Some New Features While Waiting For GTK4”. www.phoronix.com. 2024年4月22日時点のオリジナルよりアーカイブ。2021年4月2日閲覧。
  26. ↑ “GTK 4.0”. GTK development blog (2020年12月16日). 2023年5月28日時点のオリジナルよりアーカイブ。2021年10月18日閲覧。
  27. ↑ “Development release GIMP 2.99.2 is out”. Gimp news. 2020年11月6日. 2021年4月10日時点のオリジナルよりアーカイブ. 2022年1月6日閲覧.
  28. ↑ “Build system change GTK's master branch”. mail.gnome.org. 2017年8月15日時点のオリジナルよりアーカイブ。2018年10月29日閲覧。
  29. ↑ “How Does One Create A Gtk+ Application? – Morten Welinder”. blogs.gnome.org (2014年6月23日). 2014年7月1日時点のオリジナルよりアーカイブ。2017年6月3日閲覧。
  30. ↑ mclasen (2015年11月20日). “A GTK+ update”. Goings on. 2016年5月2日時点のオリジナルよりアーカイブ。2016年6月3日閲覧。
  31. ↑ “GUADEC2013: Benjamin Otte talks about GTK+”. GUADEC. 2014年3月6日時点のオリジナルよりアーカイブ。2014年3月5日閲覧。
  32. ↑ Aurélien Gâteau (2021年10月3日). “The story behind Gwenview name”. agateau.com. 2024年4月22日時点のオリジナルよりアーカイブ。2024年12月15日閲覧。 “Yes, you read this right! Gwenview started its life as a GTK+ application!”
  33. ↑ Larabel, Michael (2014年1月12日). “The Biggest Problem With GTK & What Qt Does Good”. Phoronix. 2016年7月1日時点のオリジナルよりアーカイブ。2014年9月10日閲覧。
  34. ↑ Hong Jen Yee (2013年3月26日). “PCManFM Qt 0.1.0 released”. 2013年6月7日時点のオリジナルよりアーカイブ。2014年9月10日閲覧。
  35. ↑ “Audacious - An Advanced Audio Player”. audacious-media-player.org. 2019年7月28日時点のオリジナルよりアーカイブ。2019年11月22日閲覧。
  36. ↑ Lindgren, John (2014年5月6日). “Ugly window decorations and how to fix them (GTK 3.12)”. 2014年10月13日時点のオリジナルよりアーカイブ。2014年10月21日閲覧。
  37. ↑ Gerald Combs (2013年10月15日). “We're switching to Qt”. 2013年10月19日時点のオリジナルよりアーカイブ。2015年8月19日閲覧。
  38. ↑ “GTK+”. WxWidgets Compared To Other Toolkits. 2007年10月5日時点のオリジナルよりアーカイブ。2007年8月28日閲覧。
  39. ↑ “LinuxWorld - Where did Spencer Kimball and Peter Mattis go?”. 1999年4月17日時点のオリジナルよりアーカイブ。2013年8月19日閲覧。
  40. ↑ “What is the + in GTK+?” (2011年). 2012年3月26日時点のオリジナルよりアーカイブ。2014年3月18日閲覧。
  41. ↑ https://mail.gnome.org/archives/gtk-devel-list/2002-March/msg00161.html
  42. ↑ https://mail.gnome.org/archives/gtk-devel-list/2011-February/msg00020.html
  43. ↑ “Rename some references to GTK+ (d080be3e) · Commits · GNOME / gtk”. gitlab.gnome.org (2019年2月4日). 2021年2月25日時点のオリジナルよりアーカイブ。2019年2月5日閲覧。
  44. ↑ “HP OpenVMS systems - GTK+”. 2018年7月13日時点のオリジナルよりアーカイブ。2018年7月12日閲覧。
  45. ↑ “HP OpenVMS systems - GTK+”. 2018年7月13日時点のオリジナルよりアーカイブ。2018年7月12日閲覧。
  46. ↑ “GTK+ 4 Status Update”. Fedora People. 2024年4月22日時点のオリジナルよりアーカイブ。2024年4月22日閲覧。

外部リンク