- Xorg, X11, Wayland? Серверы отображения Linux и протоколы с пояснениями
- Wayland или Xorg, что лучше? Это руководство для вас.
- Что такое дисплейный сервер в Linux?
- X Window System, Xorg, X11, объяснение
- Wayland, сервер отображения нового поколения
- Заключение
- Xorg
- Installation
- Driver installation
- AMD
- Running
- Configuration
- Using .conf files
- Using xorg.conf
- Input devices
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, была переложена на отдельные приложения и оконный менеджер. И все же все эти старые функции все еще существуют, отягощая все эти приложения, снижая производительность и безопасность.
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 по-умолчанию в своей системе. А каким вы пользуетесь?
Xorg
The X.Org project provides an open source implementation of the X Window System. The development work is being done in conjunction with the freedesktop.org community. The X.Org Foundation is the educational non-profit corporation whose Board serves this effort, and whose Members lead this work.
Xorg (commonly referred to as simply X) is the most popular display server among Linux users. Its ubiquity has led to making it an ever-present requisite for GUI applications, resulting in massive adoption from most distributions. See the Xorg Wikipedia article or visit the Xorg website for more details.
For the alternative and successor, see Wayland.
Installation
Xorg can be installed with the xorg-server package.
Additionally, some packages from the xorg-apps group are necessary for certain configuration tasks. They are pointed out in the relevant sections.
Finally, an xorg group is also available, which includes Xorg server packages, packages from the xorg-apps group and fonts.
Driver installation
The Linux kernel includes open-source video drivers and support for hardware accelerated framebuffers. However, userland support is required for OpenGL and 2D acceleration in X11.
First, identify the graphics card (the Subsystem output shows the specific model):
$ lspci -v | grep -A1 -e VGA -e 3D
Then, install an appropriate driver. You can search the package database for a complete list of open-source video drivers:
Xorg searches for installed drivers automatically:
- If it cannot find the specific driver installed for the hardware (listed below), it first searches for fbdev ( xf86-video-fbdev ), which does not include any 2D or 3D acceleration.
- If that is not found, it searches for vesa ( xf86-video-vesa ), the generic driver, which handles a large number of chipsets but does not include any 2D or 3D acceleration.
- If vesa is not found, Xorg will fall back to kernel mode setting, which includes GLAMOR acceleration (see modesetting(4) ).
In order for video acceleration to work, and often to expose all the modes that the GPU can set, a proper video driver is required:
This article or section needs expansion.
Other video drivers can be found in the xorg-drivers group.
Xorg should run smoothly without closed source drivers, which are typically needed only for advanced features such as fast 3D-accelerated rendering for games. The exceptions to this rule are recent GPUs (especially NVIDIA GPUs) not supported by open source drivers.
AMD
For a translation of model names (e.g. Radeon RX 6800) to GPU architectures (e.g. RDNA 2), see Wikipedia:List of AMD graphics processing units#Features overview.
Running
The Xorg(1) command is usually not run directly. Instead, the X server is started with either a display manager or xinit.
Configuration
Note: Arch supplies default configuration files in /usr/share/X11/xorg.conf.d/ , and no extra configuration is necessary for most setups.
Xorg uses a configuration file called xorg.conf and files ending in the suffix .conf for its initial setup: the complete list of the folders where these files are searched can be found in xorg.conf(5) , together with a detailed explanation of all the available options.
Using .conf files
The /etc/X11/xorg.conf.d/ directory stores host-specific configuration. You are free to add configuration files there, but they must have a .conf suffix: the files are read in ASCII order, and by convention their names start with XX— (two digits and a hyphen, so that for example 10 is read before 20). These files are parsed by the X server upon startup and are treated like part of the traditional xorg.conf configuration file. Note that on conflicting configuration, the file read last will be processed. For this reason, the most generic configuration files should be ordered first by name. The configuration entries in the xorg.conf file are processed at the end.
Using xorg.conf
Xorg can also be configured via /etc/X11/xorg.conf or /etc/xorg.conf . You can also generate a skeleton for xorg.conf with:
This should create a xorg.conf.new file in /root/ that you can copy over to /etc/X11/xorg.conf .
Tip: If you are already running an X server, use a different display, for example Xorg :2 -configure .
Alternatively, your proprietary video card drivers may come with a tool to automatically configure Xorg: see the article of your video driver, NVIDIA or AMDGPU PRO, for more details.
Note: Configuration file keywords are case insensitive, and «_» characters are ignored. Most strings (including Option names) are also case insensitive, and insensitive to white space and «_» characters.
Input devices
For input devices the X server defaults to the libinput driver ( xf86-input-libinput ), but xf86-input-evdev and related drivers are available as alternative.[1]
Udev, which is provided as a systemd dependency, will detect hardware and both drivers will act as hotplugging input driver for almost all devices, as defined in the default configuration files 10-quirks.conf and 40-libinput.conf in the /usr/share/X11/xorg.conf.d/ directory.
After starting X server, the log file will show which driver hotplugged for the individual devices (note the most recent log file name may vary):
$ grep -e "Using input driver " Xorg.0.log
If both do not support a particular device, install the needed driver from the xorg-drivers group. The same applies, if you want to use another driver.
To influence hotplugging, see #Configuration.
For specific instructions, see also the libinput article, the following pages below, or Fedora:Input device configuration for more examples.