Открыть сервис

GTK+

GTK+ (GIMP Toolkit) — это кроссплатформенная свободная библиотека виджетов для создания графического интерфейса пользователя (GUI). Она является одной из двух наиболее популярных библиотек для разработки приложений в среде рабочего стола GNOME и используется в широком спектре программного обеспечения, от небольших утилит до сложных интегрированных сред разработки. Изначально созданная для растрового графического редактора GIMP, GTK+ впоследствии стала самостоятельным проектом, развиваемым сообществом разработчиков под эгидой GNOME Foundation.

История

Создание и ранние версии (1996—2002)

Разработка GTK+ началась в 1996 году как часть проекта GIMP (GNU Image Manipulation Program). Создатели GIMP, Спенсер Кимболл, Питер Маттис и Джош Макдональд, нуждались в кроссплатформенной библиотеке для создания графического интерфейса, которая была бы свободной и не требовала использования коммерческих инструментов, таких как Motif. Первая версия, GTK+ 1.0, была выпущена в апреле 1998 года. Она была написана на языке C и использовала объектно-ориентированную систему на основе GObject, которая позволяла создавать классы и наследование без использования C++.

В 1999 году началась работа над GTK+ 2.0, которая была выпущена в марте 2002 года. Эта версия принесла значительные улучшения: поддержку Unicode (через Pango), новую систему тем оформления, улучшенную работу с текстом и более гибкую архитектуру. GTK+ 2.0 стала основой для GNOME 2 и на протяжении многих лет оставалась стабильной и широко используемой платформой.

GTK+ 3.x (2011—2020)

В апреле 2011 года вышла GTK+ 3.0. Эта версия была направлена на модернизацию библиотеки: была введена поддержка аппаратного ускорения через OpenGL (через GDK), улучшена система тем оформления (CSS-подобные темы), добавлена поддержка сенсорных экранов и жестов. Однако переход на GTK+ 3 был сопряжён с трудностями: многие приложения, написанные для GTK+ 2, требовали значительной переработки, что замедлило миграцию. В 2016 году вышла GTK+ 3.20, которая стала важным этапом в стабилизации API и улучшении производительности.

GTK 4 (с 2021 года)

В декабре 2021 года была выпущена версия GTK 4 (название было сокращено с GTK+ до GTK). Эта версия представляет собой значительный пересмотр архитектуры: она отказалась от поддержки X11 в пользу Wayland (хотя X11 по-прежнему поддерживается через бэкенд), полностью перешла на рендеринг через OpenGL, улучшила систему виджетов и ввела новую систему событий. GTK 4 также включает в себя библиотеку libadwaita, которая предоставляет виджеты, соответствующие руководству по дизайну GNOME 4. На момент 2024 года GTK 4 является основной версией для разработки новых приложений под GNOME.

Архитектура и компоненты

GTK+ состоит из нескольких ключевых библиотек, которые работают совместно:

  • GLib — низкоуровневая библиотека, предоставляющая основные типы данных, управление памятью, потоки, очереди сообщений и функции для работы с файловой системой. GLib является фундаментом для всех остальных компонентов GTK+.
  • GObject — объектно-ориентированная система, реализованная на C. Она позволяет создавать классы, наследование, сигналы и свойства. GObject используется не только в GTK+, но и в других проектах GNOME, таких как GStreamer.
  • Pango — библиотека для отображения текста с поддержкой Unicode, разных языков, шрифтов и направлений письма (слева направо, справа налево). Pango отвечает за разметку текста, расстановку переносов и кернинг.
  • Cairo — библиотека для 2D-графики, используемая для рендеринга виджетов. Cairo поддерживает различные бэкенды: X11, Wayland, Windows, macOS, а также программный рендеринг.
  • GDK (GIMP Drawing Kit) — абстрактный слой для работы с оконной системой и графическим оборудованием. GDK предоставляет функции для создания окон, обработки событий (мышь, клавиатура, сенсор) и работы с буферами кадров.
  • GTK — основная библиотека виджетов, содержащая классы для кнопок, меток, полей ввода, списков, деревьев, диалоговых окон, меню и других элементов интерфейса.

Классификация и виды

GTK+ можно классифицировать по нескольким критериям:

