コンテキスト
私はX11を使ってVoid Linuxを実行しています。デスクトップ環境やディスプレイマネージャを使用していません。startx
ttyで入力するだけでX11を起動できます。これにより、BSPWM ~/.xinitrc
、ポリバー、その他の必要なすべてのアプリケーションが起動します。
質問
私はファイルセレクタを提供するためにxdgデスクトップポータルに依存する多くのflatpakアプリケーションを使用しています。 X11を初めて起動すると、すべてがうまく機能します。ただし、X11を終了してttyで再起動すると、すべてのFlatpakアプリケーションのファイルセレクタが破損します。例えば、CTRL+O
Librewolf出版社ではするファイルセレクタを読み込みますが、実際に選択したファイルを開くことはできません。同様に、ファイルをダウンロードしようとするとファイルセレクタが表示されますが、それ以降は実際にはダウンロードされません。簡単に言うと:
- 私はX11を発射する
- すべてが正常です
- 私はX11を殺してttyに出ることにしました。
- X11を再起動します。
- これで、すべての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
~/.xinitrc
kill_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