実際のGNOME Waylandセッション

実際のGNOME Waylandセッション

「実際の」Wayland gnomeセッションをテストしようとしています。私はすべてのアプリケーションがWaylandでデフォルトで実行されているわけではありません(私たちはXWaylandを持っています)。しかし、少なくともGTK +アプリケーションがそうすることを期待しています。

だから私は以下~/.profileを含むパッケージを作成しました。

export GDK_BACKEND=wayland
export CLUTTER_BACKEND=wayland

>>>編集:上記の代わりに、以下を追加して~/.profileXセッションとWaylandセッションの両方で動作させることができます。

WAY=$(ps -aux | head -n -1 | grep "/usr/bin/gnome-shell --wayland")

if [ -z "$WAY" ]; then
    echo X11
else
    export GDK_BACKEND=wayland
    export CLUTTER_BACKEND=wayland
fi

<<<

次に、私のGDMログイン画面(Archlinux)でWaylandのgnomeを選択します。

準備が整ったら、ノーチラス(通常はターミナルではなくダッシュから)を起動し、ミラーを開き、「ウィンドウ」セクションを選択して、ノーチラスウィンドウをクリックすると、GType:MetaWindowWaylandノーチラスが実際にウェイランドで実行されているというメッセージが表示されます。代わりにXWaylandにはありません。素晴らしい!

GType:MetaWindowWayland

ただし、ミラーで gnome-sell アイテムを再度選択すると、GType:MetaWindowX11シェルが XWayland で実行中であることを示すメッセージが表示されます。

Gタイプ:MetaWindowX11

MutterはWaylandで動作しているようです(たとえば、XとWの間のクリップボードはまだ機能しません)。ログイン後に実行するすべてのGTK +アプリもWayland(GType:MetaWindowWayland)で実行されますが、gnome-shellはまだX11にあります。

~/.profile私の考えでは、gnome-shellがセッションを開始するときにこれを考慮していないようです。おそらく、ユーザーではなくシステムによって起動されたのでしょうか?だからおそらく私が追加する必要があると思います。

export GDK_BACKEND=wayland
export CLUTTER_BACKEND=wayland

他の場所?

ベストアンサー1

.bashrc同様のファイルは、.bash_profileそのファイルをサポートするシェルが起動したときにのみ取得できます。.profile

その結果、環境変数は、そのシェルを使用してプログラムを起動した場合にのみ、新しく起動されたプログラムに伝播されます。

ただし、プログラム実行プログラムがプログラムを起動するためにファイルのシェルをインポートする理由はありません。

特に、多くの最新のプログラム実行プログラムは、私が知っている限り、Gnomeに関連するsystemd(ユーザースライス)を介してプログラムを起動します。

これが意味があるのにはいくつかの理由がありますが、トピックから抜け出すので、これについては扱いません。

私が知っている限り、最新のLinuxシステムで環境変数を設定する唯一の信頼できる方法はEnvironment.dを使用することです。

一部の場所ではPAM環境をお勧めしますが、これは意図された機能ではなく意図しない副作用に近いため、避けるべきであり、将来の動作が中断される可能性があります。

これを行うには、Environment.d 構成ファイルを作成します。

.config/environment.d/user-vars.conf

ここに環境変数を設定します。たとえば、次のようになります。

QT_QPA_PLATFORM=wayland
CLUTTER_BACKEND=wayland
#Makes some games not work, better to run them through XWayland
#SDL_VIDEODRIVER=wayland
ECORE_EVAS_ENGINE=wayland_egl
ELM_ENGINE=wayland_egl

これを使用して、systemctl --user show-environment新しく起動したアプリケーションに含まれるすべての環境変数を表示できます。

望むよりman environment.d

唯一の主な欠点は、新しく起動したプログラムに変更が適用されるようにEnvironment.d「セッション中」を「再ロード」する方法がわからないことです。したがって、変更を適用するにはセッションを再開する必要があります(例:完全サインアウトして再度ログインするか、ユーザーセッションを一時停止するのではなく、新しいTTYにログインしてください。

方法を見つけたらここに投稿します。


PS:私はsystemdを介していくつかのプログラムが起動しますが、すべてではなく、いくつかのプログラムが起動するいくつかのファンキーなシステムを持っています。これは(Gnomeを実行している場合)あなたには適用されません。しかし、誰かが同じ問題を抱えている場合に備えて、export $(systemctl --user show-environment)私の問題に含めました.bash_profile。ただし、「細かく編まれた」システムがない場合は、これを行う必要はありません。

おすすめ記事