Linux의 Wayland는 무엇이며 X와 어떻게 다른가요?

게시 됨: 2023-07-17
System76 Gazelle 랩탑에서 열려 있는 파일 관리자
Hannah Stryker / 하우투 긱
Wayland는 Linux 배포판을 위한 대체 윈도우 시스템입니다. 노후화된 X11 표준을 대체합니다. 작동하려면 응용 프로그램을 수정해야 하기 때문에 지금까지 채택 속도가 느렸습니다. 작성 당시 X11에 비해 향상된 보안이 주요 이점입니다.

X11 또는 X Window System을 사용하면 그래픽 데스크탑 환경에서 창을 표시하고 제어할 수 있습니다. Wayland는 X11을 대체합니다. 보다 빠르고 안전하게 설계되었습니다. 여기 당신이 그들에 대해 알아야 할 것이 있습니다.

목차

웨일랜드란?
X의 많은 이름
X11 작동 방식
웨이랜드 작동 방식
응용 프로그램에서 Wayland의 느린 채택
Wayland 또는 X11을 사용하고 있습니까?
Wayland 또는 X11을 사용해야 합니까?

웨일랜드란?

Wayland는 수십 년 동안 Linux의 기본 윈도우 시스템이었던 X11을 현대적으로 대체합니다. Wayland는 통신 프로토콜이며 X Window 디스플레이 서버와 클라이언트 응용 프로그램 간의 메시징을 정의합니다. Wayland 프로젝트는 애플리케이션이 프로토콜을 사용할 수 있도록 하는 클라이언트 및 서버 라이브러리를 제공합니다.

Wayland 프로젝트는 2008년 Red Hat 개발자에 의해 시작되었습니다.

X의 많은 이름

X Window System은 1984년 Massachusetts Institute of Technology에서 운영하는 Unix용으로 처음 출시된 윈도우 시스템입니다. 응용 프로그램은 사용자 인터페이스를 생성하기 위해 윈도우 시스템에서 제공하는 기능을 기반으로 구축할 수 있습니다.

1987년까지 X Window System은 버전 11에 도달했으며 X11로 알려지게 되었습니다. 이제 X.Org Foundation에서 관리합니다. 1987년 이후 더 작은 릴리스가 많이 있었지만 여전히 버전 11입니다. 작성 시점을 기준으로 현재 안정적인 버전은 X11R7.7입니다.

이름의 "X"는 로마 숫자로 10을 의미하지 않으며 "Xtra", "Xtended" 또는 이와 유사한 것을 의미하지 않습니다. 이전 윈도우 시스템은 "창"을 의미하는 "W"라고 불렸으며 새 프로젝트를 시작할 때 단순히 알파벳의 다음 문자로 이동했습니다.

"X", "X11", "Xorg", "X Windows" 및 "X Window System"이라고 하는 X Window System을 듣게 될 것입니다.

X11 작동 방식

X Window System은 마우스와의 상호 작용, 창 그리기 및 이동과 같은 저수준 이벤트 및 프리미티브를 처리합니다. 응용 프로그램은 시각적 요소와 인터페이스 디자인을 처리합니다. 창의 모양, 창에 있는 버튼, 해당 버튼의 위치는 응용 프로그램 프로그래머가 선택하는 사항입니다. X Window System은 결과 디자인을 화면에 그립니다.

X11은 작동하는 X 윈도우 시스템의 다양한 구성 요소 간에 전달되어야 하는 통신에 대한 정의를 제공합니다. 이 통신은 X 지원 응용 프로그램이 창과 인터페이스 요소를 그리는 데 사용하는 코드가 응용 프로그램 내부에 없기 때문에 필요합니다. 이 작업은 X 서버와 창 관리자 간에 공유됩니다.

응용 프로그램은 X 서버의 클라이언트입니다. 창 관리자는 특별한 유형의 클라이언트입니다. X 서버는 리소스 관리, 그리기 요청 실행, 키 누름 및 마우스 클릭과 같은 이벤트를 적절한 응용 프로그램으로 마샬링하는 일을 담당합니다.

