Jump to content

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

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

Ссылки по теме

- Flatpak
- PipeWire (Русский)#Демонстрация экрана WebRTC

Из документации 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.

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

- darkman реализует Settings portal (только для настройки цветовой схемы).
- gnome-keyring реализует Secret portal.
- kwallet реализует Secret portal.
- xdg-desktop-portal-shanaAUR реализаует File chooser portal, перенаправляя запросы в бэкенды GNOME/GTK/KDE/LXQt.
- xdg-desktop-portal-termfilechooser-gitAUR реализует File chooser portal, позволяет использовать консольный файловый менеджер для выбора файла.

## Настройка

При получении запроса `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).

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

- Сайт проекта
- Документация для разработчиков

Category:

- Freedesktop.org (Русский)

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