(2013/01/08 추가: 이 글을 쓰고 몇 주가 지나 wayland 1.0이 발표되었습니다. 이 글은 현재의 상황과 맞지 않을 수 있습니다.)

요새 Wayland 보면서 얻은 정보들을 간단히 정리.

Weston 빌드 및 실행

먼저, Wayland는 프로토콜 및 라이브러리 이름이고, wayland 레퍼런스 compositor는 weston이라는 이름을 가집니다.

빌드 순서는 Wayland Building에 나온 것 그대로이고, 간간히 라이브러리가 없다는 오류가 뜨는 건 엔간한 배포판에 패키지가 있으니 설치해주면 됩니다. (다만 lex는 미리 설치해두는 게 좋습니다. lex가 없어도 autoconf가 의존성 오류를 내지 않습니다.) 간간히 막히는 부분은 Arch Linux Wiki: Wayland에 답이 있기도 합니다.

우분투에서는 weston 패키지가 precise부터 존재합니다. 데비안도 experimental에 있고요. 저는 패키지로 써본 적은 없습니다. :-) 지금도 코드가 막 바뀌는 중이라서, 그냥 git 코드를 받아 빌드하는 게 좋을 것 같습니다.

weston을 빌드한 후 설치하려면 루트 권한을 요구할 건데, weston-launch을 root 소유로 바꾸고 chmod u+s를 거는 작업을 합니다. weston을 DRI로 실행하려면 잠시 루트 권한이 필요해서 그럽니다.

설치가 끝난 후에는 ~/.config/weston.ini를 만들어 줍니다. 기본적으로는 weston 소스 코드에 있는 녀석을 복사한 다음 [launcher]weston-terminal을 실제 파일이 설치된 PATH로 조정해 주는게 좋습니다. weston-launch를 실행하면 weston compositor가 뜹니다. 이때 간혹 화면은 떴지만 아무 입력도 안 먹히는 것처럼 보일 수 있는데, 마우스 커서 세팅이 제대로 되지 않으면 커서 그림이 안 뜹니다. (저는 /usr/share/icons/<적당한 테마>/에서 cursors 폴더를 ~/.icons/default/cursors로 복사하는 식으로 대충 처리했습니다.)

weston 종료 단축키는 ctrl+alt+backspace입니다. 기타 단축키는 여기에 나와 있습니다.

weston을 X 위에서 실행하는 것도 가능합니다. $DISPLAY가 설정되어 있다면, weston을 실행하면 DRI가 아니라 X를 사용합니다. 혹은 weston --backend=x11-backend.so로 명시적으로 백엔드를 지정할 수도 있습니다. Wayland 홈페이지의 스크린샷은 전부 weston on X를 찍은 겁니다.

어플리케이션 지원

어플리케이션을 Wayland 위에서 돌리려면 X 의존적인 부분을 Wayland에 의존하도록 바꿔야 합니다. 물론 대부분의 프로그램은 X를 바로 접근하지 않고 GTK+나 Qt 등의 툴킷을 사용하고요.

GTK+는 버전 3부터 런타임에 어떤 백엔드(X, wayland, …)를 쓸지 GDK_BACKEND=wayland 환경변수를 통해 정할 수 있습니다. (이전까지는 빌드 시점에 정해졌습니다.) 그래서 같은 프로그램을 X 위에서도 돌릴 수 있고 wayland에서도 돌릴 수 있고요. 메인 트리에 wayland 지원이 실험적으로 들어가 있어서, gtk+3을 빌드할 때 --enable-wayland-backend 옵션을 주면 사용할 수 있습니다. GTK+ on Wayland.

GTK+ 3 어플리케이션은 X 의존적인 부분을 안 쓴다면 이론적으로는 별 문제 없이 돕니다. X 의존적인 부분이라는 건 gdk_x11_* 류의 함수를 의미하는데, firefox이나 chromium 등 생각보다 많은 어플이 씁니다. 이 부분을 쓴다면 wayland API를 쓰도록 고쳐야 할 거고요. 한편 GTK+ 2 어플은 GTK+ 3으로 포팅하는 작업이 필요하기도 합니다. (gnome-sudoku의 경우 빌드하니 바로 작동했습니다.)

Qt 역시 Qt 5에서부터 지원을 추가하고 있습니다. (저는 아직 직접 빌드해본 적은 없습니다.) Qt 5 on Wayland 참고. 어플리케이션 호환성 역시 x11을 직접 쓰는 게 아니라면 별 문제 없이 돌아야 한다고 합니다.

혹은 Wayland 위에서 X를 돌리는 XWayland를 쓸 수도 있습니다. Wayland Screenshots에서 맨 아래쪽 스크린샷은 weston을 X 위에서 돌리고, 그 위에 X를 또 올린 상황입니다. XWayland는 X 기반 어플리케이션을 수정하지 않고 돌릴 수 있고, 현재 파이어폭스와 크롬을 일단 쓸 수 있는 수준으로 완성되어 있습니다. (렌더링 관련 자잘한 문제가 보이긴 합니다.) wayland 전반적인 완성도가 조금 더 올라가면 weston + xwayland로 기존 x11 환경을 대체할 수도 있을 거고요.

xwayland

CSD

Wayland에서는 창 제목이나 최소화/닫기 버튼 등의 창틀을 compositor가 아니라 프로그램이 직접 담당해야 합니다. Client-side decoration(CSD)이라고 부르는데, 현재 GTK+ 및 Qt는 이 부분이 아직 구현되어 있지 않습니다. Wayland 사이트 스크린샷에 GTK+/Qt 프로그램이 모두 머리가 없는 게 이런 탓입니다. 또한 weston-terminal과 XWayland는 창틀을 서로 다른 모양으로 그리고 있습니다.

사실 CSD는 Wayland뿐만이 아니라 GNOME쪽에서 실험적으로 제안한 적이 있고, 이에 대해 상당한 찬반 논쟁이 있었습니다. 가령 반대 측에서는 Why you should not use client-side window decorations 같은 글이 있습니다. (개인적으로는 CSD 논쟁 흐름을 파악할 때까지 판단을 보류하려 합니다.)

Compositors

weston 말고 다른 wayland compositor도 여러 가지가 개발중입니다. 가령 GNOME 3의 기본 윈도 매니저인 Mutter에서 wayland 지원 작업이 한창입니다. KDE의 윈도 매니저 KWin도 역시 Wayland에 대한 지원을 개발중입니다. KWin에 대한 최신 소식은 여기에서 볼 수 있습니다.

쓸만한 건 아니겠지만 이런 것도 존재합니다.

Extra Links