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 года | ИнтеграцияCairo | 2.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 2000 | 2.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.4 | 26 марта2012 года | Поддержка сенсорных дисплеев, в том числе мультитач, поддержка режима плавной прокрутки, улучшена поддержка Windows, MacOS X, расширенAPI для формирования визуальных тем | 3.4.4 |
3.6 | 24 сентября2012 года | Новые виджеты: GtkSearchEntry, GtkMenuButton, GtkLevelBar. Кнопки ввода чисел GtkSpinButton теперь могут быть расположены вертикально. Поддержка CSS-анимации, использования размытых теней. | 3.6.5 |
3.8 | 13 мая2013 года | Поддержка Wayland 1.0, переработка GDK-бэкенда Broadway, улучшены темы оформления и управление геометрией. Добавлена поддержка всплывающих окон, проведена обширная работа по увеличению производительности | 3.8.9 |
3.10 | 23 сентября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.12 | 25 марта2014 года | Поддержка Wayland 1.5; Новые виджеты (Popover, GtkActionBar, GtkFlowBox). Улучшена поддержка глобального меню вOS X. | 3.12.2 |
3.14 | 22 сентября2014 года | Поддержка Wayland 1.6; Интеграция интерактивного отладчика GtkInspector. Прекращена поддержка виджетов GdkColor, GtkMisc, GtkArrow, GtkStatusIcon, GtkNumerableIcon, GtkThemingEngine. | 3.14.6 |
3.16 | 22 марта2015 года | GDK встроена поддержка отрисовки окон через OpenGL для X11 и Wayland через libepoxy с использованием GLX или EGL, новые виджеты (GtkGLArea, GtkStackSidebar, GtkModelButton, GtkPopoverMenu), Экспериментальная поддержкаMir. | 3.16.0 |
3.18 | 22 ноября2015 года | Обновился дизайн выбора файла, Удалена поддержка Windows XP | 3.18.5 |
3.20 | 21 марта2016 года | Реализована система узлов CSS (CSS nodes), новый виджетGtkShortcutsWindow | 3.20.3 (недоступная ссылка) |
3.22 | 20 сентября2016 года | Добавлен API GtkPadController для обработки жестов с планшетов, новый виджет GtkShortcutLabel, интегрирована технология Flatpak | 3.22.0 |
4.0 | 16 декабря2020 года[9] | Выпуск графического тулкита GTK 4.0 | 4.0.3 |
4.2 | 30 марта2021 года[10] | Выпуск графического тулкита GTK 4.2 | 4.2.1 |
4.4 | 23 августа2021 года[11] | Выпуск графического тулкита GTK 4.4 | 4.4.0 |
4.6 | 30 декабря2021 года[12] | Доступен графический тулкит GTK 4.6 | 4.6.2 |
Архитектура
[править |править код]GTK+ написана наязыке Си, но тем не менее, являетсяобъектно-ориентированной[13]. Одной из причин для выбора Си в качестве языка было желание легко строитьинтерфейсы для другихязыков программирования.В результате под GTK+ можно писать на следующих языках программирования:
Язык | Название | Поддержка |
---|---|---|
Ada | GtkAda | Частичная поддержка до 2.18 |
C | GTK+ | Встроена |
C++ | gtkmm | Да |
C# и другие языки программирования платформы.NET | Gtk# | Частичная поддержка до 2.20 |
D | gtkD | Поддержка GTK2 была gtkD-1.7.4, после - GTK3 (плюсCairo,Gda,Gl,GStreamer) |
Erlang | gtkNode | Частичная поддержка до 2.16 |
Fortran | gtk-fortran | Частичная поддержка до 2.24 / 3.0 |
Go | go-gtk | Частичная поддержка (33%)[14] |
GOB | языки, написанные для системыGObject. | Да |
Genie | языки, написанные для системыGObject. | Да |
Haskell | gtk2hs | Да |
FreeBASIC | GTK+tobac2 | Частичная поддержка до 2.22: Поддерживается также GTK3 |
Free Pascal | (header) integrated into the core distribution | GTK 2.16 с частичной поддержкой поздних версий |
Java | java-gnome | Частичная поддержка до 2.20 (недоступна на Windows) |
JavaScript | seed/GJS | Да |
Lua | lgob | Поддерживает все версии, начиная с 2.16 |
Lisp | cl-cffi-gtk | |
Lua | LuaGtk | Частичная поддержка до 2.16 |
Node.js | node-gtk | Да |
OCaml | LablGTK | Частичная поддержка до 2.16 |
Perl | perl-Gtk3 | Да |
PHP | PHP-GTK | Частичная поддержка до 2.20 |
PureBasic | Gtk2 | Да |
Python | GObject-интроспекция черезPyGI, ранееPyGTK | Да |
R | RGtk2 | Частичная поддержка до 2.12 |
Ruby | ruby-gtk2 | Да |
Smalltalk | Smalltalk GTK | GNU Smalltalk,Smalltalk YX,Squeak |
Tcl | Gnocl | Да |
Vala | языки, написанные для системыGObject. | Да |

