Wayland에서 Gnome을 실행할 때 각 사용자에 대한 환경 변수를 설정하고 싶습니다. X11에서 Gnome을 실행할 때는 이 변수를 설정하면 안 됩니다. 구체적으로 QT_QPA_PLATFORM
Wayland를 실행할 때 변수에 해당 값을 설정하고 싶다고 가정해 보겠습니다 .wayland
QT_QPA_PLATFORM=wayland
( /usr/share/gdm/env.d/wayland-env
아래에 ) 를 넣어 보았습니다.문서언급하다여기) (이것은 Wayland에서만 작동하기를 바랍니다.) 그러나 이는 Wayland에서도 효과가 없는 것 같습니다. 재부팅 후 Gnome/Wayland에서 로그인하고 터미널을 열면 echo $QT_QPA_PLATFORM
결과가 없습니다.
저는 새로 설치된 Debian Bullseye를 사용하고 있습니다.
답변1
이것~해야 한다 데비안에서 작업:
컴퓨터가 X11 또는 Wayland에서 실행되고 있는지 확인하는 간단한 스크립트를 만들 수 있습니다.
loginctl show-session "$XDG_SESSION_ID" -p Type --value
반품할 수 있습니다 X11
. 또는 Wayland
(반품도 가능합니다 tty
)
그래서:
if [[ $(loginctl show-session "$XDG_SESSION_ID" -p Type --value) = 'wayland' ]]; then
export QT_QPA_PLATFORM=wayland
fi
세션이 환경 변수 중 하나로 $DISPLAY
또는 를 사용하고 있는지 확인할 수도 있습니다.$WAYLAND_DISPLAY
Bash에서는 모든 사용자가 로그인 후 실행하도록 하는 스크립트를 넣을 수 있습니다 /etc/profile.d
. 실행 가능하게 만들고 확장자가 .sh
.
답변2
에 관한 게시물을 우연히 발견했습니다.체계이것은 가능한 대답으로 이어집니다. (내 질문에 대답해서 죄송합니다.)
아직은 시작 시 어떤 파일이 어떤 조건에서 실행되는지 정확히 알 수 없지만, 적어도 내 시스템에서는 /etc/profile
Gnome이 시작될 때(Wayland를 실행할 때 포함) 파일이 실행되는 것 같습니다. /etc/profile.d/
파일을 예로 들어 순차적으로 실행됩니다 .im-config_wayland.sh
/etc/profile.d/wayland.sh
, Wayland 실행 여부에 따라 원하는 환경 변수를 조건부로 설정하는 파일을 만들었습니다 . 이것이 그 내용입니다.
test "$XDG_SESSION_TYPE" = 'wayland' || return
export QT_QPA_PLATFORM=wayland
그래픽이 아닌 쉘을 실행할 때 이러한 변수를 설정하지 않는 것과 같은 더 우아한 해결책이 있다고 생각합니다. 하지만 적어도 이 접근 방식은 내 특정 문제를 일시적으로 해결했습니다.