Loading AI tools
кроссплатформенная библиотека элементов интерфейса (фреймворк) Из Википедии, свободной энциклопедии
GTK (ранее GTK+[7]; сокращение от GIMP ToolKit) — кроссплатформенная библиотека элементов интерфейса (фреймворк), имеет простой в использовании API, наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для Wayland и X Window System.
GTK | |
---|---|
Тип | фреймворк приложения[вд] и библиотека виджетов[вд] |
Авторы |
The GTK+ Team, первоначальные авторы: Peter Mattis, Spencer Kimball, Josh MacDonald[1] |
Разработчики | GNOME Foundation и Проект GNU[2] |
Написана на | Си[3] |
Операционные системы | GNU/Linux, macOS, Unix-подобная операционная система, Windows и Linux |
Первый выпуск | 14 апреля 1998 |
Аппаратная платформа | кроссплатформенность |
Последняя версия | |
Репозиторий | gitlab.gnome.org/GNOME/g… |
Состояние | активное |
Лицензия | LGPL-2.1[вд][5][6] |
Сайт | gtk.org (англ.) |
Медиафайлы на Викискладе |
Будучи изначально частью графического редактора 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+
Оконные менеджеры, использующие GTK+
Приложения, использующие GTK+
В 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`
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.