Вы когда-нибудь задавались вопросом, что именно делает X-сервер, Xorg, X11, Wayland и тому подобное?
Wayland или Xorg, что лучше? Это руководство для вас.
Вы всегда натыкаетесь на эти термины и знаете, что они имеют отношение к графике, но хотели бы узнать больше.
Что такое дисплейный сервер в Linux?
Сервер отображения — это программа, основной задачей которой является координация ввода и вывода данных от клиентов к остальной части операционной системы, оборудованию и друг другу. Дисплейный сервер взаимодействует со своими клиентами по протоколу дисплейного сервера.
Сервер отображения является ключевым компонентом любого графического интерфейса пользователя, в частности оконной системы. Это основной компонент графического интерфейса пользователя (GUI), который находится между графическим интерфейсом и ядром. Таким образом, благодаря дисплейному серверу вы можете использовать свой компьютер с графическим интерфейсом пользователя. Без него вы были бы ограничены только интерфейсом командной строки.
Очень важно не путать дисплейный сервер с окружением рабочего стола. Окружение рабочего стола (Gnome, KDE, Xfce, MATE и т.д.) использует дисплейный сервер.
Сервер отображения взаимодействует со своими клиентами по протоколу сервера отображения. В Linux существует три протокола сервера отображения. X11 и Wayland — два из них. Третий, Mir, выходит за рамки данного руководства.
X Window System, Xorg, X11, объяснение
X Window System, которую часто называют просто X, очень старая. Впервые появившись в 1984 году, она стала оконной системой по умолчанию для большинства UNIX-подобных операционных систем, включая Linux.
Сервер X.Org — это свободная реализация сервера отображения X Window System с открытым исходным кодом, управляемая фондом X.Org Foundation. Это приложение, которое взаимодействует с клиентскими приложениями по протоколу X11 для рисования объектов на дисплее и отправки событий ввода, таких как движения мыши, щелчки и нажатия клавиш. Обычно запускается X-сервер, который ожидает подключения к нему клиентских приложений. Xorg основан на модели клиент/сервер и поэтому позволяет клиентам работать как локально, так и удаленно на другой машине.
Если это не очевидно, то в дизайне X11 подразумевается, что приложение и дисплей не обязательно должны находиться на одном компьютере. Во времена разработки X было очень распространено, что X-сервер работал на рабочей станции, а пользователи запускали приложения на удаленном компьютере с большей вычислительной мощностью.
X11 — это сетевой протокол. Он описывает, как происходит обмен сообщениями между клиентом (приложением) и дисплеем (сервером). Эти сообщения обычно содержат примитивные команды рисования, такие как «нарисовать рамку», «написать этот символ в этой позиции», «левая кнопка мыши была нажата» и т.д.
Но X11 устарел, и он все еще был кучей хаков, сидящих поверх протокола, который не пересматривался более 30 лет. Большинство функций, которые предоставлял протокол X Server, больше не использовались. Практически вся работа, которую выполнял X11, была переложена на отдельные приложения и оконный менеджер. И все же все эти старые функции все еще существуют, отягощая все эти приложения, снижая производительность и безопасность.
Wayland, сервер отображения нового поколения
Wayland был начат Кристианом Хогсбергом, разработчиком X.Org, как личный проект в 2008 году. Это коммуникационный протокол, определяющий взаимодействие между сервером отображения и его клиентами. Wayland разрабатывается как бесплатный проект с открытым исходным кодом под руководством сообщества с целью замены X Window System (также известной как X11, или Xorg) современной, безопасной и более простой оконной системой.
В Wayland, compositor является сервером отображения. Compositor — это оконный менеджер, который предоставляет приложениям внеэкранный буфер для каждого окна. Менеджер окон объединяет буферы окон в изображение, представляющее экран, и записывает результат в память дисплея.
Протокол Wayland позволяет композитору отправлять входные события непосредственно клиентам, а клиенту — отправлять событие повреждения непосредственно композитору.
Как и в случае с X, когда клиент получает событие, он обновляет пользовательский интерфейс (UI) в ответ. Но в Wayland рендеринг происходит в клиенте, а клиент просто посылает запрос композитору, чтобы указать регион, который был обновлен.
Основное преимущество Wayland перед X заключается в том, что он начинает с нуля. Одной из основных причин сложности X является то, что с годами его роль менялась. В результате сегодня X11 выступает в основном как «действительно ужасный» протокол связи между клиентом и оконным менеджером.
Wayland также лучше, когда речь идет о безопасности. В X11 можно сделать то, что известно как «keylogging», позволяя любой программе существовать в фоновом режиме и читать, что происходит в других окнах, открытых в области X11. С Wayland этого просто не произойдет, поскольку каждая программа работает независимо.
Заключение
Однако X Window System все еще имеет много преимуществ перед Wayland. Несмотря на то, что Wayland устраняет большинство недостатков дизайна Xorg, у нее есть свои проблемы. Несмотря на то, что проект Wayland существует уже более десяти лет, он не является на 100% стабильным. По состоянию на 2021 год, большинство видеоигр и графических приложений для Linux по-прежнему написаны для X11. Кроме того, многие графические драйверы с закрытым исходным кодом, например, для графических процессоров NVIDIA, еще не обеспечивают полной поддержки Wayland.
X не может существовать долго, и Wayland, во многих отношениях, является улучшением. Но на данный момент подавляющее большинство существующих приложений были написаны для Xorg. Пока все эти приложения не будут перенесены, Xorg необходимо поддерживать. Wayland пока не очень стабилен по сравнению с Xorg.
Но все же я уже как год использую wayland по-умолчанию в своей системе. А каким вы пользуетесь?