베어 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 시작을 담당하는 두 개의 파일이 있습니다. 첫 번째는 전통적인 것이고 두 번째는 제가 작성 하고 에서 실행한 ~/.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을 두 번째로 시작한 후

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를 두 번째로 시작한 후(이제 파일 선택기가 깨졌습니다)

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

관련 정보