За день до выхода GNOME 3.20 представлен стабильный релиз новой ветки многоплатформенного тулкита для создания графического интерфейса пользователя - GTK+ 3.20.0. Код GTK+ развивается в рамках проекта GNU и распространяется под лицензией LGPL, что позволяет использовать GTK+ не только для разработки свободного ПО, но и для создания проприетарных приложений, не требуя от производителей закрытых программ выплаты роялти или покупки специальной лицензии. В состав тулкита входит полный набор виджетов, позволяющих использовать GTK+ для проектов различного уровня и размера, например, GTK+ лежит в основе десктоп-окружений GNOME и Xfce, и используется в таких продуктах, как GIMP, Firefox и OpenOffice/LibreOffice.
GTK+ спроектирован для поддержки не только C/C++, но и других языков программирования, таких как Perl и Python, что в сочетании с использованием визуального построителя интерфейса Glade позволяет существенно упростить разработку и сократить время написания графических интерфейсов. Организация вывода в GTK+ абстрагирована от типа оконных систем, например, поставляется бэкенд, обеспечивающий возможность работы поверх дисплейного сервера Wayland, а также бэкенд, позволяющий отрисовывать вывод библиотеки GTK+ в окне web-браузера (запустив GTK-приложение на одной машине, можно открыть web-браузер на другой машине и получить доступ к интерфейсу данной программы).
Из добавленных в GTK+ 3.20.0 улучшений можно отметить:
- Значительное улучшение бэкенда, обеспечивающего возможность работы поверх дисплейного сервера Wayland. Реализована полная поддержка механизма Drag-and-Drop, кинетической прокрутки, передачи уведомлений о запуске, первичного буфера обмена, корректного позиционирования диалоговых окон, управления миганием курсора в GtkTextView.
- Реализована система узлов CSS (CSS nodes), с которыми связаны CSS-имена, присвоенные виджетам и компонентам виджетов. Таким образом каждый виджет имеет один или несколько узлов CSS, которые сгруппированы в форме дерева, каждый элемент которого имеет доступ ко всем вышележащим свойствам CSS. Для просмотра CSS-узлов можно использовать интерфейс GtkInspector.
- Более целостно обеспечена поддержка средств CSS для задания полей, отступов, рамок и минимальных размеров. Добавлены новые возможности CSS: радиальные градиенты, перекраска символьных пиктограмм (-gtk-recolor), функций image() и calc().
- Добавлена тема оформления HighContrastInverse.
- Реализована страница-подсказка с обзором горячих клавиш и экранных жестов.
- Реализовано чтение клавиатурных раскладок из файлов .XCompose.
- Поддержка использования предоставляемого GTK+ диалога выбора файлов на платформе Windows.
- Удалены или переведены в разряд устаревших: свойства Style, инфраструктура тестирования, геометрических преобразований при определении размера окон, GdkDeviceManager, gtk_text_iter_begins_tag и gdk_display_get_screen.
Одновременно доступна новая стабильная ветка графической библиотеки Clutter - 1.26.0. Clutter активно используется для обеспечения работы пользовательского интерфейса в проекте GNOME 3. Функции библиотеки Clutter ориентированы на активное использование анимации и визуальных эффектов, что позволяет применять при создании обычных GUI приложений методы, используемые при разработке игр. При этом сама библиотека напоминает игровой движок, в котором максимальное число операций выносится на плечи GPU. Одним из основных преимуществ Clutter является то, что для создания сложного интерфейса пользователя требуется написание минимума кода. Библиотека может работать поверх OpenGL, GLib, GObject, GLX, SDL, WGL, Quartz, EGL и Pango. Имеются биндинги для языков Perl, Python, C#, C++, Vala и Ruby.
В новом выпуске Clutter 1.26:
- Улучшена работа бэкенда системы ввода evdev для композитных серверов на базе Clutter.
- Добавлена возможность выбора основного и запасных Cogl-драйверов (GL, GL3, GLES2) как на этапе сборки, так и во время выполнения.
- Реализована возможность смены последовательности выбора Clutter-бэкендов, позволяющей во время работы откатиться на другой бэкенд в случае если основной бэкенд не поддерживается.
- Возможность создания текстовых actor-композиций, в которых запрещено редактирования или выделение текста.