После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя — GTK 4.22. GTK 4 развивается в рамках процесса разработки, который пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API, который можно использовать не опасаясь, что каждые полгода придётся переделывать приложения из-за изменения API в очередной ветке GTK.
Среди заметных улучшений в GTK 4.22:
- Добавлена встроенная система отрисовки и разбора изображений в формате SVG, поддерживающая анимацию и дающая возможность создания анимированных пиктограмм, интерактивных элементов интерфейса и динамически меняющихся индикаторов, таких как индикаторы прогресса. GtkSvg напрямую интегрируется с библиотекой GSK (GTK Scene Kit), предоставляющей возможности отрисовки графических сцен через OpenGL и Vulkan. Библиотека librsvg, ранее используемая для отрисовки SVG-пиктограмм, удалена из числа зависимостей.
Для работы с форматом SVG предложен класс Gtk.Svg, позволяющий обойтись без внешних зависимостей при отрисовке векторных пиктограмм и ресурсов для приложений. Преложенная реализация формата SVG разработана специально для GTK, успешно проходит 1250 из 1616 тестов совместимости из набора resvg (для сравнения, Firefox проходит 1385 тестов, librsvg — 1168, а QtSvg — 591).
- Добавлен виджет GtkPopoverBin, упрощающий добавление контекстных меню и выпадающих диалогов в другие виджеты. GtkPopoverBin может использоваться как контейнер для интеграции функциональности всплывающих окон в виджеты,
которые сами по себе не умеют это делать. - Добавлен новый тип выражений GtkTryExpression, допускающих определение fallback-операций. GtkTryExpression пытается выполнить каждое выражение из списка, до тех пор пока одно из них не будет выполнено успешно.
- Задействован новый формат символьных пиктограмм, поддерживающий анимацию и меняющиеся состояния (например, для индикации активности). Для управления шириной пиктограмм добавлено CSS-свойство «-gtk-icon-weight». Добавлено демонстрационное приложение org.gtk.Shaper с реализацией редактора для нового формата символьных пиктограмм.

- В бэкенде для работы в окружениях на базе протокола Wayland реализована экспериментальная поддержка протокола xx-session-management, который может использоваться для восстановление состояния окон прерванных сеансов (например, после аварийного завершения композитного менеджера). Для включения следует выставить переменную окружения «GDK_DEBUG=session-mgmt».
- В API GtkApplication добавлена возможность сохранения состояния, используя протокол xx-session-management. В GNOME 50 данная функциональность задействована для сохранения сеансов и восстановления позиций окон.
- Для доступа к настройкам в бэкенде для Wayland задействован портал
freedesktop.portal.Settings. - В API GtkFileLauncher реализована возможность доступа к файлам на запись, при использовании внутри flatpak-пакетов.
- В GSK (GTK Scene Kit) добавлена поддержка профилирования и возможность смещения пикселей исходного изображения на основе «карты смещения» (displacement map) для создания сложных графических эффектов.
- Добавлен API GskRenderNodeReplay для обработки дерева узлов отрисовки (Render Node). Добавлены новые типы узлов «copy» и «paste», позволяющие скопировать и вставить в другое место графа сцены область под текущим элементом. Добавлен новый тип узлов «composite», позволяющий использовать дополнительные операции композитинга при отрисовке элементом поверх фона, такие как наложение с использованием маски.
- В CSS добавлено свойство «backdrop-filter» для применения эффектов к фоновой области, таких как размытие фона.
- В CSS добавлена поддержка настройки «reduced-motion», информирующей о необходимости минимизировать использование анимации.
Источник: http://www.opennet.ru/opennews/art.shtml?num=64939
