Waylandを実行するときにシステムのすべてのユーザーに対してDebianで環境変数を設定する方法は?

Waylandを実行するときにシステムのすべてのユーザーに対してDebianで環境変数を設定する方法は?

WaylandでGnomeを実行するときは、各ユーザーの環境変数を設定したいと思います。 X11でGnomeを実行するときは、この変数を設定しないでください。具体的には、QT_QPA_PLATFORMWaylandを実行するときに変数にその値を設定したいとします。wayland

QT_QPA_PLATFORM=wayland/usr/share/gdm/env.d/wayland-env下に)を入れてみました。文書言及するここ)(これはWaylandでのみ動作することを願っています。)しかし、これはWaylandでも効果がないようです。再起動後、Gnome / Waylandでログインして端末を開くとecho $QT_QPA_PLATFORM結果はありません。

私は新しくインストールされたDebian Bullseyeを使用しています。

答え1

これしなければならない Debian での作業:

コンピュータが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

セッションが環境変数の1つとして、またはを使用していることを$DISPLAY確認することもできます。$WAYLAND_DISPLAY

Bashでは、すべてのユーザーにログイン後に実行させるスクリプトを配置できます/etc/profile.d。実行可能にし、拡張子を.sh

答え2

に関する投稿を偶然発見しました。システムこれは可能な答えにつながります。 (私の質問に答えて申し訳ありません。)

まだ起動時にどのファイルがどの条件で実行されるのか正確にはわかりませんが、少なくとも私のシステムでは、/etc/profileGnomeが起動したとき(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

グラフィックではなくシェルを実行するときにこれらの変数を設定しないなど、よりエレガントな解決策があると思います。しかし、少なくともこのアプローチは私の特定の問題を一時的に解決しました。

関連情報