Один из разработчиков XFCE - Josh Saddler разместил в своём блоге статью под названием "Benchmarks: gtk+ engines". В ней он сравнивает скорость работы нескольких популярных "движков" для GTK2. Результаты
оказались следующими (общее время выполнения тестов):
Доступны для скачивания новые релизы библиотек Glib и GTK+. Грядущий релиз окружения рабочего стола Gnome будет использовать именно эти новые версии.
Краткий список изменений:
Glib:
поддержка Unicode 5.1;
поддержка новой спецификации shared-mime;
улучшенная поддержка i18n благодаря новым функциям/макросам g_dgettext(), g_dngettext(), NC_();
поддержка концепции "вложенных парсеров" в GMarkup;
эмблемы на иконках;
GIO теперь поддерживает http-ссылки под ОС Windows;
традиционные исправления ошибок.
GTK+:
новые виджеты и объекты GdkAppLaunchContext, GtkMountOperation, GtkToolShell;
новые API gtk_show_uri(), призванные заменить gnome_vfs_url_show() и gnome_url_show(); gtk_widget_get_snapshot();
диалог выбора файлов теперь использует GIO напрямую, улучшено автодополнение;
улучшения в диалоге печати;
улучшения в поддержке "специальных возможностей" и i18n;
улучшения в библиотеке gdk-pixbuf (поддержка иконок в формате OS X, изображений JPEG 2000, сохранение и загрузка в и из каналов GIO, использование GIO для получения информации о MIME);
GDK теперь использует Xrandr вместо Xinerama для получения информации о мониторе. Установки шрифтов теперь определяются во время исполнения без необходимости перезапуска приложения.
Сразу после выхода GTK+ 2.14 была выпущена исправленная версия 2.14.1.
QGtkStyle теперь входит в основное дерево исходников Qt. Для тех, кто не в курсе - QGtkStyle позволяет отрисовывать виджеты Qt, используя темы GTK+, тем самым идеально вписывая Qt/KDE-приложения в GNOME.
В следующем релизе (Qt 4.5) QGtkStyle будет использоваться в GNOME-окружении по умолчанию заменяя собой старую тему Cleanlooks.
GNOME Project представляет поддержку интроспекции для системы GObject.
Интроспекция (англ. Introspection) - возможность определения типов и получения описаний (метаданных) типов и интерфейсов во время выполнения программы. Задачей проекта GObject Introspection, по словам авторов, является попытка собрать метаданные по всему стеку библиотек GTK+/GNOME (и не только), оформить их в универсальном, машинно-читаемом формате, и предоставить соответствующее API.
Возможные варианты использования GObject Introspection:
привязки к языкам (language bindings). На данный момент, как правило, для различных языков используются свои методы описания API, что зачастую приводит к дублированию информации. Проект GObject Introspection должен представить унифицированный интерфейс для получения информации об API;
верификация API. Нередко случаются критические изменения публичного API (в результате, например, непредусмотрительности разработчика-новичка), которые могут "сломать" некоторые программы. GObject Introspection позволит автоматизировать сравнение двух версий API и выявить изменения с предельной точностью;
инструменты документирования. В рамках самого проекта GObject Introspection уже используется инструмент для автоматического документирования публичных API, которым в дальнейшем планируется заменить gtk-doc в рамках всего проекта GNOME;
автогенерация пользовательского интерфейса (наподобие того, как сделано в системе аудиосинтеза Beast);
дизайнер пользовательского интерфейса;
сериализация, RPC (в том числе средствами DBus), компонентная система.
На данный момент GObject Introspection представляет собой:
схему (формат) XML для представления метаданных, называемую GIR (GObject Introspection Repository);
модуль на языке Python для манипуляции форматом GIR;
генератор GIR из файлов исходных текстов на С (.c + .h);
систему typelib, схожую с XPCOM/MSOLE, для сохранения метаданных в бинарном формате;
конвертер между GIR (XML) и typelib (бинарный формат);
C-библиотеку для чтения typelib.
Исходные тексты GObject Introspection доступны в Subversion-репозитории проекта GNOME в соответствующем модуле (см. "Подробности").
Проект GObject Introspection активнейшим образом используется в языке Vala.
Разработчик из компании Red Hat David Zeuthen на страницах свого блога сообщил, что он создал патч, добавляющий приложениям на GTK+ независимость от разрешения экрана.
В списке рассылки gtk-devel-list обсуждаются планы выпуска GTK+ версии 3. Основные подготовительные действия, которые необходимо предпринять в текущей ветке:
Спрятать все открытые поля структур с помощью макроса GSEAL(). В случае необходимости предоставить новые методы доступа к этим полям. Также должны быть скрыты поля-указатели "priv" на структуры, содержащие закрытые данные. Эти действия уже практически полностью проведены в репозитории git://git.imendio.com/projects/gtk+.git
Реализовать закрытые члены класса, что включает изменения в коде GType.
Объявить как deprecated публичные данные класса с помощью макроса GSEAL().
Поскольку не останется простого способа для доступа к полям класса, а использование g_object_[sg]et() утомительно, необходимо ввести новые методы доступа, вроде g_object_get_int(), *double(), *string() и т.д.
Существует множество макросов, таких как GTK_WIDGET_GET_FLAGS(), которые всегда были причиной многочисленных проблем (см. bug #69872). Необходимо реализовать нормальные методы доступа (в виде функций) и избавиться от этих макросов.
GtkStyle, без сомнений, самый сложный тип, нуждающийся в скрытии публичных полей, и до релиза должно быть проведено множество исследований.
Избавиться от всего кода, объявленного deprecated в 2.x. Это подразумевает все соответствующие виджеты и функции.
Удалить все поля структур из публичного API. Есть два способа достичь этого:
a) переместить все структуры в закрытые заголовки;
b) переместить структуры в C-файл реализации, но тогда всей библиотеке придётся использовать соответствующие методы доступа.
Эти варианты ещё обсуждаются.
Отключить deprecated-код по умолчанию во флагах компиляции.
Таким образом, версия 3.0 будет готова к релизу. Все приложения, которые собираются для ветки 2.x с макросом GSEAL() и не используют deprecated-кода, будут без проблем собираться для ветки 3.x. Наверное, таким образом разработчики пытаются избежать кошмара миграции, который можно видеть на примере библиотеки Qt.
Новый проект, получивший название QGtkStyle, позволяет приложениям, написанным с использованием Qt, быть интегрированными в Gtk-окружение (GNOME или XFCE). Вместо обычной имитации QGtkStyle напрямую использует темы Gtk. В данный момент проект находится на экспериментальной стадии, но является ещё одним шагом к более тесному взаимодействию между Qt и Gtk. Проект доступен на сайте Trolltech Labs и Google Code.
Cairo участвует в Google Summer of Code 2008. Среди поступивших заявок уже есть реализация управления цветом, ускорение растеризации, логические операции с контурами.
Сайт ars technica выложил подборку статей и интервью, где обсуждаются планы будущего развития GTK+. В общем, можно выделить такие направления:
Imendio, компания, ведущая около-GTK'шную разработку, а также спонсирующая порт GTK+ на MacOS X, предлагает реализовать эффекты, анимацию, физику (!) для улучшения пользовательского интерфейса (полный доклад http://developer.imendio.com/sites/de...)
Хавок Пеннингтон, который недавно ушел из Red Hat, 9 лет занимавшийся разработкой GNOME, предлагает интегрировать так давно необходимый Canvas в GTK+3.0. До этого разработчикам приходилось использовать для своих нужд сторонние разработки, что вызывало ряд проблем. Полный текст письма http://mail.gnome.org/archives/gtk-de....
Целый ряд разработчиков во главе с Mirco Muller (Canonical, Ltd) мечтают увидеть отрисовку виджетов полностью на OpenGL, что позволит создавать любые мыслимые и немыслимые эффекты для приложений. Некоторые успехи уже есть http://arstechnica.com/news.ars/post/..., но это все равно еще не предел. Плюс Andrea Cimitan уже сделал поддержку rgba прозрачности в виджетах, что добавляет оптимизма.
Подводя итоги, нужно сказать что GTK+ - замечательный тулкит, но все же некоторые болезни есть и у него. Сюда входят и две абсолютно разные модели заселения тулбаров, и три схемы построения интерфейса на основе XML, и разные проблемы с попиксельным позиционированием виджетов. Все это не может быть решено без слома старого API, поэтому в стане GTK+ все чаще звучат голоса в поддержку нового API в GTK+3.0. Все же, усилия Immendio, Пеннингтона и огромного сообщества делают будущее GTK+ чистым и ясным.
Недавно на Gnomefiles.org появилась интересная gtk2-программка, которая за пару дней уже успела дорасти до версии 0.2.0.
Основная задача Workaholic - висеть в области трея и через заданное время выводить полноэкранное сообщение о том, что нужно сделать перерыв. Это может быть очень полезно для людей, которые хотят сохранить свое зрение и не отрываются от компьютера, чтобы, например, пойти на перекур или обед. "Перерыв" можно прервать или отложить на 5-10 минут.
Автор движка Murrine и дефолтной темы GNOME 2.22 попросил помощи сообщества для добавления в GTK+ поддержки прозрачности, которую он реализовал в своем движке.
Что надо сделать в данный момент:
Добавить GtkSetting, что-то вроде boolean rgba-colormap = TRUE | FALSE;
Привязать GtkSetting к Xsetting;
Читать GtkSetting перед созданием Window и устанавливать rgba-colormap, если оно в наличии.
Кодеры, выручайте. Если это сделать, очень вероятно, что по-дефолту Gnome будет выглядеть примерно так.
В этой статье рассказывается о том, что такое библиотека cairo и чем она может быть полезна при разработке приложений. Пример, приведенный в данной статье, создает изображение логотипа IBM в форматах pdf, ps, png, svg и в окне gtk.
Вышел справочник метро metromap 0.1.2. В новой версии карты рисуются при помощи библиотеки cairo, поддерживается новый формат карт pMetro, отображается "дополнительная" информация о станциях метро, добавлена возможность (комфортной) работы с однокнопочной мышью (стилусом) и добавлено кэширование отрисованных карт.
Компания Motorola ответила на недавнюю новость о том, что известный производитель мобильных телефонов Nokia приобретает Trolltech, авторов Qt и Qtopia. Резюме заявления таково: «С Qt мы все равно закончили».
Кристи Уайт (Christy Wyatt), возглавляющая группу по программным платформам и экосистемам в Motorola, говорит, что год назад они вместе с пятью другими компаниями основали альянс LiMo [the Linux Mobile Foundation], и с тех пор к ним многие присоединились. Основным пунктом введенной спецификации является GTK, и они не намерены идти на уступки.