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

1. Weston 훑어보기

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

Weston (출처: weston git)

소스 다운로드: git clone gitlab.freedesktop.org/wayland/weston.git
소스 태그: 8.0.0 (commit - 33b06bde)
주 언어: C

 

Weston은 Gnome, Kde와 마찬가지로, 리눅스 데스크탑 환경이다. 즉 weston을 통해 우리는 리눅스에서 GUI를 사용할 수 있다. Weston은 Gnome, Kde가 제공하던 주요 기능들을 제공한다. 예를 들어 GUI 앱 윈도우 생성, 리사이즈, 이동, 창 겹치기, 마우스 입력 전달 등등이 있다. 또한 구조화가 잘 되어있기 때문에 다양한 환경(fb, drm, wayland/x11)에서 유연하게 사용 가능하며, 다양한 구현체(desktop-shell, ivi-shell)이 존재한다. 이러한 장점들 덕분에, 데스크탑에서는 주류가 아니지만, 자동차, 항공 등 임베디드 리눅스에서 그래픽을 요구하는 분야에서는 높은 사용률을 가지고 있다.

 

Weston 구조

Weston의 개괄적인 구조는 위와 같다. Weston에서 가장 핵심이 되는 부분은 Compositor로, 주요 Wayland 객체를 생성/관리하고, Shell과 Backend를 로딩하여 인터페이스 기반으로 활용한다. Shell은 화면 구성과 관련된 Wayland 객체를 생성/관리하며, App의 보이는 영역(surface) 관리를 한다. Backend는 Compositor의 화면 출력(output)을 처리한다. 이를 보기 좋게 정리하면 다음 표와 같다.

컴포넌트 내용 상세분석
Compositor - 주요 Wayland 객체 생성 / 관리
- Weston 초기화
- Shell 로딩
- Backend 로딩
- Input 디바이스 관리
- 명령줄 인자 / Config / 환경 변수 관리
준비중
Shell - Surface 관련 Wayland 객체 생성 / 관리
- App의 Surface 관리
- 실제로 사용자가 접하는 UI/UX 담당
중비중
Backend - Output을 처리 컴포넌트
- drm-backend: 최근에 나온 대부분 임베디드 리눅스 시스템에서 사용
- fb-backend: 오래된 리눅스 시스템에서 사용
- wayland-backend: wayland 데스크탑 환경에서 weston을 실행할 경우 사용
- x11-backend: x11 데스크탑 환경에서 weston을 실행할 경우 사용
- rdp-backend: 원격 데스크탑 프로토콜(rdp)으로 접속하는 경우 사용
X

* Backend까지 다루면 내용이 너무 많아지기 때문에, Backend 부분은 생략한다.

 

앞으로 2~3 포스트에 걸쳐 Weston의 Compositor의 동작과 Shell 동작에 대해 코드레벨에서 분석할 예정이다.

반응형