xdg-desktop-portalのバックエンド選択ルール
xdg-desktop-portal は xdg-desktop-portal-gtk や xdg-desktop-portal-wlr など1つ以上のバックエンドを持つことがある。
ルーティング
Section titled “ルーティング”上記のWikiによると、アプリケーションからD-Busで環境へのアクセスを要求されたとき、ポータルは /usr/share/xdg-desktop-portal 以下にある XDG_CURRENT_DESKTOP 環境変数の名前がついたファイルを探す。例えば wlr の場合、参照されるファイルは /usr/share/xdg-desktop-portal/wlr-portals.conf となる。
[preferred]default=hyprland;gtk上記はHyprlandの例だが、このようにバックエンドが並んでいるので、次はリクエストを処理できるバックエンドを探索する。このとき /usr/share/xdg-desktop-portal/portals 以下に default パラメータで記述されていた順に、まずは hyprland.portal でてリクエストに対応できるか確認する。
ポータルファイルの内容は次のようになっていて、詳細は分からないけれど Interfaces が対応できるサービスなのだろう。
[portal]DBusName=org.freedesktop.impl.portal.desktop.wlrInterfaces=org.freedesktop.impl.portal.Screenshot;org.freedesktop.impl.portal.ScreenCast;UseIn=wlroots;sway;Wayfire;river;phosh;Hyprland;対応できない要求であれば、次は gtk.portal にフォールバックして同じように探索する。それでも対応できなければ、最終的にアルファベット順で要求に対応できるバックエンドを使うらしい。
ポータルの強制
Section titled “ポータルの強制”要求に対して、特定のバックエンドを使うよう強制するしくみもある。例えばスクリーンキャスト要求には必ず gtk バックエンドを使わせることが可能だが、これを使いたい状況はあまり思いつかない。
ところでHyprlandの場合、
XDG_CURRENT_DESKTOP=Hyprlandとなっているが、ルーティングの際に大文字小文字は区別するんだろうか。