結論
gnome以外でfirefoxやnautilus起動時に、xdg-desktop-portalがxdg-desktop-portal-gnomeと通信しようとしてタイムアウトまで待っている。
gnome以外では以下の設定のどれかを行うと、xdg-desktop-portalがxdg-desktop-portal-gtkと通信して素早く起動する
1. xdg-desktop-portal-gnomeをmaskする
以下のコマンドからxdg-desktop-portal-gnome
をmaskするとxdg-desktop-portal
がタイムアウトまで待たずに諦めてxdg-desktop-portal-gtk
と通信するので、素早く起動する。
一番手っ取り早い。
systemctl --user mask xdg-desktop-portal-gnome
gnomeへの影響を考えたけど、gnomeはあまり使わないし、gnomeで起動した感じ大丈夫そうだった。
2. XFG_CURRENT_DESKTOP=GTKを設定する
terminalで個別に起動するときに使う
env XDG_CURRENT_DESKTOP=GTK firefox
ドキュメントによるとXFG_CURRENT_DESKTOP
に設定された大文字の文字列を小文字に変換して、自作設定ファイルがない場合だと、/usr/share/xdg-desktop-portal/[DESKTOP]-portals.conf
の[DESKTOP]部分を置換してできるファイルを設定として使うらしい。
github.com
経緯
最初に以下の記事を見つけた
この記事によるとxdg-desktop-portal-gnome
を削除すればいいということだけど、それだとgnomeにも影響が出そうなので、どのようにしてxdg-desktop-portal-gtk
と通信するか調べた。
ただ、manもないっぽいし、ArchWikiとか検索しても何も出てこなかったのでgithubからコードのドキュメントを見たらいい感じに出てきた。
ここに簡単に対応するバックエンドサービスが書いてある
ここに詳細なドキュメントがあった。
余談
以下のドキュメントを参考に~/.config/xdg-desktop-portal/portals.conf
に設定を置いたけど全然早くなんない
configファイルの探索とサービス間の通信によるものなのかなぁ・・・
教訓
ちゃんと元のコードやドキュメントを見ましょう。