Qt Wayland Compositor
Qt Wayland Compositor 은 Wayland 프로토콜을 기반으로 사용자 지정 디스플레이 서버를 개발하기 위한 편리하고 강력한 QML 및 C++ API를 제공하는 모듈입니다. 컴포저라고도 하는 디스플레이 서버는 Wayland 프로토콜을 지원하는 클라이언트 애플리케이션의 콘텐츠를 표시합니다.
Wayland의 디자인 철학은 핵심 프로토콜을 단순하고 최소한으로 유지하는 것입니다. 개발자는 사용 사례별 확장을 통해 이 핵심 프로토콜을 확장할 수 있습니다. Qt Wayland Compositor 기본적으로 많은 공통 확장을 지원하며 새로운 사용자 지정 확장을 생성할 수 있는 API도 있습니다.
일반적으로 Qt Wayland Compositor 으로 작성된 컴포저는 더 큰 애플리케이션 관리자 프로세스 내의 하위 시스템이 됩니다. Qt Wayland Compositor 은 클라이언트와 통신하고 화면에 콘텐츠를 표시하는 API를 제공합니다. QML API에는 나머지 Qt와 쉽게 통합할 수 있는 높은 수준의 API가 포함되어 있어 Qt Quick 를 통해 편리한 애니메이션, 효과 및 UI를 구현할 수 있습니다. 더 낮은 수준의 액세스가 필요한 경우 C++ API도 사용할 수 있습니다.
애플리케이션 관리자는 일반적으로 애플리케이션 수명 주기, 가상 키보드 입력, 보안 및 프로세스 간 통신(IPC)과 같은 추가 기능을 구현합니다. Qt는 다른 모듈에서 애플리케이션 매니저의 나머지 부분을 개발하는 데 사용할 수 있는 API를 제공합니다. Qt 오토모티브 스위트는 다음을 제공합니다. Qt Application Manager를 사용하여 개발된 컴포저를 포함하는 완전한 애플리케이션 매니저인 Qt Wayland Compositor 를 제공합니다.
웨이랜드에 대한 자세한 내용은 웨이랜드와 Qt를 참조하십시오.
의 특징 Qt Wayland Compositor
Qt Wayland Compositor 에는 컴포저를 만드는 데 필요한 기능이 포함되어 있습니다:
- Qt Quick 의 모든 기능과 완전히 통합된 클라이언트 콘텐츠를 표시하고 조작하기 위한 QML API.
- 저수준 액세스 및 제어를 위한 C++ API.
- XDG 셸 및 IVI 애플리케이션을 포함한 일반적인 확장 지원.
- 사용자 지정 확장에 대한 지원을 쉽게 확장할 수 있는 API.
환경 변수 및 명령줄 인수
Qt Wayland Compositor 에서는 다음과 같은 환경 변수와 명령줄 인수를 인식합니다:
- 환경 변수
- QT_WAYLAND_HARDWARE_INTEGRATION 사용할 하드웨어 통합 플러그인을 선택합니다.
- 사용할 클라이언트버퍼 통합 플러그인을 선택합니다.
- QT_WAYLAND_SERVER_BUFFER_INTEGRATION 사용할 서버 연동 플러그인을 선택합니다.
- 명령줄 인수:
--wayland-socket-name
클라이언트와 통신하는 데 사용되는 기본 소켓 이름을 재정의합니다.
웨이랜드 컴포저 실행하기
사용할 수 없는 플랫폼별 기능에 의존하지 않는 한, 컴포저는 X11 기반 데스크톱 시스템에서 쉽게 테스트할 수 있습니다. 이는 개발 과정에서 디버깅을 간소화하고 새로운 기능을 효율적으로 테스트하는 데 유용할 수 있습니다.
Qt Wayland Client는 클라이언트와 서버 간에 그래픽 버퍼를 공유하기 위한 여러 백엔드를 지원합니다. 주요 백엔드는
wayland-egl
: 이것은 기본 백엔드이며 가능하면 항상 선호되어야 합니다. 이 기능을 사용하려면 시스템의 OpenGL 드라이버가 지원되어야 합니다.
QT_WAYLAND_CLIENT_BUFFER_INTEGRATION
환경 변수를 설정하여 다른 백엔드를 선택할 수 있습니다.
참고: Qt Wayland Compositor 에서 클라이언트 버퍼 백엔드를 초기화할 수 없는 경우, 안전장치로 "공유 메모리" 백엔드( wl_shm
에 기반)를 사용하게 됩니다. 이 백엔드는 그래픽 버퍼를 공유하기 위해 CPU 메모리를 사용하고 필요에 따라 데이터를 앞뒤로 복사합니다. 이는 특히 고밀도 화면과 제한된 그래픽 하드웨어에서 성능에 영향을 미칩니다. Qt Wayland Compositor 의 성능 문제를 조사할 때는 올바른 클라이언트 버퍼 통합이 사용되었는지 확인하는 것부터 시작하세요.
또한 시스템에서 이미 Wayland 컴포저를 실행 중인 경우 XDG_RUNTIME_DIR
을 다른 위치를 가리키도록 설정해야 할 수도 있습니다. 이 경우 컴포저를 시작할 때 경고가 표시됩니다. XDG_RUNTIME_DIR
은 아직 사용 중이 아닌 접근 가능한 모든 위치를 가리킬 수 있습니다.
예를 들어 wayland-egl
백엔드를 사용하여 멋진 컴포저 예제를 실행하려는 경우 다음 명령줄을 사용할 수 있습니다:
% XDG_RUNTIME_DIR=~/my_temporary_runtime QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=wayland-egl ./fancy-compositor
이후 동일한 XDG_RUNTIME_DIR
을 설정하고 명령줄 인수로 "-플랫폼 웨이랜드"를 전달하여 컴포저에서 클라이언트를 실행할 수 있습니다. QT_QPA_PLATFORM
환경 변수를 사용하여 클라이언트 측에서 Wayland QPA 플러그인을 선택할 수도 있습니다.
참고: 대부분의 경우 클라이언트는 연결 시 서버와 동일한 OpenGL에 적응합니다. 그러나 일부 특정 드라이버에서 EGL 백엔드로 실행할 때는 초기화가 더 일찍 이루어져야 합니다. 이 문제가 발생하면 대신 "-platform wayland-egl"을 전달하여 클라이언트를 EGL로 사전 초기화할 수 있습니다.
문제 해결
복잡한 컴포저를 개발할 때 추가 조사가 필요한 문제가 발생할 수 있습니다.
WAYLAND_DEBUG
환경 변수를 "1"로 설정하면 Wayland 라이브러리 자체에 대한 로그 출력이 활성화됩니다. 이 기능은 예를 들어 Wayland 프로토콜에 대한 사용자 지정 확장을 디버깅할 때 매우 유용할 수 있습니다. 클라이언트와 서버 간에 어떤 이벤트와 요청이 전달되고 있는지, 그리고 이에 대한 타임스탬프가 정확히 표시됩니다.
또한 Qt에는 추가 로깅을 활성화하기 위해 qt.waylandcompositor.*
및 qt.qpa.wayland.*
로깅 카테고리가 있습니다. 후자는 클라이언트 측에서 설정해야 하는데, 이는 Wayland QPA 플러그인에서 로깅을 활성화하기 때문입니다.
예제
Qt Wayland Compositor 예제를 살펴보고 이러한 API를 사용하여 커스텀 컴포저를 작성하는 방법을 알아보세요.
API 참조
Qt Wayland Compositor 은 C++ 또는 QML에서 사용할 수 있습니다:
또한 이 모듈은 CMake 함수인 qt_generate_wayland_protocol_server_sources()를 제공합니다.
모듈 진화
Qt6로의 포팅 - Qt Wayland Compositor 에는 Qt 6 시리즈에 적용된 모듈 API와 기능의 중요한 변경 사항이 나열되어 있습니다.
라이선스 및 어트리뷰션
Qt Wayland Compositor 및 Qt Wayland 통합 플러그인은 The Qt Company의 상용 라이선스에 따라 제공됩니다.
또한, Qt Wayland Compositor 은 GNU 일반 공중 사용 허가서 버전 3에 따라 사용할 수 있으며, Qt Wayland 통합 플러그인은 GNU 약소 일반 공중 사용 허가서 버전 3 또는 GNU 일반 공중 사용 허가서 버전 2에 따라 사용할 수 있습니다.
자세한 내용은 Qt 라이선스를 참조하십시오.
Qt Wayland Compositor 그리고 Qt Wayland 통합 플러그인은 다음 허용 라이센스에 따라 프로토콜 정의를 사용합니다:
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
Wayland Linux Dmabuf Unstable V1 Protocol, version unstable v1, version 3 | MIT 라이선스 |
Wayland Pointer Gestures Protocol, version unstable v1, version 2 | MIT 라이선스 |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
HPND 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
MIT 라이선스 | |
Wayland xdg-activation Protocol, version unstable v1, version 1 | MIT 라이선스 |
Wayland xdg-decoration Protocol, version unstable v1, version 1 | MIT 라이선스 |
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.