Собственно 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>intmain(intargc,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();return0;}
Чтобы скомпилировать пример, нужно выполнить команду:
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`
См. также
[править |править код]Интерфейсы для других языков программирования
[править |править код]- gtkmm (C++)
- GtkD (D)
- PyGTK (Python)
- Gtk2-perl (Perl)
- PHP-GTK (PHP)
- CL-GTK2 (Common Lisp)
- Привязки для Vala (Vala)
- Gtk2Hs или gi-gtk (Haskell)
Примечания
[править |править код]- ↑См. файлAUTHORS в архиве с исходными кодамиGTK+.
- ↑4.18.2 — 2025.
- ↑http://directory.fsf.org/wiki/gtk+
- ↑The gtk Open Source Project on Open Hub: Languages Page — 2006.
- ↑Free Software Directory
- ↑Overview of GTK+ and its Libraries (англ.)
- ↑Проект GTK+ объявил о переименовании в GTK (неопр.). Дата обращения: 10 апреля 2019. Архивировано 8 февраля 2019 года.
- ↑12GTK+ 2.18.0 released (англ.). Дата обращения: 23 сентября 2009. Архивировано изоригинала 23 августа 2011 года.
- ↑gtk 4.0.0 (неопр.). Дата обращения: 27 октября 2021. Архивировано 28 октября 2021 года.
- ↑gtk 4.2.0 (неопр.). Дата обращения: 27 октября 2021. Архивировано 27 октября 2021 года.
- ↑gtk 4.4.0 (неопр.). Дата обращения: 27 октября 2021. Архивировано 24 августа 2021 года.
- ↑gtk 4.6.0 (неопр.). Дата обращения: 31 марта 2022. Архивировано 23 января 2022 года.
- ↑GTK tutorial (неопр.). Дата обращения: 9 августа 2011. Архивировано изоригинала 22 августа 2011 года.
- ↑Go-GTK (неопр.). mattn.github.io. Дата обращения: 20 ноября 2016. Архивировано 27 ноября 2016 года.
- ↑GtkSharp — Mono (неопр.). Дата обращения: 7 мая 2010. Архивировано 26 января 2021 года.
- ↑Анонс «GTK+ Theming Hackfest» (неопр.). Дата обращения: 25 апреля 2009. Архивировано 17 июля 2011 года.
- ↑План работ Gtk+ 3.0 (неопр.). Дата обращения: 25 апреля 2009. Архивировано 12 апреля 2009 года.
Ссылки
[править |править код]- GTK+ — The GIMP Toolkit (англ.) — официальный сайт GTK+.
- GTK+ 2.0 Tutorial (англ.) — официальный учебник по GTK+ 2.0.
- GTK+ 2.0 Tutorial (рус.) — официальный учебник по GTK+ 2.0.
- GTK+ 2.10 Справочное описание (рус.)
- Программное обеспечение по алфавиту
- Программное обеспечение, разработанное в 1998 году
- GTK+
- Программное обеспечение проекта GNU
- Библиотеки на основе X
- Библиотеки виджетов
- Свободные библиотеки программ
- Свободное кроссплатформенное программное обеспечение
- Программное обеспечение для macOS
- Программное обеспечение для Windows
- Программное обеспечение для Linux
- Программное обеспечение для OpenSolaris
- Программное обеспечение с лицензией GNU LGPL
- Свободное программное обеспечение, написанное на Си
- GNU
- Страницы, использующие устаревший тег source
- Википедия:Cite web (не указан язык)
- Википедия:Cite web (заменить webcitation-архив: deadlink yes)
- Википедия:Статьи с источниками из Викиданных
- ПРО:ИТ:Статьи по алфавиту
- ПРО:ИТ:Последняя правка: в прошлом году
- Википедия:Статьи с нерабочими ссылками
- Статьи со ссылками на Викисклад
- Статьи со ссылками на портал