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