ベアWM設定でxdgデスクトップポータルを起動する正しい方法は何ですか?

ベアWM設定でxdgデスクトップポータルを起動する正しい方法は何ですか?

コンテキスト

私はX11を使ってVoid Linuxを実行しています。デスクトップ環境やディスプレイマネージャを使用していません。startxttyで入力するだけでX11を起動できます。これにより、BSPWM ~/.xinitrc、ポリバー、その他の必要なすべてのアプリケーションが起動します。

質問

私はファイルセレクタを提供するためにxdgデスクトップポータルに依存する多くのflatpakアプリケーションを使用しています。 X11を初めて起動すると、すべてがうまく機能します。ただし、X11を終了してttyで再起動すると、すべてのFlatpakアプリケーションのファイルセレクタが破損します。例えば、CTRL+OLibrewolf出版社ではするファイルセレクタを読み込みますが、実際に選択したファイルを開くことはできません。同様に、ファイルをダウンロードしようとするとファイルセレクタが表示されますが、それ以降は実際にはダウンロードされません。簡単に言うと:

  1. 私はX11を発射する
  2. すべてが正常です
  3. 私はX11を殺してttyに出ることにしました。
  4. X11を再起動します。
  5. これで、すべてのFlatpakアプリでファイルセレクタが破損しています。

現在のソリューション

私の直観によると、X11が終了したときに正しくシャットダウンされていないX11で開始されたいくつかのプロセスが必要です。私の解決策は、この爆弾宣言を私の始めと終わりに置くことでした。~/.xinitrcこれはデフォルトでデスクトップポータルに関連するすべてを破ります。

kill $(ps aux | grep '/usr/libexec/xdg-' | awk '{print $2}')

これがトリックを行うようです。 X11を再起動した後でも、ファイルセレクタが正常に動作します。

私の質問

私の現在の解決策は完全なハッキングのように感じます。 grep名でプロセスを終了しますか?私が何か間違っているような気がします。 X11をシャットダウンするときにシャットダウンする必要があるプロセスの明示的なリストが必要ですか、それとも自動的にシャットダウンする必要がある一種のスーパーバイザーが必要ですか?要するに、DE / DM設定なしでxdgデスクトップポータルを実行する正しい方法は何ですか?、X11を再起動すると破損は発生しませんか?

追加の背景情報

実際には、X11の起動を担当する2つのファイルがあります。 1つ目は伝統的なもので、2つ目は私が書いてから実行した~/.xinitrcスクリプトです。また、xdgキラーワンライナーは、次の内容を含む別々のファイルにあります。launch_de.sh~/.xinitrckill_all_xdg_processes.sh

# file: ~/.xinitrc

#!/bin/sh

set -e

kill_all_xdg_portals.sh || true

