본문 바로가기
오픈소스 읽기 (OLD)/데스크탑환경 - weston (wayland)

0. Wayland란? (+ Weston)

by 커널패닉 2020. 8. 3.
반응형

Wayland는 리눅스 데스크탑 환경을 구현하기 위한 프로토콜이다. 데스크탑 환경은 크게 보면 컴포지터와 쉘로 구분된다. 아래 사진에서 보이는 UI가 쉘이 그리는 것이고, 어플리케이션들의 창이 겹쳐졌을때의 처리를 컴포지터가 한다. Wayland는 컴포지터와 쉘의 구현을 돕는 API와 쉘이 어플리케이션과 통신할 수 있도록 프로토콜을 제공한다.

리눅스 Gnome (출처: 구글)

 

Wayland 이전에는 X11이 컴포지터(X server)의 역할을 하였으며, 그 위에서 Gnome, KDE와 같은 서드파티 쉘이 동작했다. 이러한 모델은 수십년간 잘 작동하였다. 하지만 시간이 지나면서 몇 가지 문제가 생겼다. 우선 커널 구조가 많이 변경되었다. 이전에는 X11에서 처리해야 했던 많은 일들이, DRI, DRM 등을 통해 커널이 처리하기 시작했다. 시간에 따른 API 증가도 문제였다. 시간에 따라 지원하는 기능의 증가 및 다양한 서드파티 쉘의 변화는 지속적으로 API의 수를 늘렸고, 동시에 사용되지 않고 버려지는 API 또한 증가하였다. 즉, X11이라는 단일 컴포지터가 모든 쉘을 관리하는 모델은, 리눅스 GUI 환경의 변화를 따라오기에는 너무 거대했고, 유연하지 않았다. Wayland는 이러한 X11의 문제를 해결하기 위해 개발되었다.

* DRM, DRI에 대한 설명은 범위를 벗어나기 때문에 생략하도록 한다.

 

Wayland는 X11과 달리 컴포지터를 직접 구현하지 않는다. 대신 프로토콜과 관련 API를 제공하고, 컴포지터와 쉘은 서드파티가 구현하도록 하고 있다. 이를 통해 Wayland 자유롭고, 유연하며, 확장성있는 구조를 갖게 되었다. 예를 들어 Wayland는 아래 보이는 Wayfire와 같이 창의적인 데스크탑 환경을 만들 수 있게 되었다. (물론 X11에도 이와 유사한 Compiz가 있기는 하였다.) 다만 컴포지터를 직접 구현하지 않고 대부분의 구현을 서드파티의 몫으로 넘겼기 때문에, 글을 쓰는 지금(2020.08.03)까지도 Mutter(Gnome의 컴포지터)와 Weston을 제외하고 완성도 높은 Wayland 컴포지터는 거의 없다.

Wayfire (출처: 구글)

 

앞으로 다룰 Weston은 Wayland의 레퍼런스 구현이다. Weston에서는 다양한 Wayland API들이 짜임새 있게 활용되고 있으며, 상당히 높은 완성도의 컴포지터를 가지고 있다. 데스크탑 분야에서는 Weston의 영향력이 강하지 않지만, 임베디드 리눅스 분야에서는 높은 사용률을 보여주고 있다.

반응형