맨위로가기

웨이랜드 (프로토콜)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

웨이랜드는 리눅스 그래픽 및 X.Org 소프트웨어 개발자인 크리스티안 회그스버그가 2008년 시작한 프로젝트로, AIGLX와 DRI2 작업을 기반으로 한다. "모든 프레임이 완벽한" 시스템을 목표로 테어링, 지연, 깜빡임 없는 사용자 경험을 제공하는 것을 목표로 한다. 2010년 freedesktop.org 프로젝트가 되었으며, MIT 라이선스, GNU General Public License 버전 2를 거쳐 현재는 MIT 엑스패트 라이선스를 사용한다. 웨이랜드는 클라이언트-서버 모델을 따르며, 하위 계층은 프로세스 간 통신을 처리하고 상위 계층은 윈도 시스템의 기본 기능을 구현한다. 렌더링 API를 제공하지 않고 클라이언트가 직접 렌더링하는 방식을 사용하며, X11에 비해 아키텍처, 컴포지팅, 렌더링, 보안, IPC, 네트워킹 등에서 차이를 보인다. 웨이랜드 컴포지터로는 Weston, KWin, Mutter, Sway 등이 있으며, libinput 라이브러리를 통해 입력 장치를 통합한다. 데스크톱 리눅스 배포판, 툴킷, 데스크톱 환경, 모바일 및 임베디드 하드웨어 등에서 채택되고 있으며, 지속적으로 릴리스 및 개발이 진행되고 있다.

더 읽어볼만한 페이지

  • MIT 라이선스 소프트웨어 - MS-DOS
    MS-DOS는 마이크로소프트가 개발한 개인용 컴퓨터용 디스크 운영 체제로, IBM PC의 표준 운영 체제로 널리 사용되었으며, 단일 작업 환경과 명령줄 인터페이스를 특징으로 한다.
  • MIT 라이선스 소프트웨어 - Zcash
    Zcash는 존스 홉킨스 대학교 연구를 기반으로 개발된 익명성 강화 암호화폐로, zk-SNARK 영지식 증명을 통해 거래 당사자의 익명성을 보장하지만, 범죄 악용 우려와 규제 대상 가능성이 존재한다.
  • 자유 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
  • 자유 소프트웨어 - PHP
    PHP는 라스무스 러도프가 개발한 범용 스크립팅 언어로, 웹 개발에 널리 사용되며 LAMP 아키텍처의 핵심 요소이다.
  • C로 작성된 자유 소프트웨어 - PostgreSQL
    PostgreSQL은 캘리포니아 대학교 버클리 분교의 Ingres 프로젝트에서 시작되어 전 세계 개발자들의 협력을 통해 발전해온 객체 관계형 데이터베이스 관리 시스템(ORDBMS)이다.
  • C로 작성된 자유 소프트웨어 - 김프
    김프(GIMP)는 GNU 프로젝트에서 개발된 크로스 플랫폼 기반의 무료 오픈소스 래스터 그래픽 편집기로, 다양한 운영체제를 지원하며 풍부한 기능을 제공하지만 사용자 인터페이스에 대한 비판과 일부 기능의 부족함에 대한 평가도 존재한다.
웨이랜드 (프로토콜) - [IT 관련 정보]에 관한 문서
개요
유형디스플레이 서버 프로토콜
개발freedesktop.org
최초 릴리스2008년 9월 30일
안정화 버전Wayland: 1.23, Weston: 14.0.1
최신 릴리스 날짜2024년 5월 30일
프로그래밍 언어C
운영 체제공식: 리눅스
장르윈도우 시스템
디스플레이 서버
라이선스MIT 라이선스
웹사이트Wayland 공식 웹사이트
Weston, Wayland 서버의 참조 구현
세부 사항
의도X11을 대체할 디스플레이 시스템

2. 역사적 배경

웨이랜드 디스플레이 서버 프로젝트는 2008년 레드햇 개발자 크리스티안 회그스버그(Kristian Høgsberg)에 의해 시작되었다.[5]

2010년경부터 리눅스 데스크톱 그래픽은 "렌더링 인터페이스 무더기... 모두 X 서버와 통신하며, X 서버가 우주의 중심에 있다"에서 리눅스 커널과 그 구성 요소(예: DRI, DRM) "중간"에 위치하고, "X 및 웨이랜드와 같은 창 시스템... 구석에" 위치하는 방향으로 이동했다. 이는 "더 많은 유연성과 더 나은 성능을 제공하는 훨씬 단순화된 그래픽 시스템"이 될 것이다.

회그스버그는 X에 대한 확장을 추가할 수도 있었지만, 프로젝트 FAQ에 설명된 이유로 "[클라이언트와 하드웨어 사이의] 핫패스에서 X를 제거"하는 것을 선호했다.

웨이랜드는 Weston이라는 프로토콜과 레퍼런스 구현으로 구성된다. 또한 이 프로젝트는 X가 아닌 웨이랜드로 렌더링되는 GTK 및 Qt 버전을 개발하고 있다. 대부분의 애플리케이션은 애플리케이션을 수정하지 않고도 이러한 라이브러리 중 하나를 통해 웨이랜드에 대한 지원을 얻을 것으로 예상된다.

웨이랜드의 초기 버전은 네트워크 투명성을 제공하지 않았지만, 회그스버그는 2010년에 네트워크 투명성이 가능하다고 언급했다. 2011년 구글 서머 오브 코드 프로젝트로 시도되었지만 성공하지 못했다. 아담 잭슨(Adam Jackson)은 "픽셀 스크래핑"(VNC와 유사) 또는 네트워크를 통해 "렌더링 명령 스트림"을 보내도록 하여(RDP, SPICE 또는 X11과 유사) 웨이랜드 애플리케이션에 대한 원격 액세스를 제공하는 것을 구상했다. 2013년 초, 회그스버그는 압축된 이미지를 실제 컴포지터로 보내는 프록시 웨이랜드 서버를 사용하여 네트워크 투명성을 실험하고 있었다. 2017년 8월, GNOME은 웨이랜드에서 최초의 픽셀 스크래핑 VNC 서버 구현을 보았다.

2. 1. 초기 개발

EGL 상에서 다이렉트 렌더링을 사용하는 '''웨이랜드'''


크리스티안 회그스버그는 리눅스 그래픽과 X.Org 개발자로, AIGLX와 DRI2 작업 경력이 있다. 그는 레드햇에서 일하면서 2008년에 부업 프로젝트로 웨이랜드 개발을 시작했다. 그의 목표는 "모든 프레임이 완벽한" 시스템, 즉 "애플리케이션이 렌더링을 충분히 제어하여 테어링, 지연, 다시 그리기 또는 깜빡임을 절대 볼 수 없는" 시스템을 만드는 것이었다. 회그스버그는 "핵심 개념이 구체화"될 때 웨이랜드 타운을 지나고 있었고, 그에 따라 이름을 붙였다.

2010년 10월, 웨이랜드는 freedesktop.org 프로젝트가 되었다. 이 마이그레이션의 일환으로 이전 구글 그룹은 프로젝트의 주요 토론 및 개발 지점으로 'wayland-devel' 메일링 리스트로 대체되었다.

웨이랜드 클라이언트 및 서버 라이브러리는 처음에는 MIT 라이선스로 출시되었으며, 레퍼런스 컴포지터 웨스턴과 일부 예시 클라이언트는 GNU General Public License 버전 2를 사용했다. 나중에 모든 GPL 코드는 MIT 라이선스 아래에서 재 라이선스되어 "참조 구현과 실제 라이브러리 간에 코드를 더 쉽게 이동할 수 있게" 되었다. 2015년에는 웨이랜드에서 사용된 라이선스 텍스트가 약간 다른 이전 버전의 MIT 라이선스라는 사실이 밝혀졌고, 라이선스 텍스트는 X.Org 프로젝트에서 사용되는 현재 버전(MIT 엑스패트 라이선스로 알려짐)으로 업데이트되었다.

웨이랜드는 Mesa 호환 드라이버와 DRI2 지원뿐만 아니라 Hybris 프로젝트를 통해 안드로이드 드라이버와도 작동한다.

2. 2. Freedesktop.org 프로젝트 편입

2010년 10월, 웨이랜드는 freedesktop.org 프로젝트가 되었다. 이는 웨이랜드가 리눅스 커뮤니티의 공식적인 프로젝트로 인정받았음을 의미한다. 이 과정의 일환으로, 이전의 구글 그룹스는 'wayland-devel' 메일링 리스트로 대체되어 프로젝트의 주요 토론 및 개발 장소가 되었다.

2. 3. 라이선스 변경

웨이랜드 클라이언트 및 서버 라이브러리는 초기에는 MIT 라이선스로 출시되었고, 레퍼런스 컴포지터 웨스턴과 일부 예시 클라이언트는 GNU General Public License 버전 2를 사용했다. 나중에 모든 GPL 코드는 MIT 라이선스 아래에서 재라이선스되어, "참조 구현과 실제 라이브러리 간에 코드를 더 쉽게 이동할 수 있게" 되었다. 2015년에는 웨이랜드에서 사용된 라이선스 텍스트가 약간 다른 이전 버전의 MIT 라이선스라는 사실이 밝혀졌고, 라이선스 텍스트는 X.Org 프로젝트에서 사용되는 현재 버전(MIT 엑스패트 라이선스로 알려짐)으로 업데이트되었다.

3. 소프트웨어 아키텍처

웨이랜드는 클라이언트-서버 모델을 기반으로 하며, 클라이언트는 그래픽 애플리케이션, 서버(컴포지터)는 화면 표시를 제어한다. 레드햇 개발자 크리스티안 회그스버그(Kristian Høgsberg)가 2008년에 시작한 프로젝트이다.[5]

웨이랜드는 프로토콜과 레퍼런스 구현으로 구성된다. 또한 GTKQt와 같이 웨이랜드에서 렌더링되는 버전도 개발 중이다. 대부분의 애플리케이션은 별도 수정 없이 이러한 라이브러리를 통해 웨이랜드를 지원받을 수 있을 것으로 예상된다.

