The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Доступен графический тулкит GTK 4.22 со встроенным движком отрисовки SVG

08.03.2026 21:56 (MSK)

После шести месяцев разработки опубликован релиз многоплатформенного тулкита для создания графического интерфейса пользователя - 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", информирующей о необходимости минимизировать использование анимации.


  1. Главная ссылка к новости (https://github.com/GNOME/gtk/r...)
  2. OpenNews: Доступен графический тулкит GTK 4.20
  3. OpenNews: Доступен порт GTK+ 1.3 для Windows 11
  4. OpenNews: В Debian 14 намерены прекратить поставку GTK2
  5. OpenNews: Эксперимент по использованию AI для перевода приложения с GTK2 и OpenGL на GTK4 и Vulkan
  6. OpenNews: Ardour прекратил поддержку сборки с GTK2 в пользу форка YTK
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/64939-gtk
Ключевые слова: gtk
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (44) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (-), 22:38, 08/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +12 +/
    выпилена либа на расте, заменена на сишную реализацию

    добавлено, еще добавлено, еще добавлено, реализовано...

    это что хоть такое то?

     
     
  • 2.3, Аноним (3), 22:43, 08/03/2026 [^] [^^] [^^^] [ответить]  
  • +12 +/
    > выпилена либа на расте, заменена на сишную реализацию

    Уже за одно это жирный плюс!

     
  • 2.14, Аноним (14), 00:37, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > это что хоть такое то?

    Ты прямо как чиновник министерства культуры на выставке современного искусства - "Ничего не понимаю! Это что вообще такое? Ничего не понимаю!"

     
  • 2.16, 12yoexpert (ok), 02:14, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    вроде как написали, что в librsvg не хватает гибкости API (втупую переделать SVG в пиксели для GTK не подходит),  плюс иметь раст в качестве зависимости неудобно
     
  • 2.30, Аноним (30), 08:32, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А какже unix-way?
     
  • 2.40, Аноним (-), 13:18, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > выпилена либа на расте, заменена на сишную реализацию
    > добавлено, еще добавлено, еще добавлено, реализовано...
    > это что хоть такое то?

    Гномеры стали наконец догадываться насколько они всех заколебали своими фортелями и где их репутация среди разработчиков? Не прошло и 10 лет. Или таки прошло? :)

     

  • 1.4, Аноним (4), 22:47, 08/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > пытается предоставить разработчикам приложений стабильный и поддерживаемый в течение нескольких лет API

    Пусть пытаются. Всё равно получится как с 2 или 3 - канут в лета.

     
     
  • 2.11, Аноним (-), 23:51, 08/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ну хоть не "в лето"
    Естественно канет — всего несколько лет обещают
     
  • 2.19, Аноним (19), 05:44, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    "в Лету" (это река)
     
     
  • 3.51, Аноним (51), 19:04, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > (это река)

    Или равнина? Выяснить как и когда равнина стала рекой оставим в качестве упражнения для мотивированного и любопытного читателя.

     

  • 1.5, Семён Бубёный (?), 23:05, 08/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    Почитав в этих ваших интернетах про различные атаки направленные на эксплуатацию уязвимостей, внедрение в svg стороннего кода и прочую хрень, подумалось мне, что как-то несекьюрно это всё...
     
     
  • 2.6, Аноним (6), 23:10, 08/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Несекурно для чего? Для локального настольного приложения?
    Рендерить на GTK для web - если технически возможно, то уже хорошо, но смысла всё равно мало.
     
     
  • 3.10, windows10 (ok), 23:44, 08/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Несекурно для чего? Для локального настольного приложения?

    Ога. Прикинь я пришлю тебе файлик, малвари нет, мамой клянусь, и попрошу его запустить. Рискнешь?

    А здесь - файлик запустится без твоего согласия. Как? Например когда тебе на почту придет сообщение, а твой почтовик для предпросмотра отрисует SVG в нем средствами системы.

     
     
  • 4.42, МИСАКА (?), 13:23, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    CVE-2026-25646
     

  • 1.12, Аноним (12), 00:09, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Добавлена встроенная система отрисовки и разбора изображений в формате SVG
    > Для работы с форматом SVG предложен класс Gtk.Svg, позволяющий обойтись
    > без внешних зависимостей при отрисовке векторных пиктограмм и ресурсов
    > для приложений.

    Эм... в этом убожестве не было встроенной поддержки svg до сих пор?!
    В qt поддержку добавили еще в конце 2005го. А gtkшники только через 20+ лет осилили.

     
     
  • 2.17, Аноним (17), 02:21, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Поддержка была, но через отдельную либу. Сейчас все прикрутили напрямую к тулкиту дополнив парочкой свистоперделок (анимации, вариативная толщина линий)
     
  • 2.26, Аноним (26), 08:15, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Убожество тут это только вы. Хотя бы https://x.com/i/status/2030700347485003908 прочтите

    В gtk поддержка svg тоже 20+ лет, начиная с первых gtk 3. Но была с фундаментальным недостатком, как и в qt - растеризация на этапе загрузки svg, дальше тулкит работает с пикселями. Оказалось, это не очень хорошо работает с hidpi/нецелым масштабированием (благо, дарованное нам Wayland) и анимациями.

    Сделали свою реализацию, чтобы обрабатывать вектор как вектор и растеризовать на позднем этапе, идеально под задачи типа перемещения окна между экраном ноута и монитором с разными dpi.

    А qt это все ещё предстоит в будущем когда-нибудь, пока он (как и с внедрением svg) от gtk технологически отстаёт.

     
     
  • 3.27, Аноним (26), 08:16, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    https://blogs.gnome.org/gtk/2025/10/23/svg-in-gtk/ конечно же )) ссылка из новости
     
  • 2.32, Аноним (32), 09:31, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > В qt поддержку добавили еще в конце 2005го. А gtkшники только через 20+ лет осилили

    Поинтересуйся, когда они осилили добавить превьюхи в диалог выбора файлов. 😉

     
     
  • 3.44, Аноним (44), 14:17, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А это kde-шники добавили.
     

  • 1.20, Аноним (20), 06:30, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поясните, пожалуйста, кратко. Почему реализация формата SVG не проходит тест совместимости на 100%? Как такое может быть?
     
     
  • 2.22, Аноним (22), 06:34, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Может скрипты выпилили? (и это правильно)
     
  • 2.24, Аноним (24), 07:18, 09/03/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.28, Аноним (26), 08:19, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что полная спецификация включает всякие навороченные фильтры размытия и прочее, что актуально только в inkscape, а не для рендеринга иконок. Текущего покрытия тестами достаточно чтобы корректно рендерить все что существует в иконках.

    А для inkscape нужна более полная реализация

     
     
  • 3.38, Аноним (38), 13:07, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Походу, SVG придумывали те же старые маразматики, что и HTML. Наструя ВЕКТОРНОМУ РИСУНКУ размытия и вообще какие-либо фильтры? Это задача сугубо прикладная и должна решаться в каждом приложении отдельно. Рисунок - это набор фигур, там вообще не упали никакие процессинги. Даже толщина линий - сугубо дело рендера.
     
     
  • 4.45, историк_кун (?), 16:10, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Даже толщина линий - сугубо дело рендера.

    Как расписаться в дилетантстве, не называя себя дилетантом.

     
  • 4.48, Аноним (48), 18:39, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Наструя ВЕКТОРНОМУ РИСУНКУ размытия и вообще какие-либо фильтры? Это задача сугубо прикладная и должна решаться в каждом приложении отдельно

    Ну ок: у тебя есть векторный рисунок, и одна из фигур должна быть размыта. Объясни, что куда ты собрался "прикладывать", чтобы решить эту проблему?

     
  • 3.46, историк_кун (?), 16:14, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В фильтрах SVG нет ничего навороченного. Это очень простые алгоритмы.

    Inkscape эта библиотека никак не поможет, потому что там самое интересное и сложное происходит на холсте, а это вообще другая часть графического стека.

     

  • 1.21, Аноним (22), 06:33, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ящетаю никто не может сделать также круто, как гайка со своим hvif.
     
  • 1.23, laindono (ok), 06:56, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Не проходит кучу тестов

    А хоть с какими-то веб-стандартами есть реализации которые проходят тесты? В лучшем случае 3/4 тестов проходятся.

     
  • 1.25, Аноним (25), 07:51, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Библиотека librsvg, ранее используемая для отрисовки
    > SVG-пиктограмм, удалена из числа зависимостей.

    Переписать на Rust и ... что? А, выкинуть нафиг - и еще раз переписать? Походу заразное это дело, переписывать софт :)

     
     
  • 2.29, Аноним (26), 08:20, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    С библиотеками на rust неудобно под Андроидом.
     
     
  • 3.35, Аноним (32), 10:01, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    В каком смысле "не удобно"?
     
     
  • 4.37, Аноним (26), 12:55, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Сборка через задницу Сборка под андроид через Gradle, С-шный код в Gtk собирает... большой текст свёрнут, показать
     
     
  • 5.39, Аноним (38), 13:11, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Прекрасное описание! Сразу видно, насколько тупо растаманы брались за дело - наклепали язычок, а что он будет делать в современном ИТ - да по__й, как нибудь протолкнём! :))
    Аналогично, Ведроид - худшая из всех мыслимых ОС. Заточенная на жабу, бестолковая внутри и совершенно небезопасная снаружи.
     
     
  • 6.49, Аноним (48), 18:41, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Аналогично, Ведроид - худшая из всех мыслимых ОС

    А какую альтернативу ты предлвгаешь для смартфонов/планшетов?

     
  • 3.41, Аноним (-), 13:21, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > С библиотеками на rust неудобно под Андроидом.

    По моему с ними неудобно - везде. И не только с библиотеками. Крап который собирается только "скачайте ночнушку" вообще собирать - неудобно и враждебно. Надо качать какой-то варез от каких-то васянов, которые мне никто - сразу бинарями. С фиг знает какими полисями майнтенанса. Очень так себе счастье.

    В дебиане на тему сборки фс утилс от кента - весьма сравнимые коменты были.

     
     
  • 4.43, Аноним (43), 13:45, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    ну насчет бинарей - если тебе не жалко потратить время на сборку 20 (20 карл!) версий раста, то можешь глянуть в статью от guix, где они добились сборки раста без бинарей
     
  • 4.50, Аноним (48), 18:42, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Надо качать какой-то варез от каких-то васянов, которые мне никто - сразу бинарями

    Как сказать, что ты гентушник, ничего не сказав. 😂

     

  • 1.31, Аноним (32), 09:25, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > В API GtkApplication добавлена возможность сохранения состояния, используя протокол xx-session-management. В GNOME 50 данная функциональность задействована для сохранения сеансов и восстановления позиций окон.

    Бгг. В марте 2026 в Gtk под Wayland теперь наконец-то появилось возможность сохранять позицию окон. 👍

    Хотя странно: местные эксперты говорили, что это никому не нужно. 🤔

     
     
  • 2.34, Аноним (4), 09:37, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > под Wayland теперь наконец-то появилось возможность сохранять позицию окон

    За 18 лет разработки - это серьёзный результат.

     

  • 1.33, Zloy (ok), 09:34, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И что, когда мы получим современный Gimp? Единственный проект, который похоже никому не нужен, Krita и Blender давно развились и благодаря этому смогли получить финансовую поддержку, а Гимп как будто самим разрабам не нужен.
     
     
  • 2.36, Аноним (36), 12:01, 09/03/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Крита уже прекратила калечить текст при редактировании?
     

  • 1.47, Кирилл (??), 18:22, 09/03/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И 10 лет не прошло! Хотя постойте...
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру