Что такое диспетчер отображения Linux? Как выбрать и установить один

В статьях, новостях и обсуждениях, связанных с Linux, вы часто встретите термин сервер отображения, Xorg, Wayland и т. д.

Что такое дисплей-сервер в Linux?

Сервер отображения — это программа, которая отвечает за координацию ввода и вывода своих клиентов с остальной частью операционной системы, а также между оборудованием и операционной системой. По сути, благодаря серверу отображения вы можете использовать свой компьютер в графическом режиме (GUI). Без сервера отображения вы были бы ограничены только интерфейсом командной строки (TTY).

Сервер отображения обеспечивает основу для графической среды, так что вы можете использовать мышь и клавиатуру для взаимодействия с приложениями.

Сервер дисплея взаимодействует со своими клиентами по протоколу сервера дисплея, например X11. Сервер отображения является ключевым компонентом любого графического пользовательского интерфейса, особенно оконной системы.

Не путайте сервер дисплея с окружением рабочего стола. В окружении рабочего стола под ним используется дисплейный сервер.

Звучит знакомо, но не совсем понятно? Позволь мне объяснить.

Отображение протоколов связи с сервером в Linux

В Linux доступны три протокола отображения: X11, Wayland и Mir. Я дам вам краткое описание этих серверов отображения.

X11 (также называемый X) — это устаревший дисплей-сервер, который существует уже много лет. Это наиболее распространенный дисплей-сервер, используемый в дистрибутивах Linux.

Протокол связи X11 использует сервер отображения Server . Он получает события ввода от драйверов устройств и делает их доступными для одного из своих клиентов.

Сервер отображения также получает данные от своих клиентов, он обрабатывает данные и выполняет композицию, а в Linux он передает данные одному из трех компонентов ядра — DRM , gem или драйверу KMS .

— это сервер отображения, который использует вторую программу, оконный менеджер композитинга, для выполнения композитинга. Примеры: Mutter или KWin . GNOME использует Mutter.

Wayland

Согласно его веб-сайту, Wayland «задумана как более простая замена X, более простая в разработке и обслуживании».

И действительно, Wayland — это современный дисплей-сервер, который должен заменить устаревший X-дисплей.

Его принятие все еще продолжается. Ubuntu попыталась переключиться на Wayland в качестве сервера отображения по умолчанию с версией , но эксперимент встретил отрицательные отзывы.

Многие приложения с графическим интерфейсом и их фреймворки зависят от X-сервера. Эти приложения не работали должным образом на Wayland.

Это заставило Ubuntu оставаться на X в качестве сервера отображения по умолчанию. Он по-прежнему предоставляет возможность использовать Wayland, но больше не используется по умолчанию.

Читайте также:  35 лучших тем сделанных на основе Elementor для WordPress 2020

Подавляющее большинство дистрибутивов даже сегодня по умолчанию используют сервер отображения X.

Серверы отображения, которые применяют протокол сервера отображения Wayland, называются композиторами Wayland . Как и любой X11, композитор Wayland отвечает за обработку ввода и вывода для своих клиентов, но также выполняет композитинг — в отличие от X11.

Некоторые композиторы Wayland — это Weston , Mutter , KWin или Enlightenment .

Сервер отображения Mir поставляется с собственным протоколом сервера отображения Mir, который отличается от протокола, используемого в X11 и Wayland. Он был разработан Canonical в рамках разработки Unity и должен был стать предпочтительным сервером отображения для Ubuntu .

С 2017 года он был заменен сервером отображения Wayland для настольных версий Ubuntu, хотя разработка Mir продолжалась для приложений Интернета вещей (IoT).

Почему мы все еще используем Xorg?

Wayland, поскольку он относительно новый, еще не очень стабилен по сравнению с Xorg. Программы, которые действуют как клиенты, чтобы взаимодействовать с сервером отображения, должны знать, как это делать.

По этой причине многие программы могут не работать при использовании Wayland. Эксперимент Ubuntu по переключению на Wayland по умолчанию подтвердил это.

