Графическая подсистема — один из ключевых компонентов любой операционной системы с графическим интерфейсом. В Linux, и в частности в дистрибутиве Ubuntu, она обеспечивает взаимодействие между аппаратным обеспечением (графическим процессором, монитором, клавиатурой, мышью) и пользовательскими приложениями. В этой статье мы подробно рассмотрим архитектуру графической подсистемы Ubuntu, сравним два основных протокола дисплейных серверов — X11 и Wayland, а также поговорим о графических оболочках, которые обеспечивают удобный пользовательский интерфейс.
1. Основы графической подсистемы в Ubuntu
Графическая подсистема Linux-ориентированных ОС традиционно строится вокруг дисплейного сервера, который отвечает за:
- Отрисовку графики на экране;
- Обработку ввода от устройств (клавиатура, мышь, сенсорный экран);
- Управление окнами (их расположение, размеры, взаимодействие).
В Ubuntu основными компонентами графической подсистемы являются:
- Дисплейный сервер (Display Server) — Xorg (X11) или Wayland;
- Графический менеджер сессий — GDM, LightDM и др.;
- Графическая оболочка (Desktop Environment) — GNOME, KDE, XFCE и другие.
2. X11 (X Window System) — классика Linux-графики
Что такое X11?
X Window System, также известная как X11, была разработана в 1980-х годах в окрестностях MIT и стала стандартом для систем UNIX-подобных ОС. В Ubuntu с момента её основания по умолчанию использовалась именно эта система.
Архитектура X11
X11 — это клиент-серверная модель, где:
- X-сервер отвечает за взаимодействие с аппаратным обеспечением и отрисовку;
- X-клиенты — это приложения, которые отправляют запросы на отрисовку окон и реагируют на пользовательский ввод.
Преимущество X11 в его гибкости и зрелости: огромное количество программ, драйверов и утилит поддерживают данный протокол.
Недостатки X11
- Сложность и устаревание архитектуры: многие компоненты X11 были написаны давно, и система не рассчитана на современные требования безопасности и производительности.
- Низкая производительность и высокая задержка: из-за механизма коммуникаций между X-сервером и клиентами.
- Слабая поддержка аппаратного ускорения: несмотря на значительные улучшения, многие современные графические эффекты сложно реализовать в рамках X11.
Пример использования X11 в Ubuntu
До релизов Ubuntu 17.10 по умолчанию использовался Xorg, например:
echo $XDG_SESSION_TYPE
# Выведет: x11
При загрузке в сессии GNOME Classic (Xorg) приложения используют X-протокол.
3. Wayland — современная альтернатива X11
Что такое Wayland?
Wayland — это новый протокол дисплейного сервера, разработанный для замены X11. Впервые представленный примерно в 2008 году, Wayland ориентирован на упрощение архитектуры и повышение производительности.
Принцип работы Wayland
Wayland заменяет X-сервер простым дисплейным сервером (композитором), который напрямую управляет буферами от приложений и отрисовкой на экране. Приложения (Wayland-клиенты) рисуют свои окна в выделенной области памяти, а сервер композитор формирует финальный экран.
Преимущества Wayland
- Меньшая задержка: благодаря упрощённой архитектуре и менее затратному обмену данными.
- Повышенная безопасность: изоляция приложений друг от друга затрудняет перехват ввода/вывода;
- Лучшее управление современными графическими эффектами: благодаря "распределённой" отрисовке;
- Поддержка работы с графическим ускорением более эффективна.
Недостатки
- Пока не все приложения и драйверы полностью совместимы;
- Недостаток функционала для удалённой работы (хотя в этом направлении активно работают);
- Некоторые тонкости с поддержкой разных устройств ввода.
Wayland в Ubuntu
Начиная с версии Ubuntu 21.04, Wayland используется в сессии по умолчанию (для поддерживаемых графических карт и драйверов). Однако при входе можно выбрать и Xorg, если есть проблемы с совместимостью.
Проверка используемого дисплейного сервера:
echo $XDG_SESSION_TYPE
# Может вывести: wayland или x11
Если система грузится под Wayland, в терминале вывод будет wayland.
4. Дисплейные серверы: Xorg (X11) и Weston/Mutter (Wayland композиторы)
Что такое дисплейный сервер?
Технически, Xorg — это реализация X-сервера, а под Wayland нет чётко выделенного "дисплейного сервера" — композитор совмещает функции дисплейного сервера и менеджера окон.
Популярные дисплейные серверы/композиторы:
- Xorg — доминантный дисплейный сервер на базе X11;
- Weston — эталонный композитор Wayland, используемый для тестирования;
- Mutter — композитор, используемый в GNOME;
- KWin — композитор в KDE, поддерживающий и X11, и Wayland.
В Ubuntu GNOME по умолчанию используется Mutter под Wayland, а при сессии Xorg используется Xorg-сервер.
5. Графические оболочки (Desktop Environments) в Ubuntu
Графическая оболочка — это пользовательский интерфейс, который строится поверх графической подсистемы. Он включает панели, меню, рабочие пространства и утилиты.
Основные оболочки в Ubuntu:
- GNOME — основная оболочка Ubuntu с версии 17.10+. Использует Mutter композитор.
- KDE Plasma — мощная и настраиваемая оболочка, использующая KWin.
- XFCE — лёгкая и быстрая оболочка, популярная на слабых машинах.
- MATE — форк GNOME 2, приятен пользователям классических интерфейсов.
Взаимодействие оболочек с дисплейными серверами
Оболочки используют API соответствующего дисплейного сервера:
- Под X11 — Xlib, XCB;
- Под Wayland — протокол Wayland.
Например, GNOME под Wayland использует Mutter как композитор, полностью интегрируя обработку окон и ввод.
6. Примеры выбора сессии в Ubuntu
При входе в Ubuntu вы можете выбрать тип сессии в экране входа (GDM):
- Ubuntu (Wayland) — стандартная сессия с Wayland-композитом;
- Ubuntu on Xorg — сессия на классическом сервере Xorg.
Если приложение или драйвер ведут себя некорректно, можно перейти на Xorg, что всё ещё поддерживается.
Заключение
Графическая подсистема Ubuntu сегодня — это мультикомпонентный стек с несколькими вариантами реализации дисплейного сервера (X11 и Wayland) и широким выбором графических оболочек. Переход от X11 к Wayland — важный этап эволюции, который обещает улучшенную производительность и безопасность, хотя и требует адаптации.
Понимание принципов каждого компонента поможет пользователям Ubuntu выбирать оптимальную конфигурацию под свои задачи и аппаратные возможности, а разработчикам — создавать эффективные графические приложения.