Команда GTK регулярно выпускает новые версии. [6] GTK 4 и GTK 3 поддерживаются, а срок действия GTK 2 истек . [7] GTK1 поддерживается независимо проектом CinePaint . [8]
Архитектура программного обеспечения
Инструментарий GTKУпрощенная программная архитектура GTK . Панго , ГДК , АТК , GIO , Каир и GLibGDK содержит серверные части для X11 , Wayland , Broadway ( HTTP ), Quartz и GDI и использует Cairo для рендеринга. Его новый SceneGraph находится в стадии разработки.
Библиотека GTK содержит набор графических элементов управления ( виджетов ); версия 3.22.16 содержит 186 активных и 36 устаревших виджетов. [9] GTK — объектно-ориентированный набор инструментов виджетов , написанный на языке программирования C ; для ориентации объекта он использует GObject , то есть объектную систему GLib . Хотя GTK в основном предназначен для оконных систем на базе X11 и Wayland , он работает и на других платформах, включая Microsoft Windows (с интерфейсом Windows API ) и macOS (с интерфейсом с Quartz ). Существует также серверная часть HTML5 под названием Broadway . [10] [11]
GTK можно настроить для изменения внешнего вида нарисованных виджетов; это делается с использованием различных механизмов отображения. Существует несколько механизмов отображения, которые пытаются имитировать внешний вид собственных виджетов на используемой платформе.
Начиная с версии 2.8, выпущенной в 2005 году, GTK начала переход на использование Cairo для рендеринга большинства своих графических элементов управления виджетами . [12] Начиная с версии GTK 3.0, весь рендеринг выполняется с использованием Cairo. [13]
26 января 2018 года на DevConf.cz Маттиас Класен представил обзор текущего состояния разработки GTK 4, включая подробное объяснение того, как рендеринг и ввод работали в GTK 3, какие изменения вносятся в GTK 4 (>3.90). ), и почему. [14] 6 февраля 2019 года было объявлено, что GTK 4 уберет «+» из названия проекта. [3]
Комплект чертежей GTK (GDK)
GDK действует как оболочка низкоуровневых функций , предоставляемых базовыми оконными и графическими системами.
Набор графов сцены GTK (GSK)
GSK — это API рендеринга и графа сцены для GTK. GSK находится между элементами графического управления (виджетами) и рендерингом. GSK был наконец объединен с GTK версии 3.90, выпущенной в марте 2017 года.
ГткИнспектор
GtkInspector был представлен в версии 3.14. [15] [16]
GtkInspector можно вызвать только после установки пакета разработки libgtk-3-dev/gtk+-devel.
Lazarus в Linux по умолчанию взаимодействует с GTK 2.
GtkBuilder
GtkBuilder позволяет разрабатывать пользовательские интерфейсы без написания кода. Интерфейс описывается в файле расширяемого языка разметки (XML), который затем загружается во время выполнения, и объекты создаются автоматически. Конструктор интерфейса Glade позволяет создавать пользовательский интерфейс в формате «что видишь, то и получаешь» ( WYSIWYG ). Описание пользовательского интерфейса не зависит от используемого языка программирования.
Приложения, созданные с использованием Gtk#, будут работать на многих платформах, включая Linux , Windows и macOS . Пакеты Mono для Windows включают GTK, Gtk# и собственную тему, благодаря которой приложения выглядят как собственные приложения Windows. Начиная с Mono 1.9, для запуска приложений Gtk# в macOS больше не требуется запуск сервера X11 . [21]
Помимо поддержки стандартного стека инструментов разработки GTK/GNOME, сборка gtk-dotnet.dll обеспечивает мост для использования функций, доступных в стеке .NET. На данный момент это включает в себя функциональность использования System.Drawing для рисования на виджете. [ нужна цитата ]
По состоянию на сентябрь 2020 года [обновлять]поддержка Gtk# для Gtk3 остается на стадии предварительного просмотра, и были созданы разветвленные проекты, такие как GtkSharp, для обеспечения полной поддержки Gtk3 для C# и других языков CLI. Отсутствие выпущенной версии Gtk# с поддержкой Gtk3 было названо причиной удаления медиаплеера Banshee из Ubuntu 12.04. [22]
Разработка
GTK в основном разрабатывается проектом GNOME Project , который также разрабатывает платформу разработки GNOME и среду рабочего стола GNOME. [23]
Разработка GTK контролируется слабо. Обсуждения в основном происходят в нескольких публичных списках рассылки. [24] Разработчики и пользователи GNOME собираются на ежегодной встрече Европейской конференции пользователей и разработчиков GNOME GUADEC , чтобы обсудить текущее состояние GNOME и будущее направление. [25] GNOME включает стандарты и программы с сайта freedesktop.org для лучшего взаимодействия с другими рабочими столами. [ нужна цитата ]
1 сентября 2016 года в блоге разработчиков GTK был опубликован пост, среди прочего, о будущей схеме нумерации GTK. [27] Версия GTK 3.22, выпущенная осенью 2016 года, планировалась как последняя версия 3.x, хотя осенью 2018 года последовала версия 3.24 с задержкой выпуска GTK 4. [28]
При разработке GTK 4 использовались названия версий 3.90, 3.92 и т. д., пока в декабре 2020 года не была выпущена первая стабильная версия GTK 4.0. [29] Несмотря на первую стабильную версию GTK 4, некоторые приложения, использующие GTK, по-прежнему используют GTK 2. Например, по состоянию на январь 2022 года GIMP все еще находится в разработке. портирован на GTK 3. [30]
С 14 августа 2017 года основная ветка GTK собиралась с помощью Meson , а системные файлы сборки Autotools были удалены. [31]
Критика
Наиболее распространенной критикой GTK является отсутствие обратной совместимости в основных обновлениях, особенно в интерфейсе прикладного программирования (API) [32] и темах. [33]
Нарушения совместимости между второстепенными выпусками в течение цикла разработки GTK 3.x были объяснены Бенджамином Отте из-за сильного давления на инновации, такие как предоставление функций, которые ожидают современные пользователи, и поддержка все более влиятельного протокола сервера отображения Wayland . С выпуском GTK 4 давление, вызванное необходимостью инноваций, будет снято, и баланс между стабильностью и инновациями сместится в сторону стабильности. [34] Аналогичным образом, недавние изменения в тематике специально предназначены для улучшения и стабилизации этой части API, а это означает, что некоторые инвестиции сейчас должны быть вознаграждены позже.
Дирк Хондел, соразработчик Subsurface и член Центра технологий открытого исходного кода Intel , раскритиковал разработчиков GTK за резкость и игнорирование большинства запросов сообщества. [35]
Хонг Джен Йи, разработчик LXDE (версия GTK которого была исключена и все усилия были сосредоточены на порте Qt ), выразила презрение к радикальному изменению API набора инструментов GTK в версии 3 и увеличению использования памяти и портировала файловый менеджер PCMan (PCManFM). в Qt . PCManFM разрабатывается с использованием GTK и Qt одновременно. [36]
Музыкальный проигрыватель Audacious перешел на Qt в версии 3.6. [37] В число причин, заявленных разработчиками, входит переход к оформлению окон на стороне клиента, из-за которого, по их утверждениям, приложение будет выглядеть « GNOME -ным и неуместным». [38]
Wireshark перешел на Qt из-за отсутствия хорошего опыта работы с кроссплатформенной поддержкой GTK. [39]
Использовать
Поддержка GTK для Wayland , а также дополнительные приложения, которые будут адаптированы для Wayland.Скриншот GIMP 2.8 — GTK отвечает за управление компонентами интерфейса программы, включая меню, кнопки и поля ввода.
Приложения
Некоторые известные приложения, использующие GTK в качестве набора виджетов, включают:
Программы GTK можно запускать в средах рабочего стола на базе X11 и Wayland или в оконных менеджерах, даже в тех, которые не созданы с использованием GTK, при условии, что установлены необходимые библиотеки; это включает macOS , если установлено X11.app . GTK также можно запускать в Microsoft Windows , где он используется некоторыми популярными кроссплатформенными приложениями, такими как Pidgin и GIMP . wxWidgets , кроссплатформенный набор инструментов с графическим интерфейсом, по умолчанию использует GTK в Linux. [40] Другие порты включают DirectFB (используется , например, установщиком Debian ) и ncurses . [41]
Для подсветки синтаксиса существует GtkSourceView, «виджет редактирования исходного кода». GtkSourceView поддерживается GNOME отдельно от GTK в виде библиотеки: gtksourceview. Есть планы переименовать в gsv. [ нужна цитата ]
GtkSpell
GtkSpell — это библиотека, отдельная от GTK. GtkSpell зависит от GTK и Enchant . Enchant — это оболочка для ispell, hunspell и т. д., реального механизма/программного обеспечения проверки орфографии . GtkSpell использует виджет GTK GtkTextView, чтобы выделить слова с ошибками и предложить замену.
История
Линукс
GTK изначально был разработан и использовался в программе GNU Image Manipulation Program (GIMP) в качестве замены набора инструментов Motif ; в какой-то момент Питер Мэттис разочаровался в Motif и начал писать свой собственный набор инструментов для графического пользовательского интерфейса, названный GIMP, и успешно заменил Motif версией GIMP 0.60. [42] Наконец, GTK был переписан, чтобы стать объектно-ориентированным , и был переименован в GTK+. [43] Впервые это было использовано в версии GIMP 0.99. Впоследствии GTK был принят для поддержки GNOME Foundation , который использует его в среде рабочего стола GNOME.
В серии выпусков GTK 2.0.0 представлены новые функции, в том числе улучшенный рендеринг текста с использованием Pango , новый движок тем , улучшенная доступность с помощью Accessibility Toolkit , переход на Unicode с использованием строк UTF-8 и более гибкий API. Начиная с версии 2.8, GTK 2 зависит от графической библиотеки Cairo для рендеринга векторной графики.
Версия GTK 3.0.0 включала переработанную обработку устройств ввода, поддержку тем, написанных с использованием синтаксиса, подобного CSS , и возможность получать информацию о других открытых приложениях GTK.
Знак «+» был исключен и теперь стал просто «GTK» в феврале 2019 года во время хакатона . [44]
macOS
Благодаря Quartz -backend [45] GTK доступен в macOS . [46]
Окна
После GTK 2.24.10 и 3.6.4 Разработка Windows с помощью установщика была закрыта Gnome. Установка MSYS2 в Windows — хороший способ использовать настоящий GTK. [47]
GTK 2.24.10 и 3.6.4 доступны в Интернете, но содержат много ошибок и ограничены по сравнению с реальными версиями. [48] [49]
Версия для 64-битной Windows подготовлена Томом Шунджансом с доступными версиями 2.24.33 (актуально похоже на Linux) и 3.24.24 (фактически похоже на Linux) с января 2021 года. [50]
Обновление Fall Creators Update для Windows 10 включает подсистему Windows для Linux (WSL). Благодаря дистрибутивам Linux, таким как Ubuntu или Debian, доступным в Microsoft Store, и X-серверу, такому как Xming или VcXsvr, тысячи программ, таких как GTK 2 или 3, могут работать с поддержкой X или терминала.
OpenVMS
HP заявила, что их целью было объединить необходимые изменения OpenVMS с потоком разработки GTK версии 1.3, однако этого так и не произошло. [51] Последней версией GTK для OpenVMS является версия 1.2.10. [52]
ГТК 4
Одним из кардинальных новшеств, реализованных в ходе цикла разработки GTK 4 (т. е. GTK 3.92 и т. д.), было удаление опций настройки для пользовательской стороны (например, отдельных сочетаний клавиш, которые можно было установить в GTK+ 2) и делегирование функциональности. во вспомогательные объекты вместо кодирования в базовые классы, предоставляемые GTK.
обработка событий из обработчиков сигналов, описанных GtkWidget, делегируется контроллерам событий.
рендеринг делегируется объектам GtkSnapshot
механизм макета из GtkWidget делегируется GtkLayoutManager
В январе 2018 года на DevConf.cz Маттиас Класен представил обзор текущего состояния разработки GTK 4, включая подробное объяснение того, как рендеринг и ввод работали в GTK 3, какие изменения были внесены в GTK 4 и причины. для этих изменений. Также были приведены примеры того, что стало возможным с GTK 4. [53]
^ «Ничего личного — Сайт разработки Crow Designer, GuiLoader и Rally — Хостинг проектов Google» . Архивировано из оригинала 24 января 2013 года . Проверено 17 февраля 2014 г.
^ Команда GTK+. «Языковые привязки GTK+». www.gtk.org . Архивировано из оригинала 25 мая 2019 года . Проверено 3 июня 2017 г.
^ ab «Gtk# — это привязка Mono/.NET к кроссплатформенному набору инструментов Gtk+ GUI и основа большинства приложений с графическим интерфейсом, созданных с помощью Mono: mono/gtk-sharp». 16 ноября 2019 г. – через GitHub.
^ «Загрузить Gtk#». Проект GTK+. Архивировано из оригинала 14 декабря 2013 года . Проверено 23 декабря 2014 г.
^ «В «Bansheegeddon» может появиться Banshee, Mono исключен из стандартного списка Ubuntu» . ITWorld . Архивировано из оригинала 10 июля 2015 года . Проверено 31 августа 2015 г.
^ «Быстрый SWOT-анализ GNOME» . Проект GNOME . Проверено 18 марта 2014 г.
^ «Списки рассылки GTK+ и GNOME» . Проект GNOME . Проверено 4 декабря 2011 г.
^ «О» . Европейская конференция пользователей и разработчиков GNOME ( GUADEC ). Архивировано из оригинала 4 октября 2011 года . Проверено 3 декабря 2011 г.
^ «Языки GNOME» . Охло . Программное обеспечение «Черная утка ». Проверено 22 мая 2014 г.
^ ab «Обещание версий и долгосрочной стабильности в GTK». Блог разработки GTK. 1 сентября 2016 г.
^ «GTK+ 3.24 предоставит некоторые новые функции во время ожидания GTK4» . www.phoronix.com .
^ «ГТК 4.0». Блог разработки GTK. 16 декабря 2020 г.
^ «Вышла разрабатываемая версия GIMP 2.99.2» . Новости Гимпа. 6 ноября 2020 г.
^ «Система сборки меняет главную ветку GTK» . mail.gnome.org .
^ «Как создать приложение Gtk+? - Мортен Велиндер» . blogs.gnome.org . 23 июня 2014 года . Проверено 3 июня 2017 г.
^ Макласен (20 ноября 2015 г.). «Обновление GTK+». Продолжается .
^ ab «GUADEC2013: Бенджамин Отте рассказывает о GTK+» . ГУАДЕК .
↑ Ларабель, Майкл (12 января 2014 г.). «Самая большая проблема с GTK и что хорошего в Qt». Фороникс . Проверено 10 сентября 2014 г.
^ Хонг Джен Йи (26 марта 2013 г.). «Выпущен PCManFM Qt 0.1.0» . Проверено 10 сентября 2014 г.
^ «GTK+ для среды выполнения Windows» . СоурсФордж . 15 сентября 2017 г.
^ "ГТК+". www.tarnyko.net .
^ «GTK+ для установщика среды выполнения Windows (ответвление от http://gtk-win.sourceforge.net): tschoonj/GTK-for-Windows-Runtime-Environment-Installer» . 19 ноября 2020 г. – через GitHub.
^ «Системы HP OpenVMS — GTK+» .
^ «Системы HP OpenVMS — GTK+» .
^ https://mclasen.fedorapeople.org/gtk4-devconf2018.pdf [ пустой URL-адрес PDF ]
↑ Амундсон, Шон Т. (13 апреля 1998 г.). «ОБЪЯВЛЕНИЕ: выпущен GTK+ 1.0.0!». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Амундсон, Шон Т. (25 февраля 1999 г.). «ОБЪЯВЛЕНИЕ: выпущены GTK+ и GLib 1.2.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Тейлор, Оуэн (11 марта 2002 г.). «Выпущен GTK+-2.0.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Тейлор, Оуэн (22 декабря 2002 г.). «Выпущен GTK+-2.2.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Тейлор, Оуэн (16 марта 2004 г.). «Выпущен GTK+-2.4.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (16 декабря 2004 г.). «Выпущен GTK+-2.6.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (13 августа 2005 г.). «Выпущен GTK+ 2.8.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (3 июля 2006 г.). «Выпущен GTK+ 2.10». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (14 сентября 2007 г.). «Выпущен GTK+ 2.12». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (4 сентября 2008 г.). «Выпущен GTK+ 2.14.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (13 марта 2009 г.). «Выпущен GTK+ 2.16.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (23 сентября 2009 г.). «Выпущен GTK+ 2.18.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (23 марта 2010 г.). «Выпущен GTK+ 2.20.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (23 сентября 2010 г.). «Выпущен GTK+ 2.22.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (20 января 2011 г.). «ГТК+ 2.24.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ «Теги · GNOME / gtk · GitLab» . ГитЛаб . 21 декабря 2020 г. Проверено 18 октября 2023 г.
^ Класен, Матиас (10 февраля 2011 г.). «Выпущен GTK+ 3.0.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ "Фестиваль взлома API тем Gtk+ 3.0" . Силиконовый остров . Проверено 3 июня 2017 г.
^ "Проект дорожной карты Gtk+ 3" . Проверено 3 июня 2017 г.
^ Класен, Матиас (25 сентября 2011 г.). «ГТК+ 3.2.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Класен, Матиас (26 марта 2012 г.). «Выпущен GTK+ 3.4.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (24 сентября 2012 г.). «Выпущен GTK+ 3.6.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (25 марта 2013 г.). «Выпущен GTK+ 3.8.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ «Кадровые часы: Справочное руководство GDK 3» . http://developer.gnome.org .
↑ Класен, Матиас (23 сентября 2013 г.). «Выпущен GTK+ 3.10.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ Класен, Матиас (25 марта 2014 г.). «GTK+ 3.12 выпущен». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ «Оформление клиентских тем в темах | Происходит» . 5 декабря 2013 г.
^ Класен, Матиас (22 сентября 2014 г.). «Выпущен GTK+ 3.14.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
↑ Матиас Класен (15 мая 2014 г.). «Запись в блоге автора GtkInspector» . Проверено 17 мая 2014 г.
^ «GtkInspector в вики GNOME». 15 мая 2014 года . Проверено 17 мая 2014 г.
^ «Объединение жестов в 3.14». 23 мая 2014 года . Проверено 23 мая 2014 г.
^ «RFC: жесты» . 4 марта 2014 года . Проверено 23 мая 2014 г.
^ "GTK+ 3.13.2". 27 мая 2014 г.
^ "gtk+ 3.13.3" . 24 июня 2014 г.
↑ Класен, Матиас (22 марта 2015 г.). «Выпущен GTK+ 3.16.0». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ онлайн, Heise (25 марта 2015 г.). «Linux-Desktop: Neues Gnome zeigt Nachrichten oben». Хайз онлайн . Проверено 3 июня 2017 г.
^ «Выпущен GTK+ 3.16.0» . mail.gnome.org . Проверено 3 июня 2017 г.
↑ Нестор, Мариус (24 сентября 2015 г.). «GTK+ 3.18.0 официально выпущен как часть среды рабочего стола GNOME 3.18» . Софтпедия . Проверено 25 мая 2019 г.
^ Класен, Матиас (21 марта 2016 г.). «ГТК+ 3.20». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.
^ «GTK+ 3.20 – Классы стилей и имена элементов» . 20 ноября 2015 г.
↑ Класен, Матиас (21 сентября 2016 г.). «Выпущен GTK+ 3.22». Почтовые службы GNOME (список рассылки) . Проверено 20 мая 2019 г.