실제 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노틸러스가 실제로 Wayland에서 실행되고 있다는 메시지가 나타납니다. 대신 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에 로그인하세요.

방법을 찾으면 여기에 게시하겠습니다.


추신: 저는 systemd를 통해 일부 프로그램이 시작되지만 전부는 아닌 일부 프로그램이 시작되는 다소 펑키한 시스템을 가지고 있습니다. 이는 (Gnome을 실행하는 경우) 귀하에게 적용되어서는 안 됩니다. 하지만 누군가가 같은 문제를 안고 있을 경우를 대비해 export $(systemctl --user show-environment)내 문제에 포함시켰습니다 .bash_profile. 하지만 "잘게 엮인" 시스템이 없다면 이 작업을 수행할 필요가 없습니다.

답변2

.bashrc비 로그인 쉘에서도 작동한다는 점을 추가해야한다고 생각합니다 .

답변3

답변이 너무 늦었지만 이미 "unanswered questions"삭제된 상태입니다.

GDK_BACKEND=웨이랜드

Wayland gnome 세션의 터미널에서 애플리케이션을 실행하면 충분합니다.

tty를 통해 gnome-shell을 시작할 수 있습니다.

gnome-shell --wayland --display_server

이미 실행 중인 인스턴스가 있는 경우 명령 앞에 dbus-run-session을 붙여야 합니다.

dbus-run-session gnome-shell --wayland --display_server

모든 최신 버전의 Fedora는 기본적으로 wayland로 설정되어 있습니다.

관련 정보