GIMP Toolkit (GTK), grafik kullanıcı arayüzleri oluşturmak için geliştirilmiş, özgür ve açık kaynaklı bir çapraz platform araç takımıdır. Başlangıçta GIMP görüntü düzenleyicisinin ihtiyaçlarını karşılamak amacıyla yazılan GTK, zaman içinde GNU/Linux masaüstü ekosisteminin en temel bileşenlerinden biri hâline gelmiştir. C programlama diliyle yazılan GTK; Python, Rust, JavaScript ve C++ gibi birden fazla dil için bağlayıcı (binding) desteği sunmakta ve GNOME masaüstü ortamının resmi araç takımı olarak işlev görmektedir.

GTK ile Oluşturulan Uygulama (Deviant Art, Görsel Satya-164 Tarafından Oluşturuldu)
GTK’nın ortaya çıkışı, 1990’ların ortasında Peter Mattis ve Spencer Kimball’ın GIMP (GNU Image Manipulation Program) adlı görüntü düzenleme programı üzerinde çalışmalarına dayanır. O dönemde yaygın olarak kullanılan Motif araç takımı, hem tescilli bir lisans altında dağıtılmakta hem de GIMP geliştiricilerinin ihtiyaç duyduğu esnekliği yeterince karşılayamamaktaydı. Bu nedenle Mattis ve Kimball, GIMP için kendi araç takımlarını sıfırdan yazmaya karar verdiler; böylece GTK’nın ilk hâli, doğrudan GIMP’in bir alt bileşeni olarak doğdu.
İlk sürümler, GTK’yı temelden bir X Window System (X11) sarmalayıcısı olarak konumlandırdı. GDK (GIMP Drawing Kit) adıyla anılan bu katman, GTK ile altta yatan pencere sistemi arasında bir soyutlama sağlıyordu. Bu mimari yaklaşım, GTK’nın ilerleyen yıllarda farklı görüntüleme arka uçlarını (Wayland dahil) desteklemesine zemin hazırlamıştır.【1】
1990’ların sonunda Unix/Linux masaüstü dünyasında bir rekabet ve lisans tartışması oluştu. KDE (K Desktop Environment), başlangıçta Qt araç takımını esas almıştı; ancak Qt, o dönemde tescilli bir lisans kapsamında dağıtılmaktaydı. Özgür yazılım topluluğu içinde, özellikle Richard Stallman gibi isimler, KDE’nin tescilli bir bileşene dayanmasının özgür bir masaüstü ortamı için uygun olmadığını savundu.
Bu ortamda, 1997 yılında Miguel de Icaza ve Federico Mena Quintero’nun öncülüğünde GNOME (GNU Network Object Model Environment) projesi başlatıldı. GNOME, hem tamamen özgür bir lisans altında hem de zaten var olan bir araç takımına dayanan GTK üzerine inşa edildi. Bu tercih, GTK’yı yalnızca bir GIMP bileşeni olmaktan çıkararak geniş çaplı bir masaüstü yazılım altyapısına dönüştürdü.【2】
GTK’nın GNU Küçük Genel Kamu Lisansı (LGPL) ile dağıtılması da bu noktada belirleyici bir etken oldu. LGPL, kütüphanenin ticari ve tescilli uygulamalarda da kullanılabilmesine imkân tanıyarak GTK’nın benimsenmesini kolaylaştırdı.【3】
GTK’nın tarihsel evrimi, her biri önemli teknik dönüşümleri temsil eden dört ana sürüm dönemine ayrılabilir.
GTK 1.x: İlk resmî sürüm olarak 1998’de yayımlanan GTK 1.0, temel widget setini ve GDK katmanını sunmaktaydı. Bu dönemde GTK, hâlâ büyük ölçüde X Window System’e bağımlıydı ve uluslararasılaşma (i18n) desteği sınırlı kalıyordu.【4】
GTK 2.x: 2002’de yayımlanan GTK 2, araç takımı tarihinde bir dönüm noktası olarak kabul edilmektedir. Bu sürümle birlikte Unicode ve UTF-8 desteği standart hâle getirildi; Pango metin işleme kütüphanesi entegre edilerek uluslararası dil ve yazı tipi desteği köklü biçimde iyileştirildi. GTK 2 aynı zamanda erişilebilirlik (accessibility) için ATK arayüzünü de tanıttı.【5】
GTK 3.x: 2011’de yayımlanan GTK 3, çizim mimarisinde yenilik ortaya koymuştur. Bu sürümde widget’ların kendi çizim işlemlerini doğrudan gerçekleştirmesi yerine Cairo vektörel grafik kütüphanesine dayanan bir model benimsendi. Bu değişiklik, GTK’nın HiDPI ekranlarla ve modern grafik altyapılarıyla uyumunu büyük ölçüde artırdı. Ayrıca GTK 3, CSS tabanlı bir tema sistemi getirerek görsel özelleştirmeyi web teknolojilerine yakın bir sözdizimi üzerinden mümkün kıldı; GNOME’un libadwaita kütüphanesi de bu CSS altyapısı üzerine inşa edilmiştir. GTK 3 aynı zamanda Wayland protokolü desteğini de devreye aldı.【6】
GTK 4.x: 2020’de yayımlanan GTK 4, GPU tabanlı render mimarisine geçişin ürünüdür. GTK Scene Kit (GSK) adlı yeni katman, render ağaçları (render node) kavramını ortaya koyarak OpenGL ve Vulkan aracılığıyla GPU üzerinde donanım hızlandırmalı çizim yapmayı mümkün kıldı.【7】 Bu dönemde Wayland birincil görüntüleme protokolü olarak konumlanırken X11 uyumluluğu da sürdürülmektedir. GTK 4 ile birlikte GNOME, görsel ve davranışsal tutarlılık için libadwaita kütüphanesini ön plana çıkarmıştır.
GTK, birbiriyle yakından ilişkili birkaç kütüphaneden oluşan katmanlı bir mimari üzerine inşa edilmiştir.【8】 Bu katmanlı yaklaşım, farklı sorumlulukların net biçimde ayrılmasına olanak tanır.
GLib ve GObject: GTK’nın tüm altyapısı, GLib temel kütüphanesine dayanır. GLib; veri yapıları, taşınabilirlik sarmalayıcıları, olay döngüsü ve iş parçacığı (thread) desteği gibi temel C altyapısını sağlar. GObject ise C dilinde kalıtım, polimorfizm ve referans sayımı (reference counting) gibi nesne yönelimli özellikleri uygulayan bir tür sistemidir. GObject, GTK ve GNOME kütüphanelerinin tamamında yaygın biçimde kullanılan temel nesne modelidir.
Sinyal/Callback Mekanizması: GTK, kullanıcı etkileşimlerini ve uygulama olaylarını GObject’in sinyal sistemi üzerinden yönetir. Standart UNIX sinyallerinden farklı olarak bu sinyal mekanizması, belirli bir nesne üzerinde gerçekleşen olayları (örneğin bir düğmeye tıklanması) ilgili callback fonksiyonlarına iletmek için tasarlanmıştır.【9】 Bu olay güdümlü (event-driven) yapı, GTK uygulamalarının temel mimari çerçevesini oluşturur.
Widget Sistemi: GTK’nın tüm arayüz bileşenleri, “widget” adı verilen nesneler aracılığıyla temsil edilir. Düğme, metin kutusu, pencere veya kaydırma çubuğu gibi her bileşen, GObject hiyerarşisinden türeyen ayrı bir sınıftır. GTK 4’te widget’lar, görsel düzeni belirleyen düzen yöneticileriyle (layout manager) birlikte çalışır.
Tema Sistemi: GTK 3 ile tanıtılan CSS tabanlı tema motoru, GTK 4’te de sürdürülmektedir. Geliştiriciler ve dağıtımcılar, widget’ların görsel özelliklerini CSS sözdizimiyle özelleştirebilir. Bu sistem, GTK’nın farklı masaüstü ortamlarında ve dağıtımlarda farklı görsel kimlikler almasına zemin hazırlar.
Çizim Mimarisi: GTK 4, widget’ların ekrana işlenmesi için GSK (GTK Scene Kit) katmanını kullanır. GSK, render ağaçları aracılığıyla çizim komutlarını OpenGL veya Vulkan gibi GPU arka uçlarına iletir. Bu mimari, modern donanımın grafik işleme yeteneklerinden yararlanarak daha akıcı animasyonlar ve daha verimli çizim gerçekleştirmeyi mümkün kılar.【10】
GTK, C programlama diliyle yazılmış olmasına karşın yalnızca C ile sınırlı değildir. GObject’in dil bağlayıcılarını (language binding) kolaylaştırmak amacıyla tasarlanmış olması ve GObject Introspection mekanizması sayesinde GTK, birden fazla programlama diliyle kullanılabilmektedir.
GObject Introspection, GTK’nın API’sini makine tarafından okunabilir XML ve ikili formatlarda dışa aktarır. Bu sayede dil bağlayıcıları yapıştırıcı kod (glue code) yazmak zorunda kalmadan GTK işlevlerine erişebilir.
Resmî olarak desteklenen ve güncellenen dil bağlayıcıları şunlardır: C (ana dil), C++ (gtkmm), Python (PyGObject), Rust (gtk-rs), JavaScript (GJS), Vala. Bunların yanı sıra Go, D, Java, Perl ve Guile (GNU Scheme) için de topluluk tarafından sürdürülen bağlayıcılar mevcuttur.
GTK’nın en yaygın kullanım alanlarından biri, GNOME masaüstü ortamına yönelik uygulamalardır. GNOME projesinin resmî araç takımı olması nedeniyle Nautilus (dosya yöneticisi), Evince (belge görüntüleyici), GNOME Builder (geliştirme ortamı), Web/Epiphany (web tarayıcısı), Calendar ve Maps gibi GNOME uygulamalarının büyük bölümü GTK kullanılarak geliştirilmektedir.

