GTK

Перейти к навигацииПерейти к поиску
GTK
Логотип программы GTK
Скриншот программы GTK
Типфреймворк приложения[вд] и библиотека виджетов[вд]
АвторыThe GTK+ Team,
первоначальные авторы:
Peter Mattis,
Spencer Kimball,
Josh MacDonald[1]
РазработчикиGNOME Foundation и Проект GNU[3]
Написана наСи[4]
Операционные системы GNU/Linux, macOS, Unix-подобная операционная система, Windows и Linux
Первый выпуск14 апреля 1998
Аппаратная платформа кроссплатформенность
Последняя версия
Репозиторийgitlab.gnome.org/GNOME/g…
Состояние активное
ЛицензияLGPL-2.1[вд][5][6]
Сайтgtk.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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

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

История

Номер версии Дата выхода версии Значительные изменения Последняя минорная версия
1.0 14 апреля 1998 годаПервая стабильная версия 1.0.6
1.2 27 февраля 1999 годаНовые виджеты (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,
GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket)
1.2.10
2.0 11 марта 2002 годаGObject, Universal Unicode UTF-8 2.0.9
2.2 22 декабря 2002 годаMultihead support 2.2.4
2.4 16 марта 2004 годаНовые виджеты (GtkFileChooser, GtkComboBox, GtkComboBoxEntry,
GtkExpander, GtkFontButton, GtkColorButton)
2.4.14
2.6 16 декабря 2004 годаНовые виджеты (GtkIconView, GtkAboutDialog, GtkCellView);
это последний выпуск, поддерживающий Windows 98/ME
2.6.10
2.8 13 августа 2005 годаИнтеграция Cairo2.8.20
2.10 3 июля 2006 годаНовые виджеты (GtkStatusIcon, GtkAssistant, GtkLinkButton,
GtkRecentChooser) и поддержка печати (GtkPrintOperation)
2.10.14
2.12 14 сентября 2007 годаGtkBuilder 2.12.12
2.14 4 сентября 2008 годаПоддержка загрузки JPEG 20002.14.7
2.16 13 марта 2009 годаНовый GtkOrientable,
в поле ввода пароля показывается предупреждение при включённом Caps Lock,
улучшения в GtkScale, GtkStatusIcon, GtkFileChooser.
2.16.6
2.18 23 сентября 2009 годаНовый GtkInfoBar. Улучшения в диалоге выбора файла, печати.
GDK был переписан для использования 'client-side windows'
2.18.9
2.20 23 марта 2010 годаНовый GtkSpinner и GtkToolPalette, GtkOffscreenWindow.
Улучшения в диалоге выбора файла, работе с клавиатурой, GDK.
Включены данные интроспекции GObject
2.20.1
2.22 23 сентября 2010 годаgdk-pixbuf выделен в отдельный модуль,
большинство функций отрисовки теперь выполняет Cairo
2.22.1
2.24 30 января 2011 годаНовый упрощённый ComboBox-виджет (GtkComboBoxText),
CUPS-бэкенд печати может отправлять задания в PDF,
GtkBuilder получил поддержку текстовых тегов,
внесено множество исправлений в символы интроспекции
2.24.0
3.0 10 февраля 2011 годаЗа отрисовку теперь полностью отвечает Cairo, абстракция от X11,
использование XInput2, поддержка CSS-подобных тем оформления
3.0.12
3.2 25 сентября 2011 годаНовые экспериментальные бэкэнды Wayland и HTML5, новый диалог выбора шрифта,
новые виджеты: GtkLockButton и GtkOverlay
3.2.4
3.426 марта 2012 годаПоддержка сенсорных дисплеев, в том числе мультитач,
поддержка режима плавной прокрутки, улучшена поддержка Windows, MacOS X,
расширен API для формирования визуальных тем
3.4.4
3.624 сентября 2012 годаНовые виджеты: GtkSearchEntry, GtkMenuButton, GtkLevelBar.
Кнопки ввода чисел GtkSpinButton теперь могут быть расположены вертикально.
Поддержка CSS-анимации, использования размытых теней.
3.6.5
3.813 мая 2013 годаПоддержка Wayland 1.0, переработка GDK-бэкенда Broadway, улучшены темы оформления и управление геометрией.
Добавлена поддержка всплывающих окон, проведена обширная работа по увеличению производительности
3.8.9
3.1023 сентября 2013 годаНовые виджеты (GtkHeaderBar, GtkPlacesSidebar, GtkStack, GtkStackSwitcher, GtkRevealer, GtkSearchBar, GtkListBox).
Поддержка Wayland 1.2 (maximization, animated cursors, multiple monitors, settings, custom surfaces and frame synchronization)
3.10.9
3.1225 марта 2014 годаПоддержка Wayland 1.5; Новые виджеты (Popover, GtkActionBar, GtkFlowBox). Улучшена поддержка глобального меню в OS X. 3.12.2
3.1422 сентября 2014 годаПоддержка Wayland 1.6; Интеграция интерактивного отладчика GtkInspector. Прекращена поддержка виджетов GdkColor, GtkMisc, GtkArrow, GtkStatusIcon, GtkNumerableIcon, GtkThemingEngine. 3.14.6
3.1622 марта 2015 годаGDK встроена поддержка отрисовки окон через OpenGL для X11 и Wayland через libepoxy с использованием GLX или EGL, новые виджеты (GtkGLArea, GtkStackSidebar, GtkModelButton, GtkPopoverMenu), Экспериментальная поддержка Mir. 3.16.0
3.1822 ноября 2015 годаОбновился дизайн выбора файла, Удалена поддержка Windows XP 3.18.5
3.2021 марта 2016 годаРеализована система узлов CSS (CSS nodes), новый виджет GtkShortcutsWindow3.20.3 (недоступная ссылка)
3.2220 сентября 2016 годаДобавлен API GtkPadController для обработки жестов с планшетов, новый виджет GtkShortcutLabel, интегрирована технология Flatpak 3.22.0
4.016 декабря 2020 года[9]Выпуск графического тулкита GTK 4.04.0.3
4.230 марта 2021 года[10]Выпуск графического тулкита GTK 4.24.2.1
4.423 августа 2021 года[11]Выпуск графического тулкита GTK 4.44.4.0
4.630 декабря 2021 года[12]Доступен графический тулкит GTK 4.64.6.2