웨이랜드 초기 버전은 네트워크 투명성을 제공하지 않았지만, 2010년 회그스버그는 네트워크 투명성이 가능하다고 언급했다. 2013년 초, 회그스버그는 압축된 이미지를 실제 컴포지터로 보내는 프록시 웨이랜드 서버를 사용하여 네트워크 투명성을 실험했다. 2017년 8월, GNOME은 웨이랜드에서 최초의 픽셀 스크래핑 VNC 서버 구현을 보았다. 최신 웨이랜드 컴포지터에서 네트워크 투명성은 [https://github.com/flatpak/xdg-desktop-portal xdg-desktop-portal implementation]에서 처리되며, 이 구현은 RemoteDesktop 포털을 구현한다.



웨이랜드는 X을 대체하기 위해 고안되었으며, X 서버의 많은 기능을 커널(메모리 관리, 명령 스케줄링, 모드 설정)이나 라이브러리(cairo, pixman, freetype, fontconfig, pango 등)로 이동시켜 더 단순하고 효율적인 그래픽 시스템을 제공한다.

Wayland 컴포지터는 자체 추가 인터페이스를 정의하고 공개할 수 있다.。이 기능을 통해 코어 인터페이스가 제공하는 기본 기능을 넘어 프로토콜을 확장할 수 있다. 이는 Wayland 프로토콜 확장을 실현하는 표준적인 방법이 되었다. 컴포지터는 특화되거나 고유한 기능을 제공하기 위해 사용자 지정 인터페이스를 추가할 수 있다. Wayland 레퍼런스 컴포지터인 웨스턴(Weston)은 새로운 컨셉이나 아이디어를 위한 테스트 베드로, 새로운 실험적인 인터페이스를 구현하기 위해 사용자 지정 인터페이스를 사용했다. 이러한 컨셉과 아이디어는 후에 코어 프로토콜의 일부가 되었다(예: ''wl_subsurface'' 인터페이스는 Wayland 1.4에 추가되었다).

3. 1. 프로토콜 아키텍처

웨이랜드 프로토콜 아키텍처에서 클라이언트와 컴포지터는 참조 구현 라이브러리를 사용하여 웨이랜드 프로토콜을 통해 통신한다.


웨이랜드 프로토콜은 클라이언트-서버 모델을 따르며, 여기서 클라이언트는 화면에 픽셀 버퍼의 표시를 요청하는 그래픽 애플리케이션이고, 서버(컴포지터)는 이러한 버퍼의 표시를 제어하는 서비스 제공자이다.

웨이랜드 참조 구현은 두 계층 프로토콜로 설계되었다:

  • 하위 계층 또는 ''와이어 프로토콜''은 클라이언트와 컴포지터 간의 프로세스 간 통신을 처리하고, 그들이 교환하는 데이터의 마샬링을 처리한다.
  • 상위 계층은 클라이언트와 컴포지터가 윈도 시스템의 기본 기능을 구현하기 위해 교환해야 하는 정보를 처리한다. 이 계층은 "비동기 객체 지향 프로토콜"로 구현된다.[7]


하위 계층은 C로 수동으로 작성되었지만, 상위 계층은 XML 형식으로 저장된 프로토콜 요소에 대한 설명에서 자동으로 생성된다. 이 XML 파일의 프로토콜 설명이 변경될 때마다 이러한 프로토콜을 구현하는 C 소스 코드를 다시 생성하여 새로운 변경 사항을 포함할 수 있으므로 매우 유연하고 확장 가능하며 오류 방지 프로토콜이 가능하다.

웨이랜드 프로토콜의 참조 구현은 두 개의 라이브러리로 나뉜다: `libwayland-client`는 웨이랜드 클라이언트에서 사용하고, `libwayland-server`는 웨이랜드 컴포지터에서 사용한다.[8]

웨이랜드 프로토콜은 "비동기 객체 지향 프로토콜"로 설명된다.[7] ''객체 지향''은 컴포지터가 제공하는 서비스가 동일한 컴포지터에 존재하는 일련의 ''객체''로 표현된다는 의미이다. 각 객체는 이름, 여러 개의 메서드(''요청''이라고 함)와 여러 개의 연관된 ''이벤트''를 갖는 ''인터페이스''를 구현한다. 모든 요청과 이벤트는 0개 이상의 인수를 가지며, 각 인수는 이름과 데이터 유형을 갖는다. 이 프로토콜은 요청이 동기화된 응답이나 ACK을 기다릴 필요가 없어 왕복 지연 시간을 피하고 향상된 성능을 달성한다는 의미에서 ''비동기''적이다.

웨이랜드 클라이언트는 객체의 인터페이스가 해당 요청을 지원하는 경우 해당 객체에 대한 요청(메서드 호출)을 할 수 있다. 클라이언트는 또한 해당 요청의 인수에 필요한 데이터를 제공해야 한다. 이것이 클라이언트가 컴포지터에 서비스를 요청하는 방식이다. 컴포지터는 차례로 객체가 이벤트를 발생시켜 클라이언트에게 정보를 다시 보낸다(아마도 인수와 함께). 이러한 이벤트는 특정 요청에 대한 응답으로, 또는 내부 이벤트(예: 입력 장치에서 발생) 또는 상태 변경에 따라 비동기적으로 컴포지터에 의해 발생될 수 있다. 오류 조건도 컴포지터에 의해 이벤트로 신호가 전송된다.[7]

클라이언트가 객체에 요청을 할 수 있으려면 먼저 서버에게 해당 객체를 식별하는 데 사용할 ID 번호를 알려야 한다.[7] 컴포지터에는 전역 객체와 비전역 객체, 두 가지 유형의 객체가 있다. 전역 객체는 컴포지터가 생성될 때(그리고 파괴될 때도) 클라이언트에게 공지되는 반면, 비전역 객체는 일반적으로 이미 기능의 일부로 존재하는 다른 객체에 의해 생성된다.

인터페이스와 해당 요청 및 이벤트는 웨이랜드 프로토콜을 정의하는 핵심 요소이다. 프로토콜의 각 버전에는 모든 웨이랜드 컴포지터에 있을 것으로 예상되는 요청 및 이벤트와 함께 일련의 인터페이스가 포함되어 있다. 선택적으로 웨이랜드 컴포지터는 새로운 요청 및 이벤트를 지원하는 자체 인터페이스를 정의하고 구현하여 핵심 프로토콜의 기능을 확장할 수 있다.[9] 프로토콜 변경을 용이하게 하기 위해 각 인터페이스에는 이름 외에 "버전 번호" 속성이 포함되어 있다. 이 속성을 통해 동일한 인터페이스의 변형을 구별할 수 있다. 각 웨이랜드 컴포지터는 사용 가능한 인터페이스뿐만 아니라 해당 인터페이스의 지원되는 버전도 노출한다.[10]

웨이랜드 컴포지터는 자체적인 추가 인터페이스를 정의하고 내보낼 수 있다.[9] 이 기능은 핵심 인터페이스에서 제공하는 기본 기능을 넘어 프로토콜을 확장하는 데 사용되며, 웨이랜드 프로토콜 확장을 구현하는 표준 방법이 되었다. 특정 컴포지터는 특수하거나 고유한 기능을 제공하기 위해 사용자 지정 인터페이스를 추가하도록 선택할 수 있다. 웨이랜드 레퍼런스 컴포지터인 웨스턴(Weston)은 새로운 개념과 아이디어를 위한 테스트베드로 새로운 실험적 인터페이스를 구현하는 데 사용했으며, 그중 일부는 나중에 핵심 프로토콜의 일부가 되었다(예: 웨이랜드 1.4에 추가된 ''wl_subsurface'' 인터페이스).

3. 2. 프로토콜 개요



웨이랜드 프로토콜은 클라이언트-서버 모델을 따르며, 여기서 클라이언트는 화면에 픽셀 버퍼 표시를 요청하는 그래픽 애플리케이션이고, 서버(컴포지터)는 이러한 버퍼의 표시를 제어하는 서비스 제공자이다.

웨이랜드 참조 구현은 다음과 같은 두 계층으로 구성된 프로토콜이다:[6]

하위 계층은 C로 작성되었지만, 상위 계층은 XML 형식의 프로토콜 설명에서 자동 생성된다.[8] XML 파일 변경에 따라 C 소스 코드를 다시 생성하여 유연하고 확장 가능하며 오류 방지가 가능한 프로토콜을 만든다.

웨이랜드 프로토콜의 참조 구현은 `libwayland-client` (클라이언트용)와 `libwayland-server` (컴포지터용) 두 라이브러리로 나뉜다.[8]

웨이랜드 프로토콜은 "비동기 객체 지향 프로토콜"이다.[7] ''객체 지향''은 컴포지터가 제공하는 서비스가 일련의 ''객체''로 표현됨을 의미한다. 각 객체는 ''인터페이스''를 구현하며, 인터페이스는 이름, 메서드(''요청'') 및 ''이벤트''를 갖는다. 요청과 이벤트는 인수를 가질 수 있으며, 각 인수는 이름과 데이터 유형을 갖는다. 프로토콜은 요청이 동기화된 응답을 기다릴 필요가 없어 왕복 지연 시간을 줄이고 성능을 향상시킨다는 점에서 ''비동기''적이다.

웨이랜드 클라이언트는 객체 인터페이스가 지원하는 요청을 할 수 있으며, 요청에 필요한 데이터를 제공해야 한다. 컴포지터는 객체가 이벤트를 발생시켜 클라이언트에게 정보를 다시 보낸다. 이벤트는 요청에 대한 응답이거나, 내부 이벤트 또는 상태 변경에 따라 비동기적으로 발생할 수 있다. 오류 조건도 컴포지터에 의해 이벤트로 전달된다.[7]

클라이언트는 객체에 요청하기 전에 ID 번호로 객체를 식별해야 한다.[7] 컴포지터에는 전역 객체와 비전역 객체가 있다. 전역 객체는 컴포지터 생성 시 클라이언트에게 알려지며, 비전역 객체는 일반적으로 다른 객체에 의해 생성된다.

인터페이스, 요청 및 이벤트는 웨이랜드 프로토콜을 정의하는 핵심 요소이다. 프로토콜 각 버전에는 인터페이스, 요청 및 이벤트 집합이 포함된다. 웨이랜드 컴포지터는 자체 인터페이스를 정의하고 구현하여 핵심 프로토콜 기능을 확장할 수 있다.[9] 각 인터페이스에는 "버전 번호" 속성이 있어 인터페이스 변형을 구별할 수 있다. 각 웨이랜드 컴포지터는 사용 가능한 인터페이스와 지원 버전을 노출한다.[10]

3. 2. 1. 웨이랜드 핵심 인터페이스

웨이랜드 프로토콜의 현재 버전 인터페이스는 웨이랜드 소스 코드의 `protocol/wayland.xml` 파일에 정의되어 있으며, 모든 웨이랜드 컴포지터가 구현해야 하는 최소 요구 사항이다.[9]

웨이랜드 프로토콜의 가장 기본적인 인터페이스는 다음과 같다:

  • ''wl_display'' - 웨이랜드 프로토콜 자체를 캡슐화하는 핵심 전역 객체이다.
  • ''wl_registry'' - 컴포지터가 모든 클라이언트에서 사용할 수 있도록 하려는 모든 전역 객체를 등록하는 전역 레지스트리 객체이다.
  • ''wl_compositor'' - 컴포지터를 나타내는 객체로, 서로 다른 표면을 하나의 출력으로 결합하는 역할을 담당한다.
  • ''wl_surface'' - 위치, 크기 및 픽셀 콘텐츠로 정의된 화면의 사각형 영역을 나타내는 객체이다.
  • ''wl_buffer'' - ''wl_surface'' 객체에 연결될 때 표시 가능한 콘텐츠를 제공하는 객체이다.
  • ''wl_output'' - 화면의 표시 가능한 영역을 나타내는 객체이다.
  • ''wl_pointer'', ''wl_keyboard'', ''wl_touch'' - 포인터 또는 키보드와 같은 다양한 입력 장치를 나타내는 객체이다.
  • ''wl_seat'' - 멀티시트 구성에서 시트(입/출력 장치 세트)를 나타내는 객체이다.


일반적인 웨이랜드 클라이언트 세션은 ''wl_display'' 객체를 사용하여 컴포지터에 연결을 열면서 시작된다. 클라이언트는 ''wl_registry'' 전역 객체를 요청하고 관심 있는 객체를 바인딩할 수 있다. 일반적으로 클라이언트는 최소한 ''wl_compositor'' 객체를 바인딩하고, 여기서 하나 이상의 ''wl_surface'' 객체를 요청하여 디스플레이에 애플리케이션 출력을 표시한다.[9]

웨이랜드 컴포지터는 자체적인 추가 인터페이스를 정의하고 내보낼 수 있다. 이 기능은 핵심 인터페이스에서 제공하는 기본 기능을 넘어 프로토콜을 확장하는 데 사용되며, 웨이랜드 프로토콜 확장을 구현하는 표준 방법이 되었다.

3. 2. 2. 웨이랜드 확장 인터페이스

웨이랜드 컴포지터는 자체적인 추가 인터페이스를 정의하고 내보낼 수 있다.[9] 이 기능은 핵심 인터페이스에서 제공하는 기본 기능을 넘어 프로토콜을 확장하는 데 사용되며, 웨이랜드 프로토콜 확장을 구현하는 표준 방법이 되었다. 특정 컴포지터는 특수하거나 고유한 기능을 제공하기 위해 사용자 지정 인터페이스를 추가하도록 선택할 수 있다. 웨이랜드 레퍼런스 컴포지터인 웨스턴(Weston)은 새로운 개념과 아이디어를 위한 테스트베드로 새로운 실험적 인터페이스를 구현하는 데 사용했으며, 그중 일부는 나중에 핵심 프로토콜의 일부가 되었다(예: 웨이랜드 1.4에 추가된 ''wl_subsurface'' 인터페이스).

XDG-Shell 프로토콜(XDG에 대해서는 freedesktop.org를 참조)은 Wayland 컴포지터(Weston에 한정되지 않음)에서 서피스를 관리하기 위한 확장 수단이다. xdg_shell은 장기적으로 wl_shell을 대체하는 것을 목표로 하는 프로토콜이다. 그러나 현재 xdg_shell은 Wayland 코어 프로토콜의 일부가 아니다. xdg_shell은 주로 xdg_surface와 xdg_popup, 두 개의 새로운 인터페이스를 제공한다. xdg_surface 인터페이스는 움직일 수 있고, 크기 조절이 가능하며, 최대화 등을 할 수 있는 데스크톱 스타일 윈도우를 구현한다. xdg_popup 인터페이스는 데스크톱 스타일의 팝업과 메뉴를 구현한다.

IVI-Shell은 Wayland 코어 프로토콜의 확장으로, 차량 내 엔터테인먼트(IVI) 기기를 대상으로 한다.[79]

3. 3. 확장 프로토콜

Wayland는 자체적인 렌더링 API를 포함하지 않고, 클라이언트가 직접 렌더링을 처리하는 '직접 렌더링' 방식을 사용한다. 클라이언트는 Cairo, OpenGL 등의 라이브러리나 Qt, GTK와 같은 위젯 툴킷을 이용하여 렌더링을 수행하고, 렌더링된 결과는 `wl_buffer` 객체에 저장된다.

클라이언트와 컴포지터 간의 데이터 공유는 주로 공유 메모리 방식(`wl_shm`, `wl_shm_pool` 인터페이스)이나 GPU 가속 API(OpenGL, OpenGL ES, Vulkan)를 통해 이루어진다. GPU 가속 방식은 컴포지터가 추가적인 데이터 복사 없이 렌더링을 처리할 수 있게 하여 성능 향상에 기여한다.

렌더링이 완료되면 클라이언트는 버퍼 객체를 표면 객체에 연결하고 "commit" 요청을 보내 컴포지터에게 표시를 요청한다. 클라이언트는 버퍼 재사용 여부에 따라 컴포지터의 해제 알림을 기다리거나, 새로운 버퍼를 사용하여 렌더링을 계속할 수 있다.

Wayland 컴포지터와 해당 클라이언트는 프레임 버퍼에 직접 그리기 위해 EGL을 사용한다. X.Org 서버는 XWayland와 Glamor로 구동된다.

3. 3. 1. XDG-Shell 프로토콜

XDG-Shell 프로토콜(freedesktop.org 참조)은 웨이랜드 컴포지터에서 표면(surface)을 관리하는 확장된 방식이다. 표면 조작(최대화, 최소화, 전체 화면 등)의 기존 방식은 핵심 웨이랜드 프로토콜의 일부이며 `wl_shell_*()` 함수를 사용하는 것이다. 반대로 xdg-shell 프로토콜 구현은 웨이랜드 컴포지터에서 제공해야 한다.

xdg_shell은 장기적으로 wl_shell을 대체하는 것을 목표로 하는 프로토콜이지만, 웨이랜드 핵심 프로토콜의 일부는 아니다. 처음에는 개발 장소로 사용하기 위한 비-안정 API로 시작하여, 여러 데스크톱 셸에서 요구하는 기능이 정의되면 마침내 안정화될 수 있다. xdg_shell은 주로 xdg_surface 및 xdg_popup의 두 가지 새로운 인터페이스를 제공한다. xdg_surface 인터페이스는 이동, 크기 조절, 최대화 등이 가능한 데스크톱 스타일 창을 구현하며 자식/부모 관계를 생성하기 위한 요청을 제공한다. xdg_popup 인터페이스는 데스크톱 스타일 팝업/메뉴를 구현한다. xdg_popup은 항상 다른 표면에 대해 일시적이며 암묵적인 grab을 가지고 있다.

3. 3. 2. IVI-Shell 프로토콜

IVI-Shell은 차량 인포테인먼트 (IVI) 장치를 대상으로 하는 Wayland 코어 프로토콜의 확장이다.[11]

3. 4. 렌더링 모델

웨이랜드는 X11과 달리 렌더링 API를 포함하지 않고, 직접 렌더링 모델을 사용한다.[12] 이는 클라이언트가 직접 렌더링을 수행하고, 렌더링된 내용을 컴포지터와 공유하는 방식이다.[13]

웨이랜드의 렌더링 방식은 다음과 같이 요약될 수 있다.

  • 클라이언트는 렌더링을 직접 수행하거나, 카이로, OpenGL 등의 렌더링 라이브러리, 또는 Qt, GTK와 같은 위젯 라이브러리를 활용할 수 있다.
  • 렌더링된 결과는 `wl_buffer` 객체에 저장되며, 이 객체는 클라이언트와 컴포지터 간에 공유된다.
  • 클라이언트는 공유 메모리를 사용하거나, GPU 가속 API(OpenGL, OpenGL ES, Vulkan 등)를 통해 비디오 메모리에 직접 렌더링하여 성능을 높일 수 있다.
  • 렌더링이 완료되면 클라이언트는 컴포지터에게 렌더링된 내용을 표시하도록 요청한다.


웨이랜드 프로토콜은 "비동기 객체 지향 프로토콜"이다. ''객체 지향''은 컴포지터가 제공하는 서비스가 일련의 ''객체''로 제공된다는 것을 의미한다. 각 객체는 ''인터페이스''를 가지는데, 인터페이스는 이름, 메서드(''요청''), 관련 이벤트를 가진다. 요청과 이벤트는 인수를 가질 수 있으며, 각 인수는 이름과 데이터 형식을 가진다. 프로토콜이 ''비동기''라는 것은 요청이 동기적인 반환이나 ACK을 기다릴 필요가 없다는 것을 의미하며, 이는 왕복 시간을 피하고 성능을 향상시킨다.

웨이랜드 클라이언트는 객체가 지원하는 요청을 해당 객체로 요청할 수 있다(메서드를 호출). 클라이언트는 필요한 데이터를 요청의 인수로 제공해야 하며, 이것이 컴포지터로부터 서비스를 요청하는 방법이다. 컴포지터는 이벤트를 발행하여 정보를 클라이언트로 반환한다. 이러한 이벤트는 요청에 대한 반응이거나, 비동기적인 내부 이벤트나 상태 변화일 수 있다. 에러 상태도 컴포지터에 의해 이벤트로 통지된다.

객체에 요청을 발행하기 위해 클라이언트는 먼저 객체를 식별하는 ID 번호를 서버에 전달해야 한다. 컴포지터에는 글로벌 객체와 비글로벌 객체의 두 종류가 있다. 글로벌 객체는 생성 및 폐기 시 컴포지터에 의해 클라이언트에 통지된다. 비글로벌 객체는 일반적으로 이미 존재하는 다른 객체에 의해 생성된다.

인터페이스와 그 요구 및 이벤트는 웨이랜드 프로토콜을 정의하는 핵심 요소이다. 프로토콜의 각 버전은 웨이랜드 컴포지터에 있을 것으로 예상되는 인터페이스와 그 요구 및 이벤트의 집합을 포함한다. 웨이랜드 컴포지터는 선택적으로 새로운 요청과 이벤트를 지원하는 고유한 인터페이스를 정의하고 구현할 수 있으며, 이를 통해 코어 프로토콜 이상의 기능으로 확장할 수 있다. 각 인터페이스는 이름 외에 "버전 번호" 속성을 가지며, 이는 동일한 인터페이스의 파생 버전을 구별할 수 있게 한다. 각 웨이랜드 컴포지터는 어떤 인터페이스를 사용할 수 있는지, 그리고 해당 인터페이스가 지원하는 버전을 공개한다.

Wayland 컴포지터는 자체 추가 인터페이스를 정의하고 공개할 수 있다. 이 기능을 통해 코어 인터페이스가 제공하는 기본 기능을 넘어 프로토콜을 확장할 수 있다. 이는 Wayland 프로토콜 확장을 실현하는 표준적인 방법이 되었다. 컴포지터는 특화되거나 고유한 기능을 제공하기 위해 사용자 지정 인터페이스를 추가할 수 있다. Wayland 레퍼런스 컴포지터인 Weston은 새로운 컨셉이나 아이디어를 위한 테스트 베드로, 새로운 실험적인 인터페이스를 구현하기 위해 사용자 지정 인터페이스를 사용했다. 이러한 컨셉과 아이디어는 후에 코어 프로토콜의 일부가 되었다(예: ''wl_subsurface'' 인터페이스는 Wayland 1.4에 추가되었다).

3. 4. 1. 직접 렌더링

웨이랜드 프로토콜은 렌더링 API를 포함하지 않는다.[12] 대신, 클라이언트가 창 내용을 컴포지터와 공유할 수 있는 버퍼로 렌더링하는 ''직접 렌더링'' 방식을 따른다.[13] 클라이언트는 직접 렌더링을 수행하거나, 카이로나 OpenGL 같은 렌더링 라이브러리를 사용하거나, Qt 또는 GTK와 같이 웨이랜드를 지원하는 상위 수준 위젯 라이브러리의 렌더링 엔진을 사용할 수 있다. 또한 글꼴 렌더링을 위해 Freetype과 같은 특수 라이브러리를 사용할 수도 있다.

렌더링된 창 내용은 ''wl_buffer'' 객체에 저장되며, 이 객체의 내부 유형은 구현에 따라 다르다. 콘텐츠 데이터는 클라이언트와 컴포지터 간에 공유될 수 있어야 한다. 클라이언트가 소프트웨어(CPU) 렌더러를 사용하고 결과가 시스템 메모리에 저장되면, 공유 메모리를 사용하여 추가 복사 없이 버퍼 통신을 할 수 있다. 웨이랜드 프로토콜은 ''wl_shm''[14] 및 ''wl_shm_pool''[15] 인터페이스를 통해 이러한 종류의 공유 메모리 버퍼를 기본적으로 제공한다. 단점은 컴포지터가 공유 데이터를 GPU에 복사하는 추가 작업을 수행해야 할 수 있어 그래픽 성능이 저하될 수 있다는 것이다.

가장 일반적인 경우는 클라이언트가 OpenGL, OpenGL ES 또는 Vulkan과 같은 하드웨어(GPU) 가속 API를 사용하여 비디오 메모리 버퍼에 직접 렌더링하는 것이다. 클라이언트와 컴포지터는 이 GPU 공간 버퍼를 참조하기 위해 특수 핸들러를 사용하여 공유할 수 있다. 이 방법을 사용하면 컴포지터가 추가 데이터 복사를 수행하지 않아도 되므로 그래픽 성능이 향상된다. 컴포지터는 동일한 하드웨어 가속 API를 사용하여 디스플레이에 표시할 최종 장면의 구성을 최적화할 수 있다.

공유 버퍼에서 렌더링이 완료되면, 웨이랜드 클라이언트는 컴포지터에게 버퍼의 렌더링된 내용을 표시하도록 지시해야 한다. 이를 위해 클라이언트는 렌더링된 콘텐츠를 저장하는 버퍼 객체를 표면 객체에 바인딩하고, 표면에 "커밋" 요청을 보내 버퍼의 제어를 컴포지터로 전송한다. 그 후 클라이언트는 컴포지터가 버퍼를 해제할 때까지 기다리거나, 다른 버퍼를 사용하여 새 프레임을 렌더링하고, 완료되면 새 버퍼를 표면에 바인딩하고 내용을 커밋할 수 있다. 렌더링에 사용된 절차는 전적으로 클라이언트가 제어한다.

4. 다른 윈도 시스템과의 비교

웨이랜드는 X11에 비해 아키텍처, 컴포지팅, 렌더링, 보안, 프로세스 간 통신, 네트워킹 등 여러 면에서 차이점을 보인다.[77]


  • 아키텍처: X11은 디스플레이 서버와 컴포지트형 윈도우 매니저가 분리되어 있지만, 웨이랜드는 이 둘을 하나로 통합했다. 또한 X11에서 클라이언트 측 프로세스였던 윈도 매니저의 일부 기능을 포함한다.
  • 컴포지팅: X11에서는 컴포지팅이 선택 사항이지만, 웨이랜드에서는 필수이다. X11은 컴포지터가 모든 픽셀 데이터를 가져와야 해서 지연 시간이 발생하지만, 웨이랜드는 컴포지터가 클라이언트로부터 직접 픽셀 데이터를 받는다.
  • 렌더링: X 서버는 자체적으로 렌더링할 수 있지만, 웨이랜드는 이 작업을 클라이언트에 위임한다. 창 장식은 클라이언트 측이나 서버 측에서 모두 렌더링할 수 있다.
  • 보안: 웨이랜드는 각 창의 입출력을 분리하여 기밀성, 무결성, 가용성을 확보한다. X11은 원래 이러한 보안 기능이 없었지만, 확장을 통해 보완되었다. 또한 웨이랜드는 대부분의 코드가 클라이언트에서 실행되므로 루트 권한으로 실행해야 하는 코드가 줄어들어 보안이 향상된다.
  • 프로세스 간 통신: X 서버는 기본적인 프로세스 간 통신 방법을 제공하지만, 웨이랜드는 이를 지원하지 않는다. 이 기능은 필요하다면 데스크톱 환경 등에서 구현해야 한다.
  • 네트워킹: X 윈도 시스템은 네트워크 투명성을 갖도록 설계되었지만, 웨이랜드는 그렇지 않다. 하지만 컴포지터가 원격 데스크톱 프로토콜을 구현하여 원격 디스플레이를 지원할 수 있다.

4. 1. X 윈도 시스템(X11)과의 차이점

Wayland영어와 X 윈도 시스템(X11)의 주요 차이점은 다음과 같다.

  • 아키텍처: X11에서 컴포지션 관리자는 별도의 기능으로 존재하지만, Wayland영어는 디스플레이 서버와 컴포지터를 하나의 기능으로 통합한다. 또한 X11에서는 별도의 클라이언트 측 프로세스였던 윈도 매니저의 일부 작업을 통합한다.[77]

  • 컴포지팅: X11에서는 컴포지팅이 선택 사항이지만, Wayland영어에서는 필수적이다. X11의 컴포지팅은 "액티브" 방식인데, 이는 컴포지터가 모든 픽셀 데이터를 가져와야 하므로 지연 시간을 발생시킨다. 반면, Wayland영어의 컴포지팅은 "패시브" 방식으로, 컴포지터가 클라이언트로부터 직접 픽셀 데이터를 수신한다.

  • 렌더링: X11 서버는 자체적으로 렌더링을 수행할 수 있지만, Wayland영어는 클라이언트에게 렌더링을 위임한다. 창 장식은 클라이언트 측(예: 그래픽 툴킷 사용) 또는 서버 측(컴포지터 사용)에서 렌더링할 수 있다.

  • 보안: Wayland영어는 각 창의 입력과 출력을 격리하여 기밀성, 무결성, 가용성을 확보한다. 원래 X11 설계는 이러한 중요한 보안 기능이 부족했으며, 이를 완화하기 위한 확장이 개발되었다. 또한, Wayland영어는 대부분의 코드가 클라이언트에서 실행되므로, 루트 권한으로 실행해야 하는 코드가 줄어들어 보안이 향상된다.

  • 프로세스 간 통신: X11 서버는 기본적인 프로세스 간 통신(IPC) 메커니즘을 제공하지만, Wayland영어 코어 프로토콜은 이를 지원하지 않는다. 해당 기능은 필요한 경우 데스크톱 환경이나 제3자에 의해 구현되어야 한다.

  • 네트워킹: X11은 네트워크 투명성을 제공하지만, Wayland영어 자체는 이를 제공하지 않는다. 그러나 컴포지터는 원격 데스크톱 프로토콜을 구현하여 원격 디스플레이 기능을 제공할 수 있다.

4. 2. X와의 호환성

XWayland는 Wayland 환경에서 X11 애플리케이션을 실행할 수 있게 해주는 호환성 계층이다. 이는 X 윈도 시스템에서 Wayland로 전환하는 과정을 돕는다.

Qt5나 GTK3 같은 위젯 툴킷은 런타임에 그래픽 백엔드를 변경할 수 있도록 지원하여, 사용자가 X 또는 Wayland 중 원하는 환경에서 애플리케이션을 실행할 수 있게 한다.

4. 2. 1. XWayland

XWayland는 Wayland 클라이언트로 실행되는 X 서버이며, Wayland 컴포지터 환경에서 네이티브 X11 클라이언트 응용 프로그램을 표시할 수 있게 해준다. 이는 XQuartz가 macOS의 네이티브 윈도 시스템에서 X 응용 프로그램을 실행하는 방식과 유사하다. XWayland의 목표는 X 윈도 시스템에서 Wayland 환경으로의 전환을 쉽게 하여, 아직 포팅되지 않은 응용 프로그램을 실행할 수 있는 방법을 제공하는 것이다. XWayland는 X.Org 서버 버전 1.16에 포함되었다.

Qt5 및 GTK3과 같은 위젯 툴킷은 런타임에 그래픽 백엔드를 전환할 수 있으며, 사용자가 응용 프로그램을 X 또는 Wayland를 통해 실행할지 로드 타임에 선택할 수 있다. Qt 5는 이를 위해 `-platform` 명령줄 옵션을 제공하며, GTK 3는 사용자가 `GDK_BACKEND` 유닉스 환경 변수를 설정하여 원하는 GDK(영어판) 백엔드를 선택할 수 있도록 한다.

4. 2. 2. 툴킷 지원

Qt5 및 GTK3과 같은 위젯 툴킷은 런타임에 그래픽 백엔드를 전환할 수 있도록 지원한다. 사용자는 응용 프로그램을 X 또는 웨이랜드를 통해 실행할지 로드 타임에 선택할 수 있다. Qt 5는 이를 위해 `-platform` 명령줄 옵션을 제공하며, GTK 3는 사용자가 `GDK_BACKEND` 유닉스 환경 변수를 설정하여 원하는 GDK 백엔드를 선택할 수 있도록 한다.

5. 웨이랜드 컴포지터



웨이랜드 디스플레이 서버 프로토콜을 구현하는 디스플레이 서버는 컴포지팅 창 관리자의 역할도 수행하기 때문에 '웨이랜드 컴포지터'라고도 불린다.

'''wlroots'''는 여러 컴포지터의 기반으로 작동하는 모듈식 웨이랜드 구현이다.[20]

  • Lipstick은 웨이랜드 컴포지터를 구현한 모바일 그래픽 셸 프레임워크이다. Sailfish OS, Nemo Mobile, AsteroidOS에서 사용된다.
  • Clayland는 Clutter를 사용하는 간단한 예시 웨이랜드 컴포지터이다.
  • Westeros는 Wayland 컴포지터 라이브러리이다. Westeros를 통해 애플리케이션이 자체 Wayland 표시를 만들 수 있게 된다. 이로 인해 타사 애플리케이션의 중첩 및 포함이 가능해진다.
  • Woodland는 TinyWL에서 영감을 얻고 단순성과 안정성에 초점을 맞춘 C로 작성된 wlroots 기반 스태킹 웨이랜드 컴포지터이다.
  • gamescope는 SteamOS의 일부이며, 초기 steamcompmgr의 대체제이다.

5. 1. 주요 컴포지터

웨이랜드 디스플레이 서버 프로토콜을 구현하는 디스플레이 서버는 컴포지팅 창 관리자의 역할도 수행하기 때문에 ''웨이랜드 컴포지터''라고도 불린다.

'''wlroots'''는 여러 컴포지터의 기반으로 작동하는 모듈식 웨이랜드 구현이다.[20]

주목할 만한 웨이랜드 컴포지터는 다음과 같다:

  • Weston – 웨이랜드 컴포지터의 참조 구현으로, 클라이언트 측 데코레이션을 구현한다.
  • Enlightenment – 버전 0.20부터 웨이랜드를 지원한다.[21]
  • KWin – 2021년 현재 거의 완벽한 웨이랜드 지원을 제공한다.[22]
  • Mutter – GNOME 3.9를 위해 웨이랜드 통합을 위한 별도의 브랜치를 유지했으며(2013년 9월),[23] 2014년 3.13.1 릴리스에서 웨이랜드 브랜치가 메인 저장소에 병합되었다.[23]
  • Clayland – Clutter를 사용하는 간단한 예시 웨이랜드 컴포지터이다.
  • Sway – wlroots를 기반으로 하는 타일링 웨이랜드 컴포지터이며, i3 X11 창 관리자를 대체할 수 있다.[24][25][26]
  • Hyprland – C++로 작성된 독립적인 타일링 웨이랜드 컴포지터로, 동적 타일링, 탭 창, 사용자 지정 렌더러 등의 기능을 제공한다.[27][28]
  • Woodland – TinyWL에서 영감을 얻고 단순성과 안정성에 초점을 맞춘 C로 작성된 wlroots 기반 스태킹 웨이랜드 컴포지터이다.


Arch Linux에서 웨이랜드(kwin_wayland 컴포지터)를 사용하는 Plasma 5.24.0 (2022년 2월)

5. 1. 1. Weston

Weston은 웨이랜드 컴포지터의 참조 구현이다.[91] 웨이랜드 프로젝트에서 개발하고 있으며, C로 작성되었고 MIT 라이선스로 배포된다. Weston은 리눅스 커널의 특정 기능에 의존하기 때문에 공식적으로 리눅스만 지원한다. Weston이 의존하는 기능에는 커널 모드 설정, 그래픽 실행 관리자 (GEM), udev가 있으며, 이러한 기능은 다른 유닉스 계열 운영 체제에는 구현되지 않았다.[91] 리눅스에서 실행될 때 하드웨어 입력은 evdev를 통해 처리되며, 버퍼 관리는 제네릭 버퍼 관리 (GBM)에 의존한다. 그러나 2013년에 Weston의 FreeBSD 프로토타입 포트가 발표되었다.[91]

Weston은 HDCP를 지원한다.[92]

Weston은 컴포지터와 애플리케이션 간의 애플리케이션 버퍼 공유를 위해 GEM에 의존한다. 독이나 패널과 같은 일반적인 데스크톱 기능을 위한 "셸" 플러그인 시스템을 포함한다.[91] 클라이언트는 자체 창 테두리와 장식을 그릴 책임이 있다. Weston은 렌더링을 위해 OpenGL ES를 사용하거나,[91] 소프트웨어 렌더링을 위해 pixman 라이브러리를 사용할 수 있다.[91] 현재 대부분의 시스템에서 전체 OpenGL 라이브러리를 설치하면 GLX나 기타 X 윈도 시스템 지원 라이브러리가 의존성으로 인해 설치되기 때문에 전체 OpenGL 구현은 사용되지 않는다.[91]

Weston용 원격 접근 인터페이스는 2013년 10월 RealVNC 직원에 의해 제안되었다.[91]

메이너드 (2017년 1월)


'''메이너드'''는 그래픽 셸이다. 메이너드는 GNOME 셸이 머터의 플러그인으로 작성된 것처럼 Weston의 플러그인으로 작성되었다.[91]

라즈베리 파이 재단은 Collabora와의 협력을 통해 메이너드를 출시하고 성능 및 메모리 사용량 개선에 힘쓰고 있다.[91]

5. 1. 2. Enlightenment

Enlightenment는 버전 0.20부터 웨이랜드를 지원한다.[21]

5. 1. 3. KWin

KWin은 2021년 현재 거의 완벽한 웨이랜드 지원을 제공한다.[22]

5. 1. 4. Mutter

Mutter는 GNOME 3.9를 위해 웨이랜드 통합을 위한 별도의 브랜치를 유지했다(2013년 9월).[23] 2014년 3.13.1 릴리스에서 웨이랜드 브랜치는 메인 저장소에 병합되었다.[23] Mutter는 GNOME 데스크톱 환경의 윈도 관리자로, 웨이랜드 지원을 제공한다.

5. 1. 5. Sway

Sway는 wlroots를 기반으로 하는 타일링 방식의 웨이랜드 컴포지터이며, i3 X11 윈도 관리자를 대체할 수 있다.[24][25][26]

5. 1. 6. Hyprland

Hyprland는 C++로 작성된 독립적인 타일링 웨이랜드 컴포지터이다. Hyprland의 주목할 만한 기능으로는 동적 타일링, 탭 창, 깨끗하고 읽기 쉬운 C++ 코드베이스, 창 애니메이션, 둥근 모서리, 투명 창에 대한 듀얼-가와세 블러를 제공하는 사용자 지정 렌더러가 있다.[27][28]

5. 2. libinput

libinput은 여러 Wayland 컴포지터에서 입력 스택을 통합하기 위해 만들어졌습니다.


libinput은 여러 웨이랜드 컴포지터에서 입력 장치(키보드, 마우스, 터치스크린 등)를 처리하는 코드를 통합하고, X.Org 서버의 입력 장치 드라이버도 제공하기 위해 만들어진 라이브러리이다. 웨스턴 1.5 버전에서 처음으로 libinput 지원이 통합되었다.

libinput은 여러 웨이랜드 컴포지터가 입력 이벤트를 공통된 방식으로 처리할 수 있도록 단일 구현을 제공하여, 각 컴포지터가 개별적으로 입력 처리 코드를 작성해야 하는 부담을 줄여준다. libinput은 udev를 통한 장치 감지, 장치 처리, 입력 장치 이벤트 처리 및 추상화 기능을 제공한다.

libinput 1.0 버전은 0.21 버전 이후에 출시되었으며, 태블릿, 버튼 세트 및 터치패드 제스처에 대한 지원을 포함하여 안정적인 API/ABI를 제공한다.

GNOME/GTK와 KDE 프레임워크 5의 변경 사항이 적용되면서, 페도라 22는 X.Org의 evdev 및 Synaptics 드라이버를 libinput으로 대체하였다.

1.16 버전부터 X.Org 서버는 `xf86-input-libinput`이라는 래퍼를 통해 libinput 라이브러리를 지원한다.

6. Wayland 보안 모듈

웨이랜드 보안 모듈은 리눅스 커널에서 발견되는 리눅스 보안 모듈(LSM) 인터페이스와 유사한 제안이다.

일부 응용 프로그램(특히 접근성 관련 응용 프로그램)은 여러 웨이랜드 컴포지터에서 작동해야 하는 권한 있는 기능을 필요로 한다. 현재 웨이랜드 환경의 응용 프로그램은 일반적으로 [https://github.com/flatpak/xdg-desktop-portal xdg-desktop-portal]을 거치거나 시스템에 대한 권한 있는 접근 권한을 얻지 않고는 스크린샷을 찍거나 입력 이벤트를 주입하는 것과 같은 민감한 작업을 수행할 수 없다.

웨이랜드 보안 모듈은 컴포지터 내에서 보안 결정을 중앙 집중식 보안 결정 엔진으로 위임하는 방식이다.

7. 채택 현황

웨이랜드는 2008년 레드햇 개발자 크리스티안 회그스버그(Kristian Høgsberg)가 시작한 디스플레이 서버 프로토콜 프로젝트이다.[5] 2010년경부터 리눅스 데스크톱 그래픽스는 X 서버를 중심으로 렌더링 인터페이스가 구성되던 방식에서 벗어나, 리눅스 커널과 그 구성 요소(DRI, DRM)를 중심으로 하고 창 시스템(X, 웨이랜드 등)은 주변적인 역할을 하는 방식으로 변화했다. 이는 더 단순하고 유연하며 성능이 뛰어난 그래픽 시스템을 만들기 위한 것이었다.

회그스버그는 X 확장을 추가하는 대신, 클라이언트와 하드웨어 사이의 핫 패스에서 X를 제거하는 방식을 택했다. 웨이랜드는 프로토콜과 참조 구현인 Weston으로 구성되며, GTK, Qt와 같은 툴킷은 웨이랜드에서 렌더링되도록 개발되어 대부분의 애플리케이션은 수정 없이 웨이랜드를 지원할 수 있을 것으로 예상된다.

초기 버전의 웨이랜드는 네트워크 투명성을 제공하지 않았지만, 2010년에 회그스버그는 네트워크 투명성이 가능하다고 언급했다. 2011년 구글 서머 오브 코드 프로젝트로 시도되었으나 성공하지 못했다. 아담 잭슨은 VNC와 유사한 픽셀 스크래핑 또는 RDP, SPICE, X11과 유사한 렌더링 명령 스트림 전송을 통해 웨이랜드 애플리케이션에 대한 원격 접근을 제공하는 방안을 제시했다. 2013년 초, 회그스버그는 압축된 이미지를 실제 컴포지터로 보내는 프록시 웨이랜드 서버를 사용해 네트워크 투명성을 실험했다. 2017년 8월, GNOME은 웨이랜드에서 최초의 픽셀 스크래핑 VNC 서버 구현을 선보였다. 최신 웨이랜드 컴포지터에서 네트워크 투명성은 [https://github.com/flatpak/xdg-desktop-portal xdg-desktop-portal implementation]에서 처리되며, 이 구현은 RemoteDesktop 포털을 구현한다.

웨이랜드 프로토콜은 단순하게 설계되어 전체 윈도우 시스템을 구현하기 위해 추가적인 프로토콜 및 인터페이스를 정의하고 구현해야 한다. 현재 이러한 추가 인터페이스가 개발 중이다. 따라서 툴킷은 이미 웨이랜드를 완벽하게 지원하지만, 그래픽 셸 개발자들은 필요한 추가 인터페이스를 개발하기 위해 웨이랜드 개발자들과 협력하고 있다.

웨이랜드는 컴포지트형 윈도우 매니저가 애플리케이션 및 그래픽 하드웨어와 직접 통신할 수 있도록 한다.[77] 각 애플리케이션은 자체 버퍼에 이미지를 그리고, 윈도우 매니저는 디스플레이 서버로서 해당 버퍼를 합성하여 각 애플리케이션 윈도우를 생성한다. 이는 컴포지트형 윈도우 매니저와 X 윈도우 시스템을 함께 사용하는 기존 방식보다 효율적이고 단순하다. 웨이랜드는 그래픽 관련 기능에 특화되어 있으며, 입력 하드웨어와의 통신에는 다른 라이브러리를 사용한다.

7. 1. 데스크톱 리눅스 배포판


  • 페도라는 2016년 11월 22일에 출시된 25 버전부터 GNOME 3.22 데스크톱 세션에서 웨이랜드를 기본으로 사용하며, 그래픽 드라이버가 지원하지 않는 경우 X.Org를 대체 수단으로 사용한다.[31] 2021년 4월 27일에 출시된 34 버전부터는 KDE 데스크톱 세션에서도 웨이랜드를 기본으로 사용한다.
  • 우분투는 17.10 (Artful Aardvark)에서 웨이랜드를 기본으로 탑재했다.[32] 그러나 18.04 LTS에서는 여러 문제로 인해 X.Org로 기본 설정을 되돌렸다.[33][34] 21.04부터 다시 웨이랜드를 기본으로 사용한다.[35]
  • 레드햇 엔터프라이즈 리눅스는 8 버전 (2019년 5월 7일 출시)부터 웨이랜드를 기본 세션으로 제공한다.[36]
  • 데비안은 10 버전 (2019년 7월 6일 출시)부터 GNOME의 기본 세션으로 웨이랜드를 제공한다.[37]
  • 슬랙웨어 리눅스는 2020년 2월 20일 개발 버전인 -current에 웨이랜드를 포함시켰으며, 이 버전은 15.0이 되었다.[38]
  • 만자로는 Manjaro 20.2 (Nibia)의 Gnome 에디션 (2020년 11월 22일 출시)부터 웨이랜드를 기본으로 제공한다.[39]

7. 2. 툴킷 지원

툴킷웨이랜드 지원 여부비고
클러터완전 지원[5]
EFL완전 지원선택 기능 제외
GTK 3.20완전 지원
Qt 5완전 지원웨이랜드 컴포지터 및 클라이언트 작성 가능
SDL지원2.0.2 버전부터 지원 시작, 2.0.4 버전부터 기본 활성화
GLFW 3.2지원
FreeGLUT초기 지원


7. 3. 데스크톱 환경

GNOME, KDE Plasma 6, Enlightenment 등 주요 데스크톱 환경에서 웨이랜드를 지원하거나 이식하고 있다.

2015년 11월, Enlightenment e20은 웨이랜드를 완벽하게 지원한다고 발표했다.[43] GNOME 3.20은 완전한 웨이랜드 세션을 제공하는 최초의 버전이었다.[43] GNOME 3.22는 GTK, Mutter, GNOME Shell 전반에 걸쳐 웨이랜드 지원을 크게 개선했다.[44] GNOME 3.24는 웨이랜드에서 독점적인 Nvidia 드라이버를 지원했다.[45]

KDE Plasma의 웨이랜드 지원은 Plasma 5 출시까지 연기되었지만, 이전에 KWin 4.11에서 실험적인 웨이랜드 지원이 있었다. Plasma 5.4 버전은 웨이랜드 세션을 제공하는 최초의 버전이었다. 2020년에는 Klipper가 웨이랜드로 이식되었고, 2020년 10월에 출시된 Plasma 5.20은 화면 캐스팅 및 녹화 기능이 개선되었다.[46][47] Plasma 6에서는 웨이랜드를 사용하는 기본 그래픽 세션이 기본값으로 설정되었고, X11 세션은 보조로 변경되었다.[48]

7. 4. 기타 소프트웨어


  • 지능형 입력 버스(IBus)는 페도라 22에서 사용 가능한 웨이랜드 지원 작업을 진행 중이다.[5]
  • 리얼VNC(RealVNC)는 2014년 7월 웨이랜드 개발자 프리뷰를 발표했다.[5]
  • [https://github.com/any1/wayvnc wayvnc]는 wlroots 기반 웨이랜드 컴포지터를 위한 VNC 서버이다.
  • 말리이트(Maliit)는 웨이랜드에서 실행되는 입력 방식 프레임워크이다.
  • kmscon은 wlterm을 사용하여 웨이랜드를 지원한다.
  • Mesa는 웨이랜드 지원이 통합되어 있다.
  • 이클립스는 2014년 GSoC 프로젝트 기간 동안 웨이랜드에서 실행되도록 제작되었다.[5]
  • Vulkan WSI(Window System Interface)는 OpenGL & OpenGL ES에 대한 EGL 또는 X11의 OpenGL에 대한 GLX와 유사한 역할을 하는 일련의 API 호출이다. Vulkan WSI는 처음부터 웨이랜드에 대한 지원을 포함한다(VK_USE_PLATFORM_WAYLAND_KHR). Vulkan 클라이언트는 Weston, GENIVI LayerManager, Mutter / GNOME Shell, Enlightenment 등을 포함하여 수정되지 않은 웨이랜드 서버에서 실행할 수 있다. WSI를 통해 응용 프로그램은 시스템의 서로 다른 GPU를 검색하고 GPU 렌더링 결과를 창 시스템에 표시할 수 있다.[5]
  • 웨이드로이드(이전에는 Anbox-Halium이라고 불림)는 웨이랜드를 사용하여 리눅스 배포판에서 실행되는 안드로이드 응용 프로그램을 위한 컨테이너이다.

7. 5. 모바일 및 임베디드 하드웨어


  • postmarketOS
  • GENIVI 얼라이언스: 현재 COVESA인 GENIVI 얼라이언스는 차량용 인포테인먼트 (IVI)를 위해 Wayland를 지원한다.[50]
  • 라즈베리 파이: 라즈베리 파이 재단은 Collabora와 협력하여 Maynard를 출시했으며, 성능과 메모리 소비를 개선하기 위해 노력하고 있다. 2024년 현재, 라즈베리 파이 OS는 labwc를 메인 Wayland 컴포지터로 사용한다.[49]
  • Jolla: Jolla의 스마트폰은 Wayland를 사용한다. 또한, Linux Sailfish OS가 다른 공급업체의 하드웨어와 함께 사용되거나 사용자가 Android 기기에 설치할 때 표준으로 사용된다.
  • 타이젠: 타이젠 2.x 버전까지는 차량용 인포테인먼트 (IVI) 설정에서 Wayland를 지원하며, 3.0 버전부터는 Wayland를 기본으로 사용한다.

8. 릴리스

Wayland와 Weston의 주요 릴리스[74]
버전릴리스 날짜주요 특징
WaylandWeston
0.85첫 릴리스.
0.95API의 안정화를 시작했다.
1.0Wayland 클라이언트 API가 안정되었다.
1.1소프트웨어 렌더링[81]。FBDEV, RDP 백엔드.
1.2Wayland 서버 API가 안정되었다.색상 관리. Subsurfaces. Raspberry Pi 백엔드.
1.3더 많은 픽셀 포맷. 언어 바인딩 지원.libhybris(영어)를 통해 Android 드라이버 지원.
1.4새로운 wl_subcompositor 및 wl_subsurface 인터페이스.멀티 프레임 버퍼 포맷. root가 없는 Weston에 대한 logind 지원.
1.5libinput. 전체 화면 쉘.
1.6libinput을 기본으로 했다.
1.7Wayland 프레젠테이션 확장 및 surface roles를 지원. IVI 쉘 프로토콜.
1.8코어와 생성된 프로토콜에서 헤더를 분리했다.다시 그리기 스케줄링. 명명된 출력. 출력 변환. Surface-shooting API.
1.9라이선스를 갱신.라이선스를 갱신. 새로운 테스트 프레임워크. Triple-head DRM 컴포지터. Linux_dmabuf 확장.
1.10드래그 앤 드롭 기능, 그룹화된 포인터 이벤트.[96]Video 4 Linux 2, 터치 입력, 디버깅 개선[97]
1.11새로운 백업 로딩 루틴, 새로운 설정 로직.프록시 래퍼, 공유 메모리 변경, Doxygen으로 생성된 HTML 문서.
1.12디버깅 환경 개선.libweston 및 libweston-desktop. 포인터 잠금 및 속박. 상대 포인터 지원.
1.13Weston의 ABI가 바뀌었다. 따라서 새 버전은 1.13.0이 아닌 2.0.0이 되었다.
1.14Weston 3.0.0이 동시에 릴리스되었다.
1.15Weston 4.0.0이 동시에 릴리스되었다.
1.16Weston 5.0.0이 동시에 릴리스되었다.
1.17Weston 6.0.0이 동시에 릴리스되었다.
1.18Weston 7.0.0이 2019년 8월 23일에 릴리스되었다.
Weston 8.0.0[113]이 2020년 1월 24일에 릴리스되었다.
Weston 9.0.0[114]이 2020년 9월 4일에 릴리스되었다.
1.19
1.20Weston 10.0.0[117]이 2022년 2월 1일에 릴리스되었다.
Weston 10.0.5[118]가 2023년 8월 2일에 릴리스되었다.
1.21Weston 11.0.0[120]이 2022년 9월 22일에 릴리스되었다.
Weston 11.0.3[121]이 2023년 8월 2일에 릴리스되었다.
1.22Weston 12.0.0[123]이 2023년 5월 17일에 릴리스되었다.
Weston 12.0.4[124]가 2024년 4월 23일에 릴리스되었다.
Weston 13.0.0[125]이 2023년 11월 27일에 릴리스되었다.
Weston 13.0.3[126]가 2024년 6월 5일에 릴리스되었다.
1.23Weston 14.0.0[128]이 2024년 9월 4일에 릴리스될 예정이다.
Weston 14.0.1[129]이 2024년 10월 21일에 릴리스될 예정이다.
1.24
colspan=5 |


참조

[1] 웹사이트 Initial commit https://gitlab.freed[...] 2024-08-04
[2] 웹사이트 Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix https://www.phoronix[...] 2016-07-20
[3] 웹사이트 My progress in Wayland compatibility layer https://discuss.haik[...] 2022-07-24
[4] 웹사이트 Wayland v/s Xorg : How Are They Similar & How Are They Different https://www.secjuice[...] 2018-06-16
[5] 웹사이트 The State Of The Wayland Display Server https://www.phoronix[...] 2009-05-20
[6] 웹사이트 Chapter 4. Wayland Protocol and Model of Operation https://wayland.free[...]
[7] 웹사이트 Chapter 4. Wayland Protocol and Model of Operation https://wayland.free[...]
[8] 웹사이트 Appendix B. Client API https://wayland.free[...]
[9] 웹사이트 Chapter 4. Wayland Protocol and Model of Operation https://wayland.free[...]
[10] 웹사이트 Chapter 4. Wayland Protocol and Model of Operation https://wayland.free[...]
[11] 웹사이트 GENIVI/wayland-ivi-extension https://github.com/G[...] 2021-11-17
[12] 웹사이트 Chapter 3. Wayland Architecture https://wayland.free[...]
[13] 웹사이트 Chapter 3. Wayland Architecture https://wayland.free[...]
[14] 웹사이트 Appendix A. Wayland Protocol Specification https://wayland.free[...]
[15] 웹사이트 Appendix A. Wayland Protocol Specification https://wayland.free[...]
[16] 웹사이트 Debian Moves To Non-Root X.Org Server By Default - Phoronix https://www.phoronix[...]
[17] 웹사이트 Non root Xorg - Gentoo Wiki https://wiki.gentoo.[...]
[18] 웹사이트 X/Rootless - Ubuntu Wiki https://wiki.ubuntu.[...]
[19] 웹사이트 1078902 – Xorg without root rights https://bugzilla.red[...]
[20] 웹사이트 README.md https://gitlab.freed[...] 2023-02-02
[21] 웹사이트 Wayland https://www.enlighte[...]
[22] 웹사이트 Plasma 5.21 https://kde.org/anno[...] 2021-02-16
[23] 웹사이트 Bump version to 3.13.1 https://gitlab.gnome[...] 2014-04-30
[24] 웹사이트 Sway https://swaywm.org/
[25] 웹사이트 swaywm/wlroots https://github.com/s[...]
[26] 웹사이트 swaywm/sway https://github.com/s[...]
[27] 웹사이트 Hyprland - ArchWiki https://wiki.archlin[...]
[28] 웹사이트 Hyprland: Dynamic tiling window compositor with the looks https://hyprland.org[...]
[29] 웹사이트 README https://gitlab.freed[...]
[30] 웹사이트 Adding Content protection support in drm-backend (!48) · Merge Requests · wayland / weston https://gitlab.freed[...] 2018-11-06
[31] 웹사이트 Changes/WaylandByDefault - Fedora Project Wiki https://fedoraprojec[...]
[32] 웹사이트 ReleaseNotes for Ubuntu 17.10 https://wiki.ubuntu.[...] Canonical
[33] 웹사이트 Ubuntu 18.04 will revert to long-in-the-tooth Xorg https://www.neowin.n[...]
[34] 웹사이트 Bionic Beaver 18.04 LTS to use Xorg by default https://insights.ubu[...] Canonical
[35] 웹사이트 Ubuntu 21.04 is here https://ubuntu.com/b[...]
[36] 웹사이트 Release notes for Red Hat Enterprise Linux 8.0 https://access.redha[...] 2020-12-25
[37] 웹사이트 NewInBuster - Debian Wiki https://wiki.debian.[...] 2019-07-15
[38] 웹사이트 Slackware ChangeLogs http://www.slackware[...] Slackware Linux 2020-02-26
[39] 웹사이트 Manjaro 20.2 Nibia got released https://forum.manjar[...] 2020-12-03
[40] 웹사이트 Wayland Live OS Is Now Based On Debian Testing, Working KDE Wayland Support https://www.phoronix[...] Phoronix 2020-01-14
[41] 웹사이트 RebeccaBlackOS https://sourceforge.[...] Sourceforge 2016-10-11
[42] 웹사이트 Trying Out Wayland With Rebecca Black https://www.phoronix[...] Phoronix 2020-01-14
[43] 웹사이트 New Wayland Live CD Has A Lot Of Features https://www.phoronix[...] Phoronix 2020-01-14
[44] 웹사이트 A Look At The Exciting Features/Improvements Of GNOME 3.22 https://www.phoronix[...] Phoronix 2020-01-14
[45] 웹사이트 GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams https://www.phoronix[...] Phoronix 2020-01-14
[46] 웹사이트 KDE Plasma 5.20 Looks Like an Awesome Update https://www.omgubunt[...] 2020-09-17
[47] 웹사이트 KDE Plasma 5.20 Desktop Environment Officially Released, Here's What's New https://9to5linux.co[...] 2020-10-13
[48] 웹사이트 The first Linux distribution to deliver a pure KDE Plasma 6 environment is here https://www.zdnet.co[...] 2024-02-14
[49] 웹사이트 A new release of Raspberry Pi OS https://www.raspberr[...] 2024-10-28
[50] 웹사이트 The Samsung Z4 is Tizen's new flagship smartphone https://arstechnica.[...] 2017-05-12
[51] 웹사이트 [ANNOUNCE] wayland-protocols 1.0 https://lists.freede[...] 2015-11-25
[52] 웹사이트 [ANNOUNCE] wayland-protocols 1.1 https://lists.freede[...] 2016-02-16
[53] 웹사이트 [ANNOUNCE] wayland-protocols 1.4 https://lists.freede[...] 2016-05-23
[54] 웹사이트 [ANNOUNCE] wayland-protocols 1.5 https://lists.freede[...] 2016-07-22
[55] 웹사이트 [ANNOUNCE] wayland-protocols 1.7 https://lists.freede[...] 2016-08-15
[56] 웹사이트 [ANNOUNCE] wayland-protocols 1.10 https://lists.freede[...] 2017-07-31
[57] 웹사이트 [ANNOUNCE] wayland-protocols 1.11 https://lists.freede[...] 2017-10-11
[58] 웹사이트 [ANNOUNCE] wayland-protocols 1.13 https://lists.freede[...] 2018-02-14
[59] 웹사이트 [ANNOUNCE] wayland-protocols 1.14 https://lists.freede[...] 2018-05-07
[60] 웹사이트 [ANNOUNCE] wayland-protocols 1.16 https://lists.freede[...] 2018-07-30
[61] 웹사이트 [ANNOUNCE] wayland-protocols 1.17 https://lists.freede[...] 2018-11-12
[62] 웹사이트 [ANNOUNCE] wayland-protocols 1.18 https://lists.freede[...] 2019-07-25
[63] 웹사이트 [ANNOUNCE] wayland-protocols 1.19 https://lists.freede[...] 2020-02-29
[64] 웹사이트 [ANNOUNCE] wayland-protocols 1.20 https://lists.freede[...] 2020-02-29
[65] 웹사이트 [ANNOUNCE] wayland-protocols 1.21 https://lists.freede[...] 2021-04-30
[66] 웹사이트 [ANNOUNCE] wayland-protocols 1.24 https://lists.freede[...] 2021-11-23
[67] 웹사이트 [ANNOUNCE] wayland-protocols 1.25 https://lists.freede[...] 2022-01-28
[68] 웹사이트 [ANNOUNCE] wayland-protocols 1.26 https://lists.freede[...] 2022-07-07
[69] 웹사이트 [ANNOUNCE] wayland-protocols 1.31 https://lists.freede[...] 2022-11-29
[70] 웹사이트 [ANNOUNCE] wayland-protocols 1.32 https://lists.freede[...] 2023-07-03
[71] 웹사이트 [ANNOUNCE] wayland-protocols 1.36 https://lists.freede[...] 2024-04-26
[72] 웹사이트 [ANNOUNCE] wayland-protocols 1.37 https://lists.freede[...] 2024-08-31
[73] 웹사이트 https://lists.freede[...]
[74] 웹사이트 Initial commit https://cgit.freedes[...] 2008-09-30
[75] 웹사이트 Wayland & Weston Compositor Ported To DragonFlyBSD - Phoronix https://www.phoronix[...] 2021-11-03
[76] 웹사이트 Wayland v/s Xorg : How Are They Similar & How Are They Different https://www.secjuice[...] 2018-06-16
[77] 웹사이트 Wayland Architecture http://wayland.freed[...] Wayland project 2010-11-05
[78] 웹사이트 The State Of The Wayland Display Server https://www.phoronix[...] 2009-05-20
[79] 웹사이트 GENIVI/wayland-ivi-extension https://github.com/G[...] 2021-11-03
[80] 웹사이트 Debian Moves To Non-Root X.Org Server By Default - Phoronix https://www.phoronix[...] 2021-11-03
[81] 웹사이트 Non root Xorg - Gentoo Wiki https://wiki.gentoo.[...] 2021-11-03
[82] 웹사이트 X/Rootless - Ubuntu Wiki https://wiki.ubuntu.[...] 2021-11-03
[83] 웹사이트 1078902 – Xorg without root rights https://bugzilla.red[...] 2021-11-03
[84] 웹사이트 Wayland https://www.enlighte[...] 2021-11-03
[85] 웹사이트 Plasma 5.21 https://kde.org/anno[...] 2021-02-16
[86] 웹사이트 Westeros Github Mirror https://github.com/r[...] 2016-09-19
[87] 웹사이트 swaywm/wlroots https://github.com/s[...] 2018-10-28
[88] 웹사이트 swaywm/sway https://github.com/s[...] 2018-10-28
[89] 웹사이트 Sway https://swaywm.org/ 2018-12-20
[90] 웹사이트 gamescope https://github.com/P[...] 2021-07-26
[91] 웹사이트 README https://cgit.freedes[...] 2021-11-03
[92] 웹사이트 Adding Content protection support in drm-backend (!48) · Merge Requests · wayland / weston https://gitlab.freed[...] 2019-10-27
[93] 웹사이트 Changes/WaylandByDefault - Fedora Project Wiki https://fedoraprojec[...] 2020-11-09
[94] 웹사이트 ReleaseNotes for Ubuntu 17.10 https://wiki.ubuntu.[...] Canonical 2021-11-03
[95] 웹사이트 Ubuntu 18.04 will revert to long-in-the-tooth Xorg https://www.neowin.n[...] 2021-11-03
[96] 웹사이트 Bionic Beaver 18.04 LTS to use Xorg by default https://insights.ubu[...] Canonical 2021-11-03
[97] 웹사이트 Ubuntu 21.04 is here https://ubuntu.com/b[...] 2021-06-14
[98] 웹사이트 Release notes for Red Hat Enterprise Linux 8.0 https://access.redha[...] 2020-12-25
[99] 웹사이트 NewInBuster - Debian Wiki https://wiki.debian.[...] 2019-07-15
[100] 웹사이트 Slackware ChangeLogs http://www.slackware[...] Slackware Linux 2020-02-26
[101] 웹사이트 Manjaro 20.2 Nibia got released https://forum.manjar[...] 2020-12-03
[102] 웹사이트 Wayland Live OS Is Now Based On Debian Testing, Working KDE Wayland Support https://www.phoronix[...] Phoronix 2021-11-03
[103] 웹사이트 RebeccaBlackOS https://sourceforge.[...] Sourceforge 2021-11-03
[104] 웹사이트 Trying Out Wayland With Rebecca Black https://www.phoronix[...] Phoronix 2021-11-03
[105] 웹사이트 New Wayland Live CD Has A Lot Of Features https://www.phoronix[...] Phoronix 2021-11-03
[106] 웹사이트 A Look At The Exciting Features/Improvements Of GNOME 3.22 https://www.phoronix[...] Phoronix 2021-11-03
[107] 웹사이트 GNOME Lands Mainline NVIDIA Wayland Support Using EGLStreams https://www.phoronix[...] Phoronix 2021-11-03
[108] 웹사이트 KDE Plasma 5.20 will properly support screen recording on Wayland and more https://www.gamingon[...] 2020-09-10
[109] 웹사이트 The Samsung Z4 is Tizen's new flagship smartphone https://arstechnica.[...] 2017-05-13
[110] 웹사이트 https://lists.freede[...]
[111] 웹사이트 https://lists.freede[...]
[112] 웹인용 wayland/wayland: root/COPYING http://cgit.freedesk[...] 2014-01-01 # 날짜 정보가 불완전하여 2014년 1월 1일로 설정
[113] 웹인용 Wayland http://wayland.freed[...]
[114] 웹인용 Wayland https://wayland.free[...] Wayland.freedesktop.org null # 날짜 정보 없음
[115] 웹인용 [ANNOUNCE] Wayland and Weston 0.85.0 released https://lists.freede[...] 2012-02-09
[116] 웹인용 Wayland and Weston 0.95.0 released https://lists.freede[...] 2012-07-24
[117] 웹인용 Wayland and Weston 1.0 https://lists.freede[...] 2012-10-22
[118] 웹인용 Wayland's 1.0 milestone fixes graphics protocol http://www.h-online.[...] Heise Media UK 2012-10-23
[119] 웹인용 Wayland 1.1 Officially Released With Weston 1.1 https://www.phoronix[...] 2013-04-16
[120] 웹인용 1.1 Released https://lists.freede[...] 2013-04-15
[121] 웹인용 Wayland 1.2.0 Released, Joined By Weston Compositor https://www.phoronix[...] 2013-07-13
[122] 웹인용 Wayland and Weston 1.2.0 released https://lists.freede[...] 2013-07-12
[123] 웹인용 Wayland and Weston 1.3 releases are out https://lists.freede[...] 2013-10-11
[124] 웹인용 Wayland and Weston 1.4 is out https://lists.freede[...] 2014-01-24
[125] 웹인용 Wayland and Weston 1.5.0 is released https://lists.freede[...] 2014-05-20
[126] 웹인용 Wayland and Weston 1.6.0 released https://lists.freede[...] 2014-09-19
[127] 웹인용 [ANNOUNCE] wayland 1.7.0 https://lists.freede[...] 2015-02-14
[128] 웹인용 [ANNOUNCE] weston 1.7.0 https://lists.freede[...] 2015-02-14
[129] 웹인용 [ANNOUNCE] wayland 1.8.0 https://lists.freede[...] 2015-06-02
[130] 웹인용 [ANNOUNCE] weston 1.8.0 https://lists.freede[...] 2015-06-02
[131] 메일링 인용 [ANNOUNCE] wayland 1.9.0 https://lists.freede[...] 2015-09-21
[132] 메일링 인용 [ANNOUNCE] weston 1.9.0 https://lists.freede[...] 2015-09-21
[133] 메일링 인용 [ANNOUNCE] wayland 1.10.0 https://lists.freede[...] 2016-02-17
[134] 메일링 인용 [ANNOUNCE] weston 1.10.0 https://lists.freede[...] 2016-02-17
[135] 메일링 인용 [ANNOUNCE] wayland 1.11.0 https://lists.freede[...] 2016-06-01
[136] 메일링 인용 [ANNOUNCE] weston 1.11.0 https://lists.freede[...] 2016-06-01
[137] 메일링 인용 [ANNOUNCE] wayland 1.12.0 https://lists.freede[...] 2016-09-21
[138] 메일링 인용 [ANNOUNCE] weston 1.12.0 https://lists.freede[...] 2016-09-21
[139] 메일링 인용 [ANNOUNCE] wayland 1.13.0 https://lists.freede[...] 2017-02-21
[140] 메일링 인용 [ANNOUNCE] weston 2.0.0 https://lists.freede[...] 2017-02-25
[141] 메일링리스트 [ANNOUNCE] wayland 1.14.0 https://lists.freede[...] 2017-08-08
[142] 메일링리스트 [ANNOUNCE] weston 3.0.0 https://lists.freede[...] 2017-08-08
[143] 메일링리스트 [ANNOUNCE] wayland 1.15.0 https://lists.freede[...] 2018-04-09
[144] 메일링리스트 [ANNOUNCE] weston 4.0.0 https://lists.freede[...] 2018-04-09
[145] 메일링리스트 [ANNOUNCE] wayland 1.16.0 https://lists.freede[...] 2018-08-24
[146] 메일링리스트 [ANNOUNCE] weston 5.0.0 https://lists.freede[...] 2018-08-24
[147] 메일링리스트 [ANNOUNCE] wayland 1.17.0 https://lists.freede[...] 2019-03-28
[148] 메일링리스트 [ANNOUNCE] weston 6.0.0 https://lists.freede[...] 2019-03-21
[149] 메일링리스트 [ANNOUNCE] wayland 1.18 https://lists.freede[...] 2020-02-11
[150] 메일링리스트 [ANNOUNCE] weston 7.0.0 https://lists.freede[...] 2019-08-23



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com