XDG デスクトップ ポータル

提供: ArchWiki
2023年5月19日 (金) 10:37時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎See also: 飜訳)
ナビゲーションに移動 検索に移動

関連記事

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-gnome Yes Yes, on GNOME
xdg-desktop-portal-gtk Yes No
xdg-desktop-portal-kde Yes Yes, on KDE
xdg-desktop-portal-hyprland1 No Yes, on wlroots
xdg-desktop-portal-lxqt Yes No
xdg-desktop-portal-wlr No Yes, on wlroots
xdg-desktop-portal-liri-gitAUR Yes Yes, on Liri
xdg-desktop-portal-shanaAUR Yes2 No
xdg-desktop-portal-tdAUR Yes No
xdg-desktop-portal-termfilechooser-gitAUR Yes3 No
  1. すべての wlroots ベースのコンポジタで動作しますが、Hyprland と併用すると、個々のウィンドウの共有などの追加機能が提供されます。
  2. リクエストを GNOME/GTK/KDE/LXQt バックエンドにリダイレクトします
  3. ターミナルファイルマネージャーをファイルチューザーとして使用できるようにします

トラブルシューティング

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 を一覧表にしたもので、アプリケーションやバックエンドが実装できます。