XDG デスクトップ ポータル
- 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-portal
は XDG_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 | 不可 |
- すべての wlroots ベースのコンポジタで動作しますが、Hyprland と併用すると、個々のウィンドウの共有などの追加機能が提供されます。
- リクエストを GNOME/GTK/KDE/LXQt それぞれのバックエンドにリダイレクトします。
- ターミナルファイルマネージャーをファイル選択ダイアログとして使用できるようにします。
トラブルシューティング
xdg-desktop-portal-wlr が sway で自動的に開始しない
xdg-desktop-portal-wlr
を動作させるには、XDG_CURRENT_DESKTOP
と WAYLAND_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
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 を参照してください。
参照
- Portal Documentation: すべての API を一覧表にしたもので、アプリケーションやバックエンドが実装できます。