또한 창 관리자와 응용 프로그램 간의 통신에서 중개자 역할을 하여 그들 사이에서 메시지를 중개합니다. 창 관리자는 응용 프로그램이 열려 있는 창, 화면의 위치, 크기, 겹치는 경우 등의 목록을 유지 관리합니다.

합성 창 관리자는 각 창에 대한 오프스크린 버퍼를 유지합니다. 이러한 버퍼를 화면에 기록되는 전체 데스크톱을 나타내는 최상위 창을 나타내는 단일 이미지로 합성합니다.

GNOME 및 KDE를 포함한 모든 최신 그래픽 데스크탑 환경은 합성 창 관리자를 사용합니다.

웨이랜드 작동 방식

Wayland는 X11의 문제를 해결하기 위한 것입니다. X11 아키텍처에는 많은 메시징이 필요합니다. X 서버는 클라이언트와 창 관리자 사이에 있습니다. 또한 모든 것과 커널을 통해 그래픽 하드웨어 사이에 위치합니다. 메시징의 양은 대기 시간과 느리고 불안정한 시각적 경험으로 이어질 수 있습니다.

대규모 코드 기반도 있습니다. 클라이언트가 사용하는 서버 응용 프로그램, Window Manager 응용 프로그램 및 X11 라이브러리가 있습니다. 코드 기반이 크고 오래될수록 유지하기가 더 어려우며 레거시 코드로 인해 더 많은 어려움을 겪게 됩니다.

Wayland는 아키텍처를 변경하여 코드 기반을 현대화하고 간소화하여 성능 이점과 향상된 보안을 제공합니다.

실제로 그들은 서버와 창 관리자를 하나의 응용 프로그램으로 병합했습니다. 그들은 현재 커널이 수행하는 기능을 수행하는 모든 코드를 제거했습니다. 노력을 복제하는 대신 커널의 기능을 활용했습니다.

Wayland를 사용하면 컴포지터와 클라이언트 애플리케이션이 직접 통신합니다. 컴포지터는 어떤 창이 데스크탑의 어디에 있고, 어떤 크기와 상태에 있는지에 대한 내부 매핑을 유지합니다. 컴포지터는 키보드, 마우스 및 창 변경 이벤트를 중개하고 해당 창을 소유한 응용 프로그램으로 보냅니다.

애플리케이션은 이에 따라 사용자 인터페이스를 업데이트합니다. 주요 차이점은 링크된 Wayland 라이브러리를 사용하여 애플리케이션 자체 내에서 렌더링이 수행된다는 것입니다.

응용 프로그램은 창을 유지하는 데 사용되는 버퍼를 업데이트하거나 새 버퍼를 만들고 이전 버퍼를 버립니다. 그런 다음 클라이언트 응용 프로그램은 창 매핑을 업데이트하고 새 비디오 버퍼 또는 업데이트된 비디오 버퍼를 사용하도록 알리는 알림을 컴포지터로 보냅니다.

이 단순화된 아키텍처와 현대적인 코드 디자인은 특히 창 크기 조정 및 드래그를 통해 부드럽고 유동적으로 나타나는 성능 향상을 제공합니다.

응용 프로그램에서 Wayland의 느린 채택

Wayland는 Debian 10 이상, Fedora 34 이상, Ubuntu 18.04 이상 및 Arch Linux와 같은 기타 배포판의 기본 윈도우 시스템입니다. 그럼에도 불구하고 종종 Wayland는 X11 애플리케이션을 실행합니다.

X11 응용 프로그램이 Wayland에서 실행될 수 있도록 하는 XWayland라는 호환성 계층이 있습니다. 이것은 대부분의 X11 애플리케이션이 수정되지 않고 Wayland로 포팅되지 않았기 때문에 필요했습니다.

GNOME과 같은 Wayland 컴포지터를 제공하는 데스크탑 환경에서 GNOME 텍스트 편집기 및 지도, 파일 및 캘린더와 같은 공식 애플리케이션은 모두 Wayland 기본 애플리케이션입니다. 그러나 대부분의 X11 응용 프로그램은 여전히 ​​손대지 않은 기본 X11 응용 프로그램입니다.