Архитектура

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

Язык Название Поддержка
AdaGtkAda Частичная поддержка до 2.18
CGTK+ Встроена
C++gtkmmДа
C# и другие языки
программирования
платформы .NET
Gtk#Частичная поддержка до 2.20
DgtkDПоддержка GTK2 была gtkD-1.7.4, после - GTK3 (плюс Cairo, Gda, Gl, GStreamer)
ErlanggtkNodeЧастичная поддержка до 2.16
Fortrangtk-fortran Частичная поддержка до 2.24 / 3.0
Gogo-gtk Частичная поддержка (33%)[14]
GOBязыки, написанные для системы GObject. Да
Genieязыки, написанные для системы GObject. Да
Haskellgtk2hs Да
FreeBASICGTK+tobac2 Частичная поддержка до 2.22: Поддерживается также GTK3
Free Pascal(header) integrated into the core distribution GTK 2.16 с частичной поддержкой поздних версий
Javajava-gnomeЧастичная поддержка до 2.20 (недоступна на Windows)
JavaScriptseed/GJSДа
Lualgob Поддерживает все версии, начиная с 2.16
Lispcl-cffi-gtk
LuaLuaGtk Частичная поддержка до 2.16
Node.jsnode-gtk Да
OCamlLablGTK Частичная поддержка до 2.16
Perlperl-Gtk3 Да
PHPPHP-GTKЧастичная поддержка до 2.20
PureBasicGtk2 Да
PythonGObject-интроспекция через PyGI, ранее PyGTKДа
RRGtk2Частичная поддержка до 2.12
Rubyruby-gtk2Да
SmalltalkSmalltalk GTK GNU Smalltalk, Smalltalk YX, Squeak
TclGnocl Да
Valaязыки, написанные для системы GObject. Да
The GTK toolkit

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

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

Внешний вид

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

Использование

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

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

Ниже предоставлен неполный (так как 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+
Приложения, использующие 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», проходившем в Дублине[16]. Первый набросок плана разработки был опубликован 9 апреля 2009[17].

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`

См. также

Интерфейсы для других языков программирования

Примечания

  1. См. файл AUTHORS в архиве с исходными кодами GTK+.
  2. 4.16.2 — 2024.
  3. http://directory.fsf.org/wiki/gtk+
  4. The gtk Open Source Project on Open Hub: Languages Page — 2006.
  5. A Bibliographic Scan of Digital Scholarly Communication Infrastructure (англ.)Educopia Institute, 2020.
  6. Overview of GTK+ and its Libraries (англ.)
  7. Проект GTK+ объявил о переименовании в GTK. Дата обращения: 10 апреля 2019. Архивировано 8 февраля 2019 года.
  8. 1 2 GTK+ 2.18.0 released (англ.). Дата обращения: 23 сентября 2009. Архивировано из оригинала 23 августа 2011 года.
  9. gtk 4.0.0. Дата обращения: 27 октября 2021. Архивировано 28 октября 2021 года.
  10. gtk 4.2.0. Дата обращения: 27 октября 2021. Архивировано 27 октября 2021 года.
  11. gtk 4.4.0. Дата обращения: 27 октября 2021. Архивировано 24 августа 2021 года.
  12. gtk 4.6.0. Дата обращения: 31 марта 2022. Архивировано 23 января 2022 года.
  13. GTK tutorial. Дата обращения: 9 августа 2011. Архивировано из оригинала 22 августа 2011 года.
  14. Go-GTK. mattn.github.io. Дата обращения: 20 ноября 2016. Архивировано 27 ноября 2016 года.
  15. GtkSharp — Mono. Дата обращения: 7 мая 2010. Архивировано 26 января 2021 года.
  16. Анонс «GTK+ Theming Hackfest». Дата обращения: 25 апреля 2009. Архивировано 17 июля 2011 года.
  17. План работ Gtk+ 3.0. Дата обращения: 25 апреля 2009. Архивировано 12 апреля 2009 года.

Ссылки