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未設定のままにして、アプリケーションが自動的に設定されるようにすることが可能であるという内容をどこかで読みました。何を変えるべきですか?

関連情報