XDG デスクトップ ポータル

提供: ArchWiki
ナビゲーションに移動 検索に移動

関連記事

Flatpak のドキュメンテーションから:

Portals は、アプリケーションのサンドボックスの外部から安全にリソースにアクセスするためのフレームワークです。それらは、ネットワークのステータスを決定する、ファイルチューザーでファイルを開く、URIを開く、スクリーンショットやスクリーンキャストを取るなど、アプリケーションに一連の共通機能を提供します [...]

Portals は Flatpak を通じてサンドボックス化されたアプリケーションで使用するために設計されましたが、任意のアプリケーションは Portals を使用して、デスクトップやツールキットに関係なく特徴に均一なアクセスを提供できます。これは一般的に、例えば、 PipeWire 経由で Wayland にスクリーン共有を許可するためや、現在の デスクトップ環境 と同じツールキットを使用する Firefox 上でファイルの開くと保存のダイアログを使用するために使用されます。

インストール

xdg-desktop-portal と一つ以上のバックエンドインストールします。パッケージには、D-Bus を通じて自動的に起動される systemd/ユーザー サービスが含まれています。

バックエンド

アプリケーションがポータルを通じてリクエストを行うと、それは xdg-desktop-portal によって処理され、それからバックエンドの実装に転送されます。これにより、さまざまなデスクトップ環境にフィットする適切なユーザーインターフェースを提供し、通知の表示や画面の録画などのリクエストに対して環境固有の API へアクセスするクリーンな方法を可能にします。

複数のバックエンドをインストールでき、それらは /usr/share/xdg-desktop-portal/portals/*.portal に配置しています。それぞれのポータルバックエンドファイルには、それが扱うことができるインターフェースのリストと、それが使用できるデスクトップ環境が含まれています。リクエストが行われると、xdg-desktop-portalXDG_CURRENT_DESKTOP 環境変数 を使用して、そのリクエストにどのバックエンドを使用するかを決定します。現在のデスクトップに対して使用できるバックエンドが複数ある場合、アルファベット順で最初のものが選択されます。現在のデスクトップに対してインターフェースを扱うバックエンドがない、現在のデスクトップに対して利用可能なバックエンドがない、または xdg-desktop-portal が現在のデスクトップを決定できない場合、それは要求されたインターフェースをサポートする全てのインストールされたポータルの中からアルファベット順で最初のポータルを選択します。

例えば、Sway ユーザーはスクリーンシェアリングサポートのために xdg-desktop-portal-wlr を使用し、xdg-desktop-portal-wlr が実装していない他のすべてのインターフェースに対してフォールバックとして xdg-desktop-portal-gtk を使用するかもしれません。

バックエンドとインターフェースのリスト

以下の表では、利用可能な全てのバックエンドと、特定の一般的なインターフェースに対するサポートを一覧表示しています。

バックエンド ファイル選択ダイアログ スクリーンショットとスクリーンキャスト
xdg-desktop-portal-dde あり Deepin Desktop Environment において可
xdg-desktop-portal-gnome あり GNOME において可
xdg-desktop-portal-gtk あり 不可
xdg-desktop-portal-kde あり KDE において可
xdg-desktop-portal-hyprland1 なし wlroots において可
xdg-desktop-portal-lxqt あり 不可
xdg-desktop-portal-wlr なし wlroots において可
xdg-desktop-portal-xapp なし Cinnamon において可
xdg-desktop-portal-liri-gitAUR あり Liri において可
xdg-desktop-portal-shanaAUR あり2 不可
xdg-desktop-portal-tdAUR あり 不可
xdg-desktop-portal-termfilechooser-gitAUR あり3 不可
  1. すべての wlroots ベースのコンポジタで動作しますが、Hyprland と併用すると、個々のウィンドウの共有などの追加機能が提供されます。
  2. リクエストを GNOME/GTK/KDE/LXQt それぞれのバックエンドにリダイレクトします。
  3. ターミナルファイルマネージャーをファイル選択ダイアログとして使用できるようにします。

設定

リクエストの発行時、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 を汎用のフォールバックとして使用し、xdg-desktop-portal-lxqt で LXQt のファイル選択ダイアログを使用したい場合、設定は以下のようになります:

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

詳細は portals.conf(5) を参照してください。

ヒント: GTK ポータルをフォールバックとして使用するには、設定ファイル DE-portals.conf または portals.conf を作成する必要がある場合があります。このフォーラムにおける議論を参照してください。

デスクトップ環境を強制する

場合によっては (スタンドアローンなウィンドウマネージャを使用している場合など)、特定のデスクトップ環境が実行中であると xdg-desktop-portal に思わせる必要があるでしょう。これは、ドロップインスニペットを使って xdg-desktop-portal.service ユーザーユニットに対して XDG_CURRENT_DESKTOP 環境変数を設定することで可能です。例えば、KDE に付属しているバックエンドを使うには:

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

systemctl を使わずに手動でドロップインファイルを作成した場合は、daemon-reload を実行してください。

トラブルシューティング

xdg-desktop-portal-wlr が sway で自動的に開始しない

xdg-desktop-portal-wlr を動作させるには、XDG_CURRENT_DESKTOPWAYLAND_DISPLAY 環境変数が systemd ユーザーセッション 内に設定されている必要があります。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=compositor_name
ヒント: Sway はこれを自動的に行う drop-in ファイルを提供しています。詳細は Sway#設定 を参照してください。

詳細は [1][2] を参照してください。

xdg-desktop-portal-wlr を使って複数のモニターを使用する

xdg-desktop-portal-wlr は共有するモニターを選択するために外部のチューザーが必要です。デフォルトでは、slurpwofi、そして bemenu をこの順に探します。slurp を使用している場合、画面共有のリクエスト後に十字カーソルが表示され、共有したい画面をクリックする必要があります。wofibemenu を使用している場合、共有可能なディスプレイのメニューが表示されます。チューザーが利用できない場合、xdg-desktop-portal-wlr は最初に見つけたモニターにフォールバックします。詳細は xdg-desktop-portal-wlr(5) § SCREENCAST OPTIONS を参照してください。

参照

  • Portal Documentation: すべての API を一覧表にしたもので、アプリケーションやバックエンドが実装できます。