По версии

  • GTK+ 2.x — устаревшая версия, но до сих пор используется в некоторых старых приложениях. Поддержка прекращена в 2021 году.
  • GTK+ 3.x — стабильная версия, используемая в большинстве текущих приложений GNOME. Поддержка продолжается, но новые разработки рекомендуются для GTK 4.
  • GTK 4.x — актуальная версия, ориентированная на будущее. Включает в себя libadwaita для приложений GNOME.

По языку программирования

Хотя GTK+ написан на C, существуют биндинги (привязки) для многих языков программирования:

  • C++ — библиотека gtkmm.
  • Python — библиотека PyGObject (PyGTK для GTK+ 2, PyGObject для GTK+ 3 и GTK 4).
  • JavaScript — библиотека GJS (GNOME JavaScript).
  • Rust — библиотека gtk-rs.
  • Vala — язык, разработанный специально для GNOME, который компилируется в C и использует GObject напрямую.
  • C# — библиотека Gtk# (часть Mono).

По среде рабочего стола

  • GNOME — основная среда, для которой GTK+ является стандартной библиотекой.
  • Xfce — использует GTK+ 3, но имеет собственную библиотеку виджетов (libxfce4ui).
  • LXDE — исторически использовала GTK+ 2, но в версии LXQt перешла на Qt.
  • MATE — форк GNOME 2, использует GTK+ 3.
  • Cinnamon — использует GTK+ 3, но имеет собственные виджеты и расширения.

Применение

GTK+ используется в огромном количестве программного обеспечения, особенно в среде Linux. Примеры известных приложений:

  • GIMPрастровый графический редактор, для которого GTK+ изначально и создавался.
  • Inkscape — векторный графический редактор.
  • Gedit — текстовый редактор для GNOME.
  • Evince — просмотрщик документов (PDF, DjVu, PostScript).
  • Rhythmbox — музыкальный проигрыватель.
  • Pidgin — клиент мгновенных сообщений.
  • Wireshark — анализатор сетевого трафика (использует GTK+ 3).
  • VirtualBox — программа для виртуализации (использует Qt, но имеет GTK+-интерфейс в некоторых версиях).
  • Audacity — аудиоредактор (использует wxWidgets, но имеет GTK+-подобный интерфейс).

Критика

GTK+ подвергается критике по нескольким направлениям:

  • Сложность миграции между версиями. Переход с GTK+ 2 на GTK+ 3, а затем на GTK 4, потребовал значительных усилий от разработчиков, что привело к фрагментации экосистемы.
  • Несовместимость API. Каждая новая версия часто ломает обратную совместимость, что затрудняет поддержку старых приложений.
  • Производительность. Некоторые версии GTK+ (особенно 3.x) критикуются за более высокое потребление памяти и медленную работу по сравнению с Qt или wxWidgets, особенно на слабом оборудовании.
  • Зависимость от GNOME. Развитие GTK+ тесно связано с GNOME, что иногда приводит к тому, что изменения, удобные для GNOME, не всегда оптимальны для других сред рабочего стола.
  • Сложность кастомизации. В GTK 4 система тем оформления стала более строгой, что ограничивает возможности пользователей по настройке внешнего вида.

Интересные факты

  • Название «GTK+» происходит от «GIMP Toolkit». Плюс в конце был добавлен для обозначения перехода от оригинальной библиотеки, созданной для GIMP, к более общей библиотеке.
  • GTK+ является частью проекта GNU и распространяется под лицензией LGPL (GNU Lesser General Public License), что позволяет использовать её как в свободных, так и в проприетарных приложениях.
  • В 2019 году проект переименовал себя с «GTK+» на «GTK» для упрощения названия и устранения путаницы с плюсом.
  • GTK+ поддерживает тему оформления «Adwaita», которая является стандартной для GNOME. Она была разработана для обеспечения единообразного и современного внешнего вида.

Источники

  • Официальная документация GTK (GNOME Developer Documentation)
  • «GTK+ Programming in C» by Andrew Krause
  • «The GTK+ Project» — официальный сайт (gtk.org)
  • «GNOME Human Interface Guidelines» (HIG)
  • Статьи на сайте freedesktop.org

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →