Xwayland 및 Wayland - 환경 변수를 설정하는 가장 좋은 방법

Xwayland 및 Wayland - 환경 변수를 설정하는 가장 좋은 방법

저는 Debian 11을 사용하고 있으며 wlroot Wayland 신디사이저인 Sway를 사용하고 있습니다.

로그인할 때마다 Sway가 자동으로 열리도록 설정했습니다.(터미널 내부에서만 /dev/tty1):

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/1
  └─> cat .bash_profile 
    
# Only /dev/tty1 can open sway
if [ "$(tty)" = "/dev/tty1" ]; then
        exec sway
fi

또한 다음을 보장하기 위해 환경 변수를 설정했습니다.모두export QT_QPA_PLATFORM=wayland애플리케이션은 Xorg( ) 대신 Wayland 백엔드( )를 사용합니다 export QT_QPA_PLATFORM=xcb.

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/1
  └─> cat /etc/environment

export QT_QPA_PLATFORMTHEME=qt5ct

export QT_QPA_PLATFORM=wayland
# export QT_QPA_PLATFORM=xcb

export XDG_CURRENT_DESKTOP=sway
export XDG_SESSION_TYPE=wayland

이것은 의미한다모두Xorg만 인식하는 애플리케이션은 Wayland 백엔드를 사용하려고 하기 때문에 실행되지 않습니다!

내 솔루션:

작동하려면 먼저 Xwayland를 설치해야 합니다.

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/1
  └─> sudo apt install xwayland

하지만 그 후에도 Xorg 애플리케이션은 여전히 ​​Wayland를 사용하려고 시도하지만 여전히 실패합니다.

제 경우에는 애플리케이션을 실행하기 전에 환경 변수를 내보내면 Xorg 애플리케이션이 제대로 작동하도록 할 수 있었습니다. 예는 다음과 같습니다.

env QT_QPA_PLATFORM=xcb DISPLAY=:0 freecad

노트:Xorg는 DISPLAY=:0Wayland( )와 WAYLAND_DISPLAY=wayland-0다른 디스플레이 태그( )를 사용하므로 애플리케이션이 Xorg 백엔드를 사용해야 한다고 주장하는 경우 백엔드에 대한 디스플레이도 제공해야 합니다. 그렇지 않으면 실패합니다.

질문:

이 솔루션은 작동하지만 모든 Xorg 응용 프로그램을 따라잡는 것은 어렵습니다. 예를 들어...

기본 kicad패키지를 설치했는데 Kicad가 Wayland를 지원하지 않습니다. 그래서 수동으로 해야해요실행 파일 이동에서부터 :/usr/bin/kicad/usr/bin/kicad.bin

┌───┐
│ $ │ ziga > ziga--workstation > Downloads
└─┬─┘ /dev/pts/0
  └─> sudo mv /usr/bin/kicad /usr/bin/kicad.bin
  

그리고실행 파일을 스크립트로 교체 /usr/bin/kicad실행 전 필수 환경변수 설정모바일 실행 파일/usr/bin/kicad.bin:

┌───┐
│ $ │ ziga > ziga--workstation > Downloads
└─┬─┘ /dev/pts/0
  └─> sudo touch /usr/bin/kicad

┌───┐
│ $ │ ziga > ziga--workstation > Downloads
└─┬─┘ /dev/pts/0
  └─> sudo chmod +x /usr/bin/kicad

┌───┐
│ $ │ ziga > ziga--workstation > ~
└─┬─┘ /dev/pts/1
  └─> cat /usr/bin/kicad
#!/bin/bash
env QT_QPA_PLATFORM=xcb DISPLAY=:0 kicad.bin

이 작업은 시간이 많이 걸리며 패키지를 다시 설치할 때마다 반복해야 합니다! 이것은 끔찍한 해결책입니다. 그럼 다른 해결책은 없을까요?

QT_QPA_PLATFORM설정하지 않은 상태 로 두고 애플리케이션이 자동으로 설정되도록 하는 것이 가능하다는 내용을 어디선가 읽었습니다 . 무엇을 바꿔야 합니까?

관련 정보