воскресенье, 20 марта 2011 г.

В состав GTK+ 3.2 будет включен HTML5-бэкенд отображающий приложения через web-браузер

Александр Ларсон (Alexander Larsson), активный разработчик GNOME и мантейнер таких проектов, как Nautilus, Gnome-vfs и Dia, сообщил о том, что GDK-бэкенд (GIMP Drawing Kit), позволяющий отрисовывать вывод библиотеки GTK+ в окне web-браузера, включен в master-ветку GTK+, на основе которой будет сформирован релиз GTK+ 3.2. В настоящее время HTML5-бэкенд еще не доведен до полностью стабильного состояния, но уже достаточно функционален для того чтобы начать экспериментировать с ним, например, позволяет работать в окне браузера с большим числом GTK-приложений, включая Evince и Gedit. В настоящее время бэкенд корректно работает только в Firefox, но в будущем будет адаптирован для работы с любым браузером, в котором реализована поддержка web-сокетов и canvas.
С технической стороны, каждое окно сопоставляется с элементом canvas и для обновления содержимого окна организуется передача потока команд через "multipart/x-mixed-replace"-запросы XMLHttpRequest, использующие gzip-сжатие для сокращения объема передаваемых данных. Содержимое окон передается клиенту в виде копий слоев (для скроллинга) и блоков, описывающих изменения между изображениями. Изображения отправляются в виде несжатых данных в PNG-формате. Пользовательский ввод перехватывается через DOM-события и затем транслируется на сервер через WebSocket API, позволяющий организовать двунаправленный обмен данными с сервером.


В перспективе web-бэкенд может быть использован для организации служб для удаленной работы с приложениями через web-браузер (например, можно сделать что-то похожее на утилиту screen, позволяющее получить доступ к своим программам из любого места) или даже для создания публичных web-сервисов, приложениями в которых выступают Gtk-программы (например, web-сервис редактирования изображений на базе Gimp).


Для использования нового бэкенда достаточно собрать Gtk+ с опциями "--enable-x11-backend" и "--enable-broadway-backend", после чего запустить приложение указав на использование бэкенда broadway, например, "GDK_BACKEND=broadway your-application". Для работы с программой в браузере нужно включить поддержку websockets (по умолчанию отключена в Firefox 4) и открыть страницу http://127.0.0.1:8080/. Из еще недоработанных возможностей отмечается недостаточно полная поддержка управления клавиатурным вводом.

А вот и видео: http://vimeo.com/21062117