if [ -d /etc/X11/xinit/xinitrc.d ]; then
  for f in /etc/X11/xinit/xinitrc.d/*; do
    [ -x "$f" ] && . "$f"
  done
  unset f
fi

export GTK_IM_MODULE=fcitx 
export XMODIFIERS=@im=fcitx 
export QT_IM_MODULE=fcitx 
export XIM_PROGRAM=/usr/bin/fcitx 

export _JAVA_AWT_WM_NONREPARENTING=1

xrdb -merge ~/.config/X11/Xresources
xsetroot -cursor_name left_ptr

exec dbus-launch launch_de.sh

# file: launch_de.sh

#!/bin/sh

kill_all_xdg_portals.sh

fcitx5 &

pipewire &
pipewire-pulse &
wireplumber &

polybar &
sxhkd &
nm-applet &
mpd --no-daemon &
xss-lock lock_noblank.sh &

xmodmap ~/.config/X11/Xmodmap

bspwm

kill_all_xdg_portals.sh
# file: kill_all_xdg_portals.sh

#!/bin/sh
kill $(ps aux | grep '/usr/libexec/xdg-' | awk '{print $2}')

続くプロセス

詳細はさまざまなステップの出力ですps aux | grep xdg(スクリプトを実行しないkill_all_xdg_portals.sh)。

起動直後、X11実行前

renzev  1426  0.0  0.0   6560  2432 tty1     S+   11:51   0:00 grep xdg

X11をリリースした後

renzev  1598  0.0  0.1 470404 12672 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal
renzev  1610  0.0  0.0 529392  5632 ?        Sl   11:51   0:00 /usr/libexec/xdg-document-portal
renzev  1615  0.0  0.0 305608  5248 ?        Sl   11:51   0:00 /usr/libexec/xdg-permission-store
renzev  1630  0.1  0.2 412324 22564 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal-gtk
renzev  1776  0.0  0.0   6560  2560 pts/1    S+   11:52   0:00 grep xdg

flatpakアプリ(librewolf)を保持

renzev  1598  0.0  0.1 470404 12672 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal
renzev  1610  0.0  0.0 529392  5632 ?        Sl   11:51   0:00 /usr/libexec/xdg-document-portal
renzev  1615  0.0  0.0 305608  5248 ?        Sl   11:51   0:00 /usr/libexec/xdg-permission-store
renzev  1630  0.1  0.2 412324 22564 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal-gtk
renzev  1899  0.0  0.0   2568  1664 ?        S    11:52   0:00 bwrap --args 43 xdg-dbus-proxy --args=45
renzev  1900  0.1  0.0 231984  4992 ?        Sl   11:52   0:00 xdg-dbus-proxy --args=45
renzev  2176  0.0  0.0   6560  2560 pts/1    S+   11:52   0:00 grep xdg

X11終了後

renzev  1598  0.0  0.1 739376 12116 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal
renzev  1610  0.0  0.0 751620  5888 ?        Sl   11:51   0:00 /usr/libexec/xdg-document-portal
renzev  1615  0.0  0.0 306348  6272 ?        Sl   11:51   0:00 /usr/libexec/xdg-permission-store
renzev  3243  0.0  0.0   6560  2432 tty1     S+   11:55   0:00 grep xdg

X11を2回目から始めた後

renzev  1598  0.0  0.1 740744 13012 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal
renzev  1610  0.0  0.0 751620  5888 ?        Sl   11:51   0:00 /usr/libexec/xdg-document-portal
renzev  1615  0.0  0.0 306348  6272 ?        Sl   11:51   0:00 /usr/libexec/xdg-permission-store
renzev  3382  0.1  0.1 470404 12800 ?        Sl   11:56   0:00 /usr/libexec/xdg-desktop-portal
renzev  3395  0.0  0.0 305608  5120 ?        Sl   11:56   0:00 /usr/libexec/xdg-permission-store
renzev  3412  0.1  0.2 412324 22276 ?        Sl   11:56   0:00 /usr/libexec/xdg-desktop-portal-gtk
renzev  3556  0.0  0.0   6560  2432 pts/1    S+   11:56   0:00 grep xdg

librewolfを2回目に始めた後(これでファイルセレクタが壊れています)

renzev  1598  0.0  0.1 740744 13012 ?        Sl   11:51   0:00 /usr/libexec/xdg-desktop-portal
renzev  1610  0.0  0.0 751620  5888 ?        Sl   11:51   0:00 /usr/libexec/xdg-document-portal
renzev  1615  0.0  0.0 306348  6272 ?        Sl   11:51   0:00 /usr/libexec/xdg-permission-store
renzev  3382  0.0  0.1 470404 12928 ?        Sl   11:56   0:00 /usr/libexec/xdg-desktop-portal
renzev  3395  0.0  0.0 305608  5120 ?        Sl   11:56   0:00 /usr/libexec/xdg-permission-store
renzev  3412  0.1  0.2 412324 22276 ?        Sl   11:56   0:00 /usr/libexec/xdg-desktop-portal-gtk
renzev  3674  0.0  0.0   2568  1664 ?        S    11:56   0:00 bwrap --args 43 xdg-dbus-proxy --args=45
renzev  3675  0.3  0.0 231980  4992 ?        Sl   11:56   0:00 xdg-dbus-proxy --args=45
renzev  4055  0.0  0.0   6560  2304 pts/1    S+   11:56   0:00 grep xdg

関連情報