- Linux Jargon Buster: What is a Display Server in Linux? What is it Used for?
- What is display server in Linux?
- Display server communications protocols in Linux
- X11
- Wayland
- Mir
- Why are we still using Xorg?
- Conclusion
- Xorg, X11, Wayland? Серверы отображения Linux и протоколы с пояснениями
- Wayland или Xorg, что лучше? Это руководство для вас.
- Что такое дисплейный сервер в Linux?
- X Window System, Xorg, X11, объяснение
- Wayland, сервер отображения нового поколения
- Заключение
Linux Jargon Buster: What is a Display Server in Linux? What is it Used for?
In Linux related articles, news and discussions, you’ll often come across the term display server, Xorg, Wayland etc.
In this explainer article, I’ll discuss display servers in Linux.
What is display server in Linux?
A display server is a program which is responsible for the input and output coordination of its clients, to and from the rest of the operating system, and among the hardware and the operating system. Basically, thanks to a display server, you can use your computer graphically (GUI). Without the display server, you would only be restricted to a command line interface (TTY).
The display server provides the framework for a graphical environment so that you can use mouse and keyboard to interact with applications.
The display server communicates with its clients over the display server protocol, like X11. The display server is a key component in any graphical user interface, specifically the windowing system.
Don’t confuse display server with desktop environment. The desktop environment uses display server underneath it.
Sounds familiar but it is not fully clear? Let me explain.
Display server communications protocols in Linux
There are three display protocols available in Linux, the X11, Wayland and Mir. I’ll give you a brief introduction for these display servers.
X11
The X11 (also refer as X) is the legacy display server that has been existed for years. It is the most common display server used in Linux distributions.
The X11 communication protocol, uses the X.org Server display server. It receives input events from device drivers and makes them available to one of its clients.
The display server also receives data from its clients, it processes the data and does the compositing and on Linux it passes the data to one of three kernel components – the DRM, gem or KMS driver.
The X.Org Server is a display server that relies on a second program, the compositing window manager, to do the compositing. Examples are Mutter or KWin. GNOME uses Mutter.
Wayland
As per its website, Wayland is “intended as a simpler replacement for X, easier to develop and maintain”.
And indeed Wayland is the modern display server that is supposed to replace the legacy X display server.
Its adoption is still a work in progress. Ubuntu tried to switch to Wayland as the default display server with version 17.10 but the experiment met with negative feedback.
A lot of GUI applications and their frameworks depend on the X server. These applications didn’t work as intended on Wayland.
This forced Ubuntu to stay on X as default display server. It still provides the option to use Wayland but it is not default anymore.
An overwhelming majority of distributions use X display server by default even today.
Display servers that put into effect the Wayland display server protocol, are called Wayland compositors. Like any X11, a Wayland compositor is responsible for handling input and output for its clients but also does the compositing – in contrast to X11.
A few Wayland compositors are Weston, Mutter, KWin or Enlightenment.
Mir
The Mir display server comes with its own Mir display server protocol which differs to those used by X11 and Wayland. It was developed by Canonical, as part of the development of Unity, and was intended to be the display server of choice for Ubuntu.
As of 2017, it has been replaced with the Wayland display server for desktop editions of Ubuntu, although Mir’s development continued for Internet of Things (IoT) applications.
Why are we still using Xorg?
Wayland as it is relatively new, is not very stable yet, compared to Xorg. The programs, which act as clients, in order to communicate with a display server, must know how to do it.
For this reason, many programs might not run when using Wayland. Ubuntu’s experiment to switch to Wayland by default confirmed this.
Conclusion
I hope you have a bit better understanding of display server concept in Linux. I have tried to not go into too much technical details but I could not avoid them altogether.
Your feedback and suggestion is welcome.
Xorg, X11, Wayland? Серверы отображения Linux и протоколы с пояснениями
Вы когда-нибудь задавались вопросом, что именно делает 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, была переложена на отдельные приложения и оконный менеджер. И все же все эти старые функции все еще существуют, отягощая все эти приложения, снижая производительность и безопасность.
Прочтите: Как исправить `Не удалось получить блокировку /var/lib/dpkg/lock — открыто (11 Ресурс временно недоступен)` Ошибки
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 по-умолчанию в своей системе. А каким вы пользуетесь?