Nvidia, 캐치와 함께 오픈 소스 Linux GPU 드라이버 출시
관련 Nvidia, 캐치와 함께 오픈 소스 Linux GPU 드라이버 출시

XWayland 미들웨어는 일반적으로 잘 작동하지만 화면 녹화와 같은 낮은 수준의 화면 관련 기능을 수행하는 일부 X11 응용 프로그램에 문제가 있을 수 있습니다. NVIDIA GeForce GT 1030 GPU와 함께 Wayland를 사용하는 일상적인 드라이버에는 문제가 없었지만 NVIDIA와 함께 Wayland를 사용하는 것은 X11만큼 고통스러울 수 있습니다.

X11 응용 프로그램의 일부 작성자는 자신의 응용 프로그램이 XWayland에서 제대로 작동하기를 바라고 있으며 Wayland 응용 프로그램으로 다시 작업하지 않아도 됩니다. Wayland로의 이해 및 마이그레이션이 길고 느리더라도 새로운 응용 프로그램이 채택하지만 기존 X11 응용 프로그램의 대부분은 그대로 유지되어 XWayland에 대한 희망을 고정하더라도 놀라지 마십시오.

관련: Ubuntu 21.04 'Hirsute Hippo'의 새로운 기능

Wayland 또는 X11을 사용하고 있습니까?

주요 Linux 배포판 중 하나를 사용하고 있다면 이미 Wayland를 사용하고 있을 가능성이 있습니다. 다음 명령을 실행하여 확인할 수 있습니다.

 에코 $XDG_SESSION_TYPE

Wayland를 사용하는 시스템에서 출력은 다음과 같습니다.

X Window System을 실행하는 시스템에서는 다음을 볼 수 있습니다.

드물게 XDG_SESSION_TYPE 환경 변수가 설정되지 않습니다. 이 경우 다음 명령을 대신 사용할 수 있습니다.

 loginctl show-session $(loginctl show-user $(whoami) -p 디스플레이 --value) -p 유형 --value

내부의 중첩된 loginctl 명령은 show-user 명령을 사용하여 명명된 사용자의 속성을 표시합니다. whoami 명령은 현재 사용자의 이름을 제공합니다. -p (속성) 옵션은 loginctl 의 출력을 "디스플레이" 설정에 대한 정보로 제한하고 --value 옵션을 사용하여 값만 반환합니다. 우리는 loginctl 의 응답에 “Display=” 문자열을 포함하고 싶지 않습니다. 이 모든 것이 세션 ID를 제공합니다.

세션 ID를 외부 loginctl 에 전달하고 show-session 명령을 사용하여 세션의 속성을 표시합니다. -p (속성) 옵션을 사용하여 출력을 세션 유형에 대한 정보로 제한하고 --value 옵션을 사용하여 "Type=" 레이블 없이 값을 표시합니다.

Wayland를 사용하는 컴퓨터에서 다음을 볼 수 있습니다.

Fedora Linux에서 loginctl 명령을 사용하여 Wayland 또는 X11이 사용 중인지 확인

X Window System을 실행 중인 경우 다음이 표시됩니다.

Manjaro inux에서 loginctl 명령을 사용하여 Wayland 또는 X11이 사용 중인지 확인

Wayland 또는 X11을 사용해야 합니까?

문제가 없는 한 이미 사용 중인 것을 계속 사용할 수도 있습니다. 그러나 불안정하거나 불안정한 화면 업데이트가 감지되면 사용하지 않는 것으로 이동해 볼 수 있습니다.

그놈에서 교체하여 다른 시스템을 사용하려면 로그인 화면에서 사용자 이름을 클릭한 다음 디스플레이 오른쪽 하단에 있는 톱니바퀴 아이콘을 클릭하십시오.

Wayland 또는 X11 기반 데스크탑 환경을 선택할 수 있는 그놈의 드롭다운 메뉴

메뉴는 다양한 그놈 버전을 제공합니다. "Xorg"를 언급하는 옵션은 X Window System을 사용하고 Wayland를 사용하지 않는 옵션을 사용합니다.

관련: Linux에서 환경 변수를 나열하는 방법