Вывод

Надеюсь, вы немного лучше понимаете концепцию сервера отображения в Linux. Я старался не вдаваться в технические детали, но мне не удалось полностью их избежать.

Ваши отзывы и предложения приветствуются.

DISPLAY

Чтобы начать работу с графческой средой, X-клиенты должны каким-то образом доставить свой запрос X-серверу, для этого у X-сервера должен быть какой-то точный адрес. Адрес X-сервера, к которому должны обращаться с запросом X-клиенты, хранится в переменной окруженияDISPLAY. Формат DISPLAY прост: способ_доступа:номер__экрана. Под способом доступа может подразумеваться сеть (тогда используется сетевой адрес машины с X-сервером) или какой-нибудь ещё механизм, принятый в конкретной системе. Если не написать ничего, будет выбран способ по умолчанию. Номер сервера нужен для различения разных X-серверов, запущенных на одном компьютере. В Linux можно запустить несколько X-серверов и переключаться между ними как между виртуальными консолями — с помощью Ctrl + Alt + F7, Ctrl + Alt + F8 и т. д. В системе может быть несколько виртуальных серверов (см. раздел Виртуальный сервер). Все они должны иметь разные номера. Наконец, один сервер может работать с несколькими экранами — и физически (есть видеокарты с выходами на несколько мониторов), и виртуально (вот тут уж никаких ограничений нет). Правда, это бывает нечасто, и номер экрана тоже можно не указывать.

Адрес X-сервера, запущенного Мефодием, будет выглядеть так: «:0» — поскольку сервер запущен на той же машине, на которой работает Мефодий, можно использовать способ доступа по умолчанию (поэтому адрес начинается с двоеточия), поскольку сервер единственный, он получил номер «0», а экран можно не указывать. Теперь Мефодий может в любой командной оболочке (shell) указать адрес X-сервера в переменной DISPLAY, так что любой запущенный из этой shell X-клиент унаследует это значение и будет отправлять X-запросы тому серверу, который запустил Мефодий.

Читайте также:  Установка и настройка LXC под Ubuntu 18.04

[email protected]:~ $ export DISPLAY=:0 [email protected]:~ $ echo $DISPLAY :0 [email protected]:~ $ xcalc &Пример 1. Запуск X-клиента из виртуальной консоли

В результате этих действий изменился экран X-сервера: в левом верхнем углу открылось окно калькулятора — xcalc. Произошло следующее: при запуске xcalc проверил значение переменной DISPLAY и направил X-запрос по указанному там адресу; по запросу от X-клиента (xcalc) X-сервер выделил ему окно и выполнил необходимые операции графического вывода, чтобы отрисовать содержимое окна (опять же, по запросам xcalc). Теперь при помощи мыши и клавиатуры, переместив точку ввода на это окно, вполне можно что-нибудь вычислить, однако ни переместить окно, ни изменить его размер, ни свернуть — те операции, к которым так привыкли пользователи оконного интерфейса — сам X-сервер не выполняет, для этих операций требуется специальная программа — диспетчер окон, о которой речь пойдёт ниже.

Иллюстрация 4. Запуск X-клиента

С помощью специальных X-запросов можно изменить вид и поведение самого X-сервера из той же командной оболочки, в которой установлена переменная окружения DISPLAY. Например, команда «xsetroot -solid green &» изменит цвет фона на экране сервера на зелёный.

Итак, X-сервер запускается на одном компьютере, а X-клиенты вполне могут работать на других (причём на нескольких!), посылая ему запросы. С точки зрения человека, сидящего за (обратите внимание!) X-сервером, каждый такой клиент представлен в виде окна. Требования к аппаратуре на машинах, запускающих X- клиенты, будут изрядно отличаться от требований к аппаратуре машины для X- сервера. Типичная машина с X-сервером — это рабочее место (workstation). Она должна быть оборудована качественными устройствами ввода-вывода — монитором, видеокартой, клавиатурой и мышью. Что же касается её вычислительных способностей, то их должно быть достаточно для выполнения X-запросов, и только. Такой компьютер не обязан работать под управлением Linux, на нём даже может вообще не быть операционной системы! В восьмидесятые годы выпускались подобные устройства, называемые «X-терминал» (X terminal).

