GDK(GIMP Drawing Kit)は、基盤となるウィンドウシステムとグラフィックスシステムが提供する低レベル機能をラップするライブラリです。GDKはディスプレイサーバーとGTKライブラリの間に位置し、描画プリミティブ、ラスターグラフィックス(ビットマップ)、カーソル、フォントなどの基本的なレンダリング処理に加え、ウィンドウイベントやドラッグ&ドロップ機能も処理します。
GTK Scene Graph Kit (GSK)と同様に、GDK は GTK の一部であり、GNU Lesser General Public License (LGPL) の下でライセンスされています。

GTKはGDKと呼ばれる抽象化レイヤーの上に実装されており、入力収集、ドラッグアンドドロップ、ピクセルフォーマット変換といった低レベルの処理からGTKを解放します。GDKは、GTKをウィンドウシステムの詳細から分離する中間レイヤーです。
GDKはGTKの移植性において重要な役割を果たしています。低レベルのクロスプラットフォーム機能は既にGLibによって提供されているため、GTKを他のプラットフォームで動作させるために必要なのは、GDKを基盤となるオペレーティングシステムのグラフィックスレイヤーに移植することだけです。したがって、GDKをWindows APIとQuartzに移植することで、GTKアプリケーションをそれぞれWindowsとmacOSで動作させることができるのです。
GTK+ 2.8以降、GDKはCairoをサポートしており、GTK+ 3ではGDKの描画機能の代わりにCairoを使用することが推奨されています。[ 2 ]
GDK は、 GTK をウィンドウ システムの詳細から分離する中間層です。GDK はXlibの薄いラッパーです。X Window System には、 Xlibと呼ばれる低レベル ライブラリが付属しています。GDK のほとんどすべての関数は、対応する Xlib 関数の非常に薄いラッパーですが、プログラミングを簡素化し、GDK をWaylandや Microsoft Windows などの他のウィンドウ システムへ移植しやすくするために、Xlib の複雑さ (および機能) の一部は隠蔽されています。提供される Xlib の機能は、主にアプリケーション向けのものであり、たとえば、ウィンドウ マネージャのみで使用される多くの機能はGDK では公開されていません。
GDKは、グラフィックスパイプラインをより適切に制御するために、 OpenGL(またはOpenGL ES)をサポートしています。
GdkFrameClockはGTK 3.8で追加されました[ 3 ]
GTK アプリケーションはメインループ駆動のままであり ( Glib イベント ループを参照)、アプリケーションはほとんどの場合、メインループ内でイベントを待機してアイドル状態になり、イベントが発生すると適切なサブルーチンを呼び出しますが、GdkFrameClock は、アプリケーションにウィンドウを更新して再描画するタイミングを指示する追加のメカニズムを追加します。[ 4 ]更新レートは、モニターのリフレッシュ レートと同期できます。
GDKはその歴史の中で、いくつかの異なるキャンバスを含み、それらとリンクしていました。
開発者たちは、非推奨のAPIコンポーネントを削除し、Clutter グラフィックス ライブラリと同様の統合シーン グラフ (キャンバス)システムを追加して、GTK をOpenGLおよびVulkanと効果的に統合するなど、ライブラリの新しい方向性も検討していた。[ 5 ] [ 6 ]
GTK+ Scene Graph Kit (GSK) は、2017年3月にGTK+ 3.90の一部としてリリースされました。これは、GTK用のシーングラフおよびレンダリングAPIです。GSKはGDK(これもGTKの一部です)とは統合されておらず、独自のディレクトリに保持されています。
GDKには、 X11およびWaylandプロトコル、QuartzおよびGDI、さらにはハイパーテキスト転送プロトコル(HTTP)エンジンであるBroadwayなど、いくつかのウィンドウシステムへのバックエンドが含まれています。
2015年3月にGNOME 3.16がリリースされたことで、GDKはMirディスプレイサーバープロトコルの実験的なバックエンドを取得しました。[ 9 ] MirディスプレイサーバープロトコルはCanonicalがLinuxのUbuntuディストリビューション向けに開発した製品で、Waylandディスプレイサーバープロトコルと競合することを目的としています。今のところ、Ubuntuでのみ実装されています。
現時点では、 KMS用のバックエンドは存在しません。
環境変数GDK_BACKENDを使用すると、アプリケーションを起動し、そのインスタンスに特定のウィンドウシステムを使用させるように強制できます。 GDK_BACKEND=wayland gnome-calculatorGDK_BACKEND=wayland CLUTTER_BACKEND=wayland cheese
gdk-pixbufは、画像読み込みとピクセルバッファ操作のためのツールキットです。このライブラリは、画像の読み込みと保存機能、ピクセルバッファの高速スケーリングと合成、シンプルなアニメーション読み込み(アニメーションGIFなど)、およびlibart画像バッファをGdkDrawableインスタンスにレンダリングする機能を提供します。
gdk-pixbuf にはかなり大きな API があります。
gdk-pixbufライブラリの基本的な構造はGdkPixbufです。これは、ArtPixBufがサポートする多くの概念を反映した、プライベートで不透明なデータ構造です。実際、GdkPixbufのプライベートデータフィールドのほとんどは、ArtPixBufの対応するフィールドと同じ名前とデータ型を持っています。この類似性は、gdk-pixbufがlibartのラッパーだった初期の頃に遡ります。その後、libartへの依存関係は解消され、gdk-pixbufはGTK+ 2.0コードベースに統合されました。そのため、gdk-pixbufがスタンドアロンライブラリとして機能したのはGNOME 1リリースまでです。
2010年9月23日にGTK+ 2.22がリリースされたことにより、gtk+ 2.0以降GTK+の一部として提供されていたgdk-pixbufは、再びスタンドアロンライブラリとなりました。これはGTK+ 3への移行準備の一環として行われたものです。
最初のスタンドアロン版リリースは2010年9月21日のバージョン2.22で、開発は2010年6月23日のバージョン2.21.3から開始されました。
GDKは元々、GIMPラスターグラフィックエディタのためにX Window System上で開発されました。[ 10 ]