GTK

GTK (ранее GTK+; сокращение от GIMP ToolKit) — кроссплатформенная библиотека элементов интерфейса (фреймворк), имеет простой в использовании API, наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для Wayland и X Window System.

Будучи изначально частью графического редактора GIMP, она развилась в отдельный проект и приобрела заметную популярность. GTK — свободное ПО, распространяемое на условиях GNU LGPL, позволяющей создавать как свободное, так и проприетарное программное обеспечение с использованием библиотеки. GTK является официальной библиотекой для создания графического интерфейса проекта GNU.

История

Архитектура 

GTK+ написана на языке Си, но тем не менее, является объектно-ориентированной. Одной из причин для выбора Си в качестве языка было желание легко строить интерфейсы для других языков программирования.
В результате под GTK+ можно писать на следующих языках программирования:

Собственно GTK+ состоит из двух компонентов: GTK и GDK. Первый содержит набор элементов пользовательского интерфейса, или «виджетов» (таких, как кнопка, список, поле для ввода текста ) для различных задач. GDK отвечает за вывод на экран и может использовать для этого X Window System, Wayland, Linux Framebuffer, WinAPI или функции Mac OS X. Начиная с версии 2.8, GDK во многом (но не полностью) заменена на систему отрисовки векторной графики Cairo.

Помимо Cairo, GTK+ зависит от трёх библиотек — GLib, Pango и ATK, — которые разрабатываются вместе с GTK+, но могут использоваться и отдельно.

Внешний вид 
Внешний вид графических интерфейсов, созданных с использованием GTK+, может конфигурироваться пользователем и/или программистом. При этом настраиваются не только цвета и шрифты, но и способ отображения различных элементов. Достигается это за счёт использования «движков» для вывода на экран. Путём подключения другого движка можно кардинальным образом менять внешний вид программ. Например, некоторые движки могут использовать псевдотрёхмерный вид, другие — более «плоский»

Использование 
На основе GTK+ построены рабочие окружения GNOME и Xfce. Программы, использующие GTK+, могут выполняться в других окружениях, например в KDE и LXQt.  Кроме того, GTK+ может работать и на операционных системах семейств Microsoft Windows и Mac OS X.

Также GTK+ выбран в качестве основной библиотеки построения пользовательских интерфейсов для Mono (порта Microsoft.NET для Linux).

Ниже предоставлен неполный (так как GTK слишком популярен) список проектов с использованием GTK:

 Рабочие окружения, которые используют GTK+
 GNOME — полностью построено на GTK+
 Cinnamon — форк GNOME 3, использующий GTK+
 MATE Desktop (форк GNOME 2) — полностью построено на GTK+
 Xfce — построено на GTK+, но, в сравнении с GNOME, программы Xfce имеют меньше зависимостей
 LXDE (Lightweight X11 Desktop Environment) — поддерживает только темы и программы GTK, сам строится на Qt
 ROX Desktop
 GPE Palmtop Environment
 Access Linux Platform
 Sugar — обучающая платформа, которая построена на GTK+ с использованием PyGTK
 KDE, хотя использует Qt, имеет поддержку программ и тем GTK+ (с версии 4.2).

 Оконные менеджеры, использующие GTK+
 Aewm
 AfterStep
 Amaterus
 IceWM
 Metacity
 Marco (форк Metacity в MATE)
 Mutter
 Sawfish
 Wmg
 Xfwm.

Приложения, использующие GTK+
 AbiWord — текстовый редактор
 Anjuta — официальная интегрированная среда разработки GNOME
 Chromium — веб-браузер, разрабатываемый в основном компанией Google и использующий WebKit
 Ekiga — приложения для VoIP и видео-конференций
 Epiphany — веб-браузер среды GNOME.
 Evolution — программа для управления контактами и электронной почтой
 Firefox — стандартный браузер большинства Gnome-редакций дистрибутивов Linux
 GIMP — растровый графический редактор
 HandBrake — программа для конвертирования видео
 Inkscape — векторный графический редактор
 Midori — легковесный веб-браузер
 MonoDevelop — открытая интегрированная среда разработки
 Pidgin — клиент обмена мгновенными сообщениями
 Wireshark — анализатор сетевых пакетов
 SciTE — кроссплатформенный текстовый редактор

GTK+ 3.0 
В GTK версии 3.0.0 пересмотрена обработка устройств ввода, включена поддержка для тем, написанных с CSS-подобным синтаксисом, а также появилась возможность получать информацию от других открытых GTK приложений.

Разработка следующей версии GTK+ началась в феврале 2009 на мероприятии «GTK+ Theming Hackfest», проходившем в Дублине. Первый набросок плана разработки был опубликован 9 апреля 2009.

10 февраля 2011 года состоялся релиз GTK+ 3.0.0.

Пример программы 
Простая программа «Здравствуй, мир!» на GTK+ в Linux
/* Подключаем библиотеку GTK+ */
# include <gtk/gtk.h>
int main( int argc, char *argv[])
{
	/* Объявляем виджеты */
	GtkWidget *label;	// Метка
	GtkWidget *window;	// Главное окно
	/* Инициализируем GTK+ */
	gtk_init(&argc, &argv);
	/* Создаем главное окно */
	window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
	/* Устанавливаем заголовок окна "Здравствуй, мир!" */
	gtk_window_set_title(GTK_WINDOW(window), "Здравствуй, мир!");
	/* Создаем метку с текстом "Здравствуй, мир!" */
	label = gtk_label_new("Здравствуй, мир!");
	/* Вставляем метку в главное окно */
	gtk_container_add(GTK_CONTAINER(window), label);
	/* Показываем окно вместе с виджетами */
	gtk_widget_show_all(window);
	/* Соединяем сигнал завершения с выходом из программы */
	g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
	/* Приложение переходит в вечный цикл ожидания действий пользователя */
	gtk_main();
	return 0;
}

Чтобы скомпилировать пример, нужно выполнить команду:

 gcc file_name.c -o file_name `pkg-config --cflags --libs gtk+-3.0`

В Windows скомпилировать пример при помощи MinGW можно следующей командой:

 i686-pc-mingw32-gcc file_name.c `PKG_CONFIG_LIBDIR=yes PKG_CONFIG_PATH=/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig/ pkg-config --cflags --libs gtk+-3.0`

См. также 
 GNOME
 MATE
 Xfce
 Qt
 wxWidgets
 FLTK

Интерфейсы для других языков программирования 
 gtkmm (C++)
 GtkD (D)
 PyGTK (Python)
 Gtk2-perl (Perl)
 PHP-GTK (PHP)
 CL-GTK2 (Common Lisp)
 Привязки для Vala (Vala)
 Gtk2Hs или gi-gtk (Haskell)

Примечания

Ссылки 

 GTK+ — The GIMP Toolkit — официальный сайт GTK+.
 GTK+ 2.0 Tutorial — официальный учебник по GTK+ 2.0.
 GTK+ 2.0 Tutorial — официальный учебник по GTK+ 2.0.
 GTK+ 2.10 Справочное описание

Программное обеспечение проекта GNU
Библиотеки на основе X
Библиотеки виджетов
Свободные библиотеки программ
Свободное кроссплатформенное программное обеспечение
Программное обеспечение для macOS
Программное обеспечение для Windows
Программное обеспечение для Linux
Программное обеспечение для OpenSolaris
Программное обеспечение с лицензией GNU LGPL
Свободное программное обеспечение, написанное на Си
GNU