X-клиент Программа, осуществляющая ввод и вывод графических данных при попмщи X-запросов, обрабатываемых X-сервером.

В отличие от машины с X-сервером, компьютер для запуска X-клиентов может совсем не иметь устройств графического ввода-вывода. Его задача в том, чтобы все X-программы и запустившие их пользователи не мешали друг другу работать. На такой машине нужна хорошо настронная операционная среда, с достаточным для запуска многих процессов быстродействием и объёмом оперативной памяти. Пара X11R6–Linux весьма неплохо работает на т. н. бездисковых комплексах. Рабочие станции в таких комплексах — самые настоящие X-терминалы, они не имеют жёстких дисков. Вся работа происходит на центральном компьютере, с которого на рабочую станцию загружается по сети урезанный вариант системы, достаточный для запуска X-сервера, и сам X-сервер. В таких комплексах администрировать нужно одну только центральную машину, они надёжнее компьютерных залов и, что немаловажно, стоят дешевле, причём в качестве X-терминалов можно использовать и довольно маломощные, пожилые компьютеры.

Читайте также:  Команды Linux, которые должен знать каждый пользователь

Чем не является Диспетчер отображения

Вы, наверное, уже знаете, что на вашем компьютере с Linux есть менеджер окон и сервер отображения.

Диспетчер отображения представляет собой отдельное программное обеспечение. Хотя все три взаимодействуют, они имеют разную функциональность и выполняют разные задания.

Примеры оконного менеджера включают в себя:

  • KWin
  • Открытая коробка
  • DWM

Некоторые известные серверы отображения Linux:

  • Wayland
  • Мир
  • организация

(Многие дистрибутивы Linux представляют Wayland в качестве сервера представления по умолчанию, а некоторые другие движутся в этом направлении, поэтому лучше узнать больше об использовании Linux с Wayland .)

Между тем, некоторые менеджеры отображения:

  • GDM (Диспетчер отображения Gnome)
  • LightDM
  • LXDM

Ниже мы увидим некоторые другие менеджеры отображения.

kde тиринг

KDE, является моим любим рабочим окружением. В нём есть такое огромное количество, так нужных пользователям, элементов управления, что с помощью GUI Панели управления можно настроить практически всё. Откройте приложение Настройки и найдите «Display and Monitor». Там выберите «Compositor». Найдите параметр «Предотвращение разрыва vsync»(Tearing prevention «vsync» и установите для него значение «Перерисовка всего экрана” (Full screen repaints). После этого нажмите «Применить» (Apply).

Нередко Kwin, оконный менджер KDE, тоже становится причиной тиринга. Если не после предыдущих манипуляци разры картинки не пропал, то создалим файл /etc/profile.d/ следующего содержания:

kde тиринг

export KWIN_TRIPLE_BUFFER=1

Перелогиньтесь и всё должно стать гладко.

Nvidia может не работать с Wayland

Более конкретно, если вы используете собственный графический драйвер Nvidia, Wayland, вероятно, не будет работать для вас. Это связано с проблемой композитинга выше. Чтобы заставить этот процесс работать, ваш графический драйвер должен определенным образом общаться с компиляторами Wayland.

Видеокарты Intel и AMD не имеют этой проблемы, поскольку они используют ожидаемый стандарт, называемый GBM (Generic Buffer Management). Nvidia считает, что их способ общения с Wayland, называемый EGL, лучше и поэтому они придерживается этого.

Эта проблема может быть решена двумя способами: драйверы Nvidia реализуют GBM или композиторы Wayland реализуют EGLStreams. В настоящее время Nvidia, похоже, не заинтересована в поиске первого решения.