Jump to content

XDG Desktop Portal (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи XDG Desktop Portal. Дата последней синхронизации: 8 мая 2025. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из документации Flatpak:

Порталы — это фреймворк для обеспечения безопасного доступа к ресурсам, находящимся за пределами песочницы приложения. Они предоставляют приложениям ряд часто используемых функций, в том числе: определение состояния сети, открытие файла через диалог выбора файла, открытие URI, создание скриншотов и скринкастов.

Порталы были разработаны для использования с приложениями, запускаемыми в песочнице Flatpak, но их может использовать любое приложение для реализации функций независимо от используемого инструментария или текущей среды рабочего стола. Это обычно используется, например, для демонстрации экрана в сеансах Wayland через PipeWire или для использования системых диалогов открытия и сохранения файла в Firefox.

Установка

Установите пакет xdg-desktop-portal, а также один или несколько бэкендов. Пакет предоставляет пользовательскую службу, которая будет запускаться автоматически через D-Bus.

Бэкенды

Когда приложение отправляет запрос в портал, его обрабатывает xdg-desktop-portal, который затем перенаправляет его в конкретный бэкенд. Это позволяет бэкендам реализовывать подходящие пользовательские интерфейсы, которые вписываются в среду рабочего стола, и использовать специфические для среды API запросов вроде открытия ссылки или захвата экрана. Можно установить и использовать несколько бэкендов одновременно. Например, в Sway может использоваться xdg-desktop-portal-wlr для захвата экрана и xdg-desktop-portal-gtk в качестве запасного варианта для всех остальных интерфейсов, которые xdg-desktop-portal-wlr не реализует.

Определения бэкэндов находятся в файлах /usr/share/xdg-desktop-portal/portals/*.portal. Каждый файл содержит список интерфейсов, которые он может обрабатывать, и сред рабочего стола, которые он поддерживает.

Список бэкендов и интерфейсов

В этой таблице перечислены все доступные бэкенды и информация о поддержке ими некоторых часто используемых интерфейсов.

Бэкенд Поддерживаемые среды Тулкит Access portal Account portal App chooser portal Background portal Clipboard portal Dynamic launcher portal Email portal File chooser portal Global shortcuts portal Inhibit portal Input capture portal Notification portal Print portal Remote desktop portal Screen cast portal Screenshot portal Secret portal Settings portal Wallpaper portal
xdg-desktop-portal-cosmic COSMIC iced Да Нет Нет Нет Нет Нет Нет Да Нет Нет Нет Нет Нет Нет Да Да Нет Да Нет
xdg-desktop-portal-dde Deepin Qt 5 Да Да Да Да Нет Нет Нет Да Да Да Нет Да Нет Нет Нет Да Да Да Да
xdg-desktop-portal-gnome GNOME GTK 4 Да Да Да Да Да Да Нет Yes Нет Нет Да Да Да Да Да Да Нет Да Да
xdg-desktop-portal-gtk generic GTK 3 Да Да Да Нет Нет Да Да Да Нет Да Нет Да Да Нет Нет Нет Нет Да Нет
xdg-desktop-portal-hyprland Hyprland1 Qt 6 Нет Нет Нет Нет Нет Нет Нет Нет Да Нет Да Нет Нет Нет Да Да Нет Нет Нет
xdg-desktop-portal-kde KDE Plasma Qt 6 Да Да Да Да Нет Да Да Да Да Да Да Да Да Да Да Да Нет Да Нет
xdg-desktop-portal-liri-gitAUR Liri Qt 5 Да Да Да Да Нет Нет Да Да Нет Да Нет Да Да Нет Да Да Нет Да Да
xdg-desktop-portal-lxqt LXQt Qt 6 Нет Нет Нет Нет Нет Нет Нет Да Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет
xdg-desktop-portal-tdAUR theDesk Qt 6 Да Да Нет Нет Нет Нет Нет Да Нет Нет Нет Да Нет Нет Нет Да Нет Да Нет
xdg-desktop-portal-wlr wlroots Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Нет Да Да Нет Нет Нет
xdg-desktop-portal-xapp Cinnamon2 Нет Нет Нет Да Нет Нет Нет Нет Нет Да Нет Нет Нет Нет Нет Да Нет Да Да
  1. Работает в любых композиторах, основанных на wlroots, но при использовании в Hyprland предоставляет дополнительные возможности вроде захвата отдельных окон.
  2. Также частично поддерживает MATE и Xfce.

Пакеты, которые предоставляют только определённый интерфейс и не зависят от среды рабочего стола:

Настройка

При получении запроса xdg-desktop-portal будет использовать файл /usr/share/xdg-desktop-portal/DE-portals.conf, где DE основано на переменной окружения XDG_CURRENT_DESKTOP. Эти файлы предоставляются самими средами рабочего стола и определяют, какие бэкенды должны использоваться при работе конкретной среды.

Если вы хотите переопределить стандартные настройки или ваша среда рабочего стола их не предоставляет, вы можете создать файл настроек $XDG_CONFIG_HOME/xdg-desktop-portal/portals.conf и в нём указать, какие бэкенды вы хотите использовать, либо в целом, либо для каждого отдельного интерфейса. Если вы используете несколько сред рабочего стола, вы также можете создать несколько файлов $XDG_CONFIG_HOME/xdg-desktop-portal/DE-portals.conf для каждой среды.

Например, если ваша среда рабочего стола не предоставляет бэкенд и вы хотите использовать xdg-desktop-portal-gtk по умолчанию, но при этом использовать диалог выбора файла из LXQt через бэкенд xdg-desktop-portal-lxqt, вы можете использовать следующую конфигурацию:

~/.config/xdg-desktop-portal/portals.conf
[preferred]
default=gtk
org.freedesktop.impl.portal.FileChooser=lxqt

Смотрите portals.conf(5) для более подробной информации.

Указание среды рабочего стола

В некоторых случаях, например, при использовании автономного оконного менеджера, вы можете захотеть заставить xdg-desktop-portal думать, что вы используете определённую среду рабочего стола. Этого можно добиться, указав переменную окружения XDG_CURRENT_DESKTOP для пользовательского юнита xdg-desktop-portal.service. Например, чтобы использовать бэкенды из KDE, создайте такой drop-in файл:

~/.config/systemd/user/xdg-desktop-portal.service.d/override.conf
[Service]
Environment="XDG_CURRENT_DESKTOP=KDE"

Решение проблем

Портал не запускается

Чтобы xdg-desktop-portal-wlr и xdg-desktop-portal-hyprland работали, в пользовательском экземпляре systemd должны быть установлены переменные окружения XDG_CURRENT_DESKTOP и WAYLAND_DISPLAY.

Переменная XDG_CURRENT_DESKTOP должна содержать имя вашего композитора, например XDG_CURRENT_DESKTOP=sway. Переменная WAYLAND_DISPLAY устанавливается композитором автоматически.

Проверьте, установлены ли эти переменные, командой systemctl --user show-environment. Если нет, импортируйте их в systemd и dbus, выполнив следующие команды перед запуском композитора (например, добавьте их в файл настроек композитора):

$ systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
$ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=имя_композитора
Примечание: Эти переменные должны быть установлены перед запуском композитора. Обычно это можно сделать через его файл настроек.
Совет:
  • Sway предоставляет drop-in файл, который выполняет это автоматически; смотрите раздел Sway#Configuration.
  • Hyprland может не устанавливать эти переменные автоматически. Можно установить их вручную, как описано в Hyprland Wiki.

Смотрите [1] и [2] для более подробной информации.

Использование нескольких мониторов с xdg-desktop-portal-wlr

Для xdg-desktop-portal-wlr требуется внешний инструмент выбора монитора, который нужно захватить. По умолчанию он пробует использовать slurp, wofi и bemenu в этом порядке. При использовании slurp в момент запроса совместного доступа к экрану появится курсор с перекрестием, и вам нужно будет щёлкнуть тот экран, к которому вы хотите предоставить доступ. При использовании wofi или bemenu будет показано меню с доступными мониторами. Если ни один из инструментов выбора не доступен, xdg-desktop-portal-wlr будет захватывать первый найденнй монитор, смотрите xdg-desktop-portal-wlr(5) § SCREENCAST OPTIONS.

Некрасивые шрифты у приложений GTK, запущенных в KDE Plasma

Некоторым приложениям GTK нужен xdg-desktop-portal-gtk для корректной отрисовки шрифтов в Plasma. Установите его и затем выполните:

$ /usr/lib/xdg-desktop-portal --replace

Не работает выбор файла в приложениях X11

Если приложение работает на X через Xwayland (самый простой способ проверить — запустить xeyes и посмотреть, следит ли он за курсором мыши, находящимся над интересующим приложением), то диалог выбора файла xdg-desktop-portal-gtk будет отображаться, но после выбора файла ничего не произойдет. В этом случае может помочь добавление DISPLAY=:0 в окружение xdg-desktop-portal-gtk. Для этого вы можете либо следовать приведённым выше инструкциям про import-environment, либо просто отредактировать пользовательский юнит xdg-desktop-portal-gtk. В качестве альтернативы вы можете принудительно запустить приложение под Wayland (например, если оно использует Electron).

Смотрите также