GTK було розроблено дляGNU Image Manipulation Program (GIMP),растрового графічного редактора, у1997 році Спенсером Кімбалом (Spencer Kimball) та Петером Матісом (Peter Mattis), членамиeXperimental Computing Facility (XCF) вUC Berkeley. GTK розвивається в рамкахпроєкту GNU і євільним програмним забезпеченням.Код GTK розповсюджується під ліцензієюLGPL, що дозволяє використовувати GTK не тільки для розробки вільного ПЗ, а й для створення власницьких програм, не вимагаючи від виробників закритих програм виплати роялті або купівлі спеціальної ліцензії.
До складу тулкіта входить повний набірвіджетів, що дозволяють використовувати GTK для проєктів різного рівня і розміру. GTK спеціально спроєктований для підтримки не тільки C/C++, але й інших мов програмування, таких якPerl іPython, що в поєднанні з використанням візуального будівника інтерфейсуGlade дозволяє істотно спростити розробку і скоротити час написання графічних інтерфейсів. Організація виводу в GTK абстрагована від типу віконних систем, наприклад, поставляється бекенд, що забезпечує можливість роботи поверх дисплейного сервераWayland, а також бекенд, котрий дозволяє здійснювати виведення бібліотеки GTK у вікнівеббраузера (запустивши GTK-застосунок на одній машині, можна відкрити браузер на іншій машині і отримати доступ до інтерфейсу цієї програми).
Відтоді як GTK був розроблений в рамках проєктуGIMP, тулкіт використовується в різних проєктах, наприклад, GTK лежить в основі десктоп-оточеньGNOME таXfce, використовується в таких продуктах, якFirefox іOpenOffice/LibreOffice.
На відміну відQt, GTK+ не базується на іншихXt-подібних наборах віджетів. Це надає їй гнучкості і дозволяє використовувати GTK+ на інших системах. Однак, без цієї залежності, GTK+ немає доступу до бази ресурсівX Window System, традиційного способу налаштування програмного забезпеченняX11.
Кінцевий користувач може налаштувати зовнішній вигляд графічних елементів за допомогою системи жупанів[що це?]. Існують жупани, котрі імітують вигляд елементів графічних інтерфейсів таких операційних систем, якWindows 95,Motif,Qt,NEXTSTEP, та багатьох інших.
GTK+ спочатку призначалась дляX Window System, і вони й по нині залишається її основною платформою. Іншими підтримуваними програмними платформами єMicrosoft Windows (Windows 2000 та вище),DirectFB таQuartz (Mac OS X v10.4 та вище, нині знаходиться у стадії розробки).
GTK+ 2 переважає своїми можливостями GTK+ 1. Серед нових можливостей вдосконалене відображення тексту за допомогоюPango, нова система жупанів, вдосконалена доступність за допомогою Accessibility Toolkit, повний перехід наUnicode використовуючи рядкиUTF-8 та гнучкішеAPI. Між тим, GTK+ 2 втратила сумісність з GTK+ 1, і програмісти повинні переписати програмне забезпечення під нову версію бібліотеки.
Починаючи з версії 2.8, GTK+ 2 вимагає бібліотекуCairo для відображення векторної графіки у GTK+ 2.
10 лютого2011 відбувся реліз GTK+ 3.0.0[4]. Робота над GTK+ 3 починалася як «велика чистка» і тривала протягом кількох років.
Нововведення:
Відображенням всього тепер займаєтьсяCairo. GDK більше не є обгорткою застарілих X11 drawing API. Це дозволило видалити кілька X11-орієнтованих концепцій (GCs, colormaps, pixmaps). Більшу частину роботи зробив Benjamin Otte зRedHat.
Підтримка сучасних пристроїв введення. Раніше цим нехтували (мало з основних розробників користуються «екзотичними» пристроями введення). З приходом GTK+ 3 з'явилася підтримка декількох покажчиків, клавіатур тощо.
НовіAPI для тем зі знайомим синтаксисомCSS для налаштування і інші вдосконалення, наприклад, анімована зміна станів.
Гнучкіше керування геометрією.
Підтримка кількох бекендівGDK. З GTK+ 2.x потрібно було перезбирати програми для їхньої роботи з різними бекендами GDK, бо вони були реалізовані окремими бібліотеками. У GTK+ 3 їх можна вбудувати в одну бібліотеку і вибирати під час виконання. Це полегшить перехід зX11 наWayland або з Quartz на X11.
Легка підтримказастосунків. З інтеграцієюD-Bus в GIO стало можливим додати клас, який обробляє велику кількість аспектів інтеграції платформи створення програмного забезпечення, таких як відстеження відкритих вікон, забезпечення унікальності, експорт дій тощо. Це все в стадії розробки і буде розширено в майбутньому.
Класичний приклад програми«Привіт, світе!» (англ.«Hello, world!») на мовіС з використанням GTK+:
#include<config.h>#include<gtk/gtk.h>/* * Запускаємо головний цикл програми */staticvoidon_destroy(GtkWidget*widget,gpointerdata){gtk_main_quit();}intmain(intargc,char*argv[]){GtkWidget*window;GtkWidget*label;gtk_init(&argc,&argv);/* створюємо головне вікно */window=gtk_window_new(GTK_WINDOW_TOPLEVEL);/* задаємо границю для вікна розміром 20 пікселів */gtk_container_set_border_width(GTK_CONTAINER(window),20);/* задаємо вікну заголовок */gtk_window_set_title(GTK_WINDOW(window),PACKAGE" "VERSION);/* задаємо розміри вікна */gtk_window_set_default_size(GTK_WINDOW(window),200,50);/* Під'єднуємо подію "destroy" головного вікна до нашої функції on_destroy */g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(on_destroy),NULL);/* створюємо мітку "Привіт, світе!" */label=gtk_label_new("Hello, World");/* і додаємо її до головного вікна */gtk_container_add(GTK_CONTAINER(window),label);/* відобразити усі віджети */gtk_widget_show_all(window);/* запускаємо головний цикл */gtk_main();return0;}
Project Ridley має намір консолідувати розробку низки бібліотек, котрі є частиною GTK+, серед них: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel та gtkglext[5].