Маттиас Класен (Matthias Clasen), лидер Fedora Desktop Team и участник GNOME Release Team, объявил (https://blogs.gnome.org/mclasen/2016/07/08/portals-using-gtk.../) о первом выпуске (https://github.com/flatpak/xdg-desktop-portal/releases) системы контролируемого обращения к внешним ресурсам для самодостаточных контейнеров приложений Flatpak (https://www.opennet.ru/opennews/art.shtml?num=44640). Для решения задач обращения к внешним ресурсам из контейнера, таким как файлы хост-системы, во flatpak изначально применялось монтирование внешних директорий в режиме bind (в snap доступ регулируется через AppArmor), что требует точной информации к каким ресурсам требуется доступ.
Для упрощения работы с внешними ресурсами для Flatpak предложена концепция порталов, реализованная через высокоуровневый API, позволяющий приложению запросить доступ к таким операциям, как открытие внешнего файла, открытие URL, вывод на печать, создание скриншота, вывод уведомления, блокировка вызова хранителя экрана, получения данных о состояния сети и информации о прокси. Указанный API удалось интегрировать с библиотекой GTK+, что позволяет обойтись без модификации приложений. Например, обработчик Portals API (https://github.com/flatpak/xdg-desktop-portal) вызывается при обращении приложения к штатным функциям GTK, например, когда программа пытается выбрать файл через GtkFileChooserNative или вывести информацию на печать через GtkPrintOperation. Взаимодействие с фронтэндом из изолированного окружения осуществляется через DBus.
Особенностью системы порталов является то, что решение о предоставлении доступа принимается пользователем, а не изначально предопределяется составителем пакета, который не может предугадать какой файл захочет обработать в изолированном приложении пользователь, поэтому обычно доступ открывается ко всей домашней директории. При обращении к обрабатываемым через Portals API функциям вызывается специальный обработчик, который показывает пользователю диалог подтверждения операции, по аналогии с динамическими межсетевыми экранами. В случае, если пользователь подтвердит операцию, предоставляется доступ к ресурсу.
В настоящее время доступен (https://github.com/flatpak/xdg-desktop-portal-gtk/releases) первый выпуск модуля xdg-desktop-portal-gtk (https://github.com/flatpak/xdg-desktop-portal-gtk/) для интеграции с GTK+, а также предложен набор исправлений к GTK+, обеспечивающий прозрачную для приложений интеграцию с системой порталов. Данные изменения уже приняты в основную ветку GTK+ и будут включены в состав выпуска 3.22. При этом технология позиционируется как независящая от конкретных рабочих столов и в разработке находится аналогичный модуль для Qt.
URL: https://blogs.gnome.org/mclasen/2016/07/08/portals-using-gtk.../
Новость: http://www.opennet.ru/opennews/art.shtml?num=44761