GIMP Programından Bir Ekran Görüntüsü (Deviant Art, Görsel Tarkan-t29 Tarafından Oluşturuldu)
GTK ayrıca bağımsız masaüstü uygulamalarında da kullanılmaktadır. GIMP görüntü düzenleyicisi, GTK’nın ilk geliştirilme amacı olan uygulama olmayı sürdürmektedir. Bunun yanında Inkscape vektörel grafik editörü, Evolution e-posta istemcisi, Transmission torrent istemcisi ve HandBrake video dönüştürme yazılımı gibi çeşitli açık kaynaklı uygulamalar da GTK tabanlıdır.
Araç takımı; düğme, pencere, menü, sekme, liste ve metin alanı gibi standart grafik arayüz bileşenlerini sağladığından, masaüstü yazılım geliştirme süreçlerinde genel amaçlı bir GUI altyapısı olarak kullanılmaktadır. GTK’nın tema desteği, uluslararasılaştırma özellikleri, erişilebilirlik altyapısı ve farklı programlama dilleriyle kullanılabilmesi, çeşitli uygulama türlerinde tercih edilmesini kolaylaştırmaktadır.
GTK, yalnızca son kullanıcı uygulamalarında değil, uygulama geliştirme araçlarında ve bazı gömülü sistem arayüzlerinde de kullanılabilmektedir. Özellikle Linux tabanlı sistemlerde hafif veya özelleştirilebilir grafik arayüz gereksinimleri için GTK tabanlı çözümler tercih edilmektedir. Bu kullanım alanları doğrultusunda GTK, GNU/Linux masaüstü yazılım ekosisteminde yaygın biçimde kullanılan arayüz geliştirme teknolojilerinden biri olarak kabul edilmektedir.
GTK, GNU/Linux masaüstü yazılım ekosisteminde yaygın biçimde kullanılan grafik arayüz araç takımlarından biridir. Özellikle GNOME masaüstü ortamının temel bileşeni olarak işlev görmesi nedeniyle, Linux masaüstü teknolojilerinin gelişiminde önemli bir rol üstlenmiştir.
1990’ların sonlarında Unix/Linux masaüstü ortamlarında farklı GUI araç takımları arasında belirgin bir rekabet bulunmaktaydı. Bu dönemde Motif, ticari Unix sistemlerinde yaygın olarak kullanılırken; KDE projesi Qt araç takımını temel alıyordu. Qt’nin o yıllardaki lisans yapısı özgür yazılım topluluğu içinde tartışmalara yol açmış, bunun sonucunda GNOME projesi GTK üzerine inşa edilmiştir.【11】 Böylece GTK, yalnızca GIMP için geliştirilen bir araç takımı olmaktan çıkarak bağımsız bir masaüstü uygulama altyapısına dönüşmüştür.【12】
GTK’nın GNU Küçük Genel Kamu Lisansı (LGPL) altında dağıtılması, hem özgür yazılım projelerinde hem de kapalı kaynaklı uygulamalarda kullanılabilmesine olanak sağlamıştır. Bu lisans modeli, GTK’nın farklı geliştirici toplulukları ve yazılım şirketleri tarafından benimsenmesini kolaylaştırmıştır.
Teknik açıdan GTK, Linux masaüstü altyapısındaki dönüşümlere uyum sağlayacak biçimde geliştirilmiştir. X Window System’den Wayland görüntüleme protokolüne geçiş sürecinde GTK, Wayland desteğini erken benimseyen araç takımlarından biri olmuştur. GTK 3 ile başlayan Wayland desteği, GTK 4 sürümünde daha kapsamlı hâle gelmiştir.
GTK 4 döneminde GNOME ekosisteminde geliştirilen libadwaita kütüphanesi, GTK tabanlı uygulamalar arasında daha tutarlı bir kullanıcı arayüzü oluşturmayı amaçlamaktadır. Bu kütüphane, GNOME İnsan Arayüzü Rehberi’ne (Human Interface Guidelines) uygun hazır bileşenler ve tasarım kuralları sunmaktadır.
Günümüzde GTK; GNOME uygulamalarının yanı sıra GIMP, Inkscape, Transmission ve Evolution gibi çeşitli özgür yazılım projelerinde kullanılmaya devam etmektedir. Bunun yanında GTK’nın Python, Rust, JavaScript ve C++ gibi farklı programlama dilleriyle kullanılabilmesi, araç takımının geniş bir geliştirici kitlesi tarafından tercih edilmesini sağlamaktadır.
Bu yönleriyle GTK, modern özgür yazılım masaüstü uygulamalarının geliştirilmesinde kullanılan başlıca grafik arayüz teknolojilerinden biri olarak değerlendirilmektedir.
Clasen, Matthias. "Current GTK+ Development." Red Hat / Usenix 2004 Conference Notes. Erişim tarihi: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html.
Clasen, Matthias. "GTK+ History." Red Hat / Usenix 2004 Conference Notes. Erişim tarihi: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/x29.html.
GObject Development Team. "GObject: Type System Concepts." GNOME Developer Documentation. Erişim tarihi: 13 Mayıs 2026. https://docs.gtk.org/gobject/concepts.html.
GTK Development Team. "Gtk – 4.0 API Reference." GTK Documentation. Erişim tarihi: 13 Mayıs 2026. https://docs.gtk.org/gtk4.
The GTK Team. "Language Bindings." GTK Documentation. Erişim tarihi: 13 Mayıs 2026. https://www.gtk.org/docs/language-bindings.
The GTK Team. "The GTK Project – A Free and Open-Source Cross-Platform Widget Toolkit." The GTK Project. Erişim tarihi: 13 Mayıs 2026. https://www.gtk.org.
The Qt Company. "Qt Open Source Licensing – FAQ." Qt.io. Erişim tarihi: 13 Mayıs 2026. https://www.qt.io/faq/qt-open-source-licensing.
[1]
Clasen, Matthias. “Current GTK+ Development.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html
[2]
Clasen, Matthias. “GTK+ History.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/x29.html
[3]
The Qt Company. “Qt Open Source Licensing – FAQ.” Qt.io. Erişim: 13 Mayıs 2026. https://www.qt.io/faq/qt-open-source-licensing
[4]
Clasen, Matthias. “Current GTK+ Development.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html
[5]
Clasen, Matthias. “Current GTK+ development.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html
[6]
Clasen, Matthias. “Current GTK+ development.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html
[7]
GTK Development Team. “Gtk – 4.0 API Reference.” GTK Documentation. Erişim: 13 Mayıs 2026. https://docs.gtk.org/gtk4
[8]
Clasen, Matthias. “Current GTK+ development.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/t1.html
[9]
GObject Development Team. “GObject: Type System Concepts.” GNOME Developer Documentation. Erişim: 13 Mayıs 2026. https://docs.gtk.org/gobject/concepts.html
[10]
GTK Development Team. “Gtk – 4.0 API Reference.” GTK Documentation. Erişim: 13 Mayıs 2026. https://docs.gtk.org/gtk4
[11]
The Qt Company. “Qt Open Source Licensing – FAQ.” Qt.io. Erişim: 13 Mayıs 2026. https://www.qt.io/faq/qt-open-source-licensing
[12]
Clasen, Matthias. “GTK+ History.” Red Hat / Usenix 2004 Conference Notes. Erişim: 13 Mayıs 2026. https://people.redhat.com/mclasen/Usenix04/notes/x29.html
Henüz Tartışma Girilmemiştir
"GIMP Toolkit" maddesi için tartışma başlatın
Tarihçe
GIMP İçin Geliştirilmesi
GNOME’un GTK’yı Benimsemesi
GTK 2, 3 ve 4 Dönemleri
Teknik Yapı
Programlama Dili Desteği
Kullanım Alanları
Özgür Yazılım Ekosistemindeki Yeri
Bu madde yapay zeka desteği ile üretilmiştir.