X Window System

X Window System — это программный стек, который используется для отображения текста и графики на экране

    Общие сведения

    X Window System — это программный стек, который используется для отображения текста и графики на экране.
    Общий внешний вид и дизайн X-клиента не определяются X Window System, а зависят от конкретного X-клиента, оконного менеджера (например, Window Maker, Tab Window Manager) или полноценной среды рабочего стола, такой как KDE, GNOME или Xfce
    X Window System является кроссплатформенной и работает в различных операционных системах, таких как Linux, BSD, Solaris и других Unix-подобных системах. Также существуют реализации для macOS от Apple и Microsoft Windows
    Основная версия протокола X, используемая в современных дистрибутивах Linux, — X.org версии 11, обычно обозначаемая как X11. Протокол X — это механизм взаимодействия между X-клиентом и X-сервером.


    X Window System предоставляет механизмы для отображения на экране базовых двумерных (и трехмерных с помощью расширений) фигур.
    Она состоит из клиентской и серверной частей, и в большинстве случаев, когда требуется графический рабочий стол, оба этих компонента находятся на одном компьютере.
    Клиентская часть представляет собой приложение, например эмулятор терминала, игру или веб-браузер.
    Каждое клиентское приложение сообщает X-серверу о расположении и размере своего окна на экране компьютера.
    Клиент также обрабатывает данные, поступающие в это окно, а X-сервер выводит запрошенный чертеж на экран. X Window System также обрабатывает ввод данных с таких устройств, как мыши, клавиатуры, трекпады и т. д.

    Система X Window поддерживает работу в сети, и несколько X-клиентов с разных компьютеров в сети могут отправлять запросы на отрисовку на один удаленный X-сервер.
    Это позволяет администратору или пользователю получить доступ к графическому приложению в удаленной системе, которое может быть недоступно в локальной системе.
    Ключевая особенность X Window System заключается в ее модульности. За время существования X Window System в ее структуру были добавлены новые функции. Эти новые компоненты были добавлены в качестве расширений к X-серверу, при этом основной протокол X11 остался неизменным. Эти расширения содержатся в файлах библиотеки Xorg. К библиотекам Xorg относятся: libXrandr, libXcursor, libX11, libxkbfile и ряд других, каждая из которых расширяет функциональность X-сервера.

    Диспетчер отображения (display manager) обеспечивает графический вход в систему. Это может быть как локальный компьютер, так и компьютер в сети.
    Диспетчер отображения запускается после загрузки компьютера и открывает сеанс X-сервера для пользователя, прошедшего аутентификацию.
    Диспетчер отображения также отвечает за поддержание работоспособности X-сервера. К примерам таких диспетчеров отображения относятся GDM, SDDM и LightDM.

    Каждый экземпляр запущенного X-сервера имеет отображаемое имя, по которому его можно идентифицировать. Отображаемое имя содержит следующую информацию:
    имя хоста: номер дисплея. номер экрана
    Отображаемое имя также указывает графическому приложению, где оно должно отображаться и на каком хосте (при использовании удаленного X-соединения).
    hostname обозначает название системы, в которой будет отображаться приложение. Если в отображаемом имени отсутствует имя хоста, подразумевается локальный хост.
    displaynumber обозначает набор используемых «экранов», будь то один экран ноутбука или несколько экранов на рабочей станции. Каждому запущенному сеансу X-сервера присваивается номер дисплея, начинающийся с 0.
    По умолчанию screennumber равно 0. Это может быть в том случае, если только один физический экран или несколько физических экранов настроены на работу как один экран
    Отображаемое имя запущенного сеанса X хранится в переменной окружения DISPLAY:

    echo $DISPLAY :0

    В выходных данных содержится следующая информация:
    Используемый X-сервер находится в локальной системе, поэтому слева от двоеточия ничего не отображается.
    Текущий сеанс работы с X-сервером — первый, на что указывает 0 сразу после двоеточия.
    Используется только один логический экран, поэтому номер экрана не отображается.


    Чтобы запустить приложение на определенном экране, перед запуском приложения присвойте номер экрана переменной DISPLAY окружения:

    DISPLAY=:0.1 firefox &

    Эта команда запустит веб-браузер Firefox на экране справа, как показано на схеме выше. Некоторые наборы инструментов также предоставляют параметры командной строки, позволяющие запустить приложение на определенном экране. Пример см. в --screen и --display на странице руководства gtk-options(7) man.

    Конфигурация X-сервера

    Традиционно основным файлом конфигурации, используемым для настройки X-сервера, является файл /etc/X11/xorg.conf
    В современных дистрибутивах Linux X-сервер настраивается автоматически при запуске, поэтому файл xorg.conf может отсутствовать.
    Файл xorg.conf разделен на отдельные абзацы, называемые разделами.
    Каждый раздел начинается с термина Section, за которым следует название раздела, обозначающее конфигурацию компонента
    Каждый Section завершается соответствующим EndSection


    Типичный файл xorg.conf содержит следующие разделы:
    InputDevice - Используется для настройки конкретной модели клавиатуры или мыши.

    InputClass - В современных дистрибутивах Linux этот раздел обычно находится в отдельном файле конфигурации, расположенном по адресу /etc/X11/xorg.conf.d/.InputClass используется для настройки класса аппаратных устройств, таких как клавиатуры и мыши, а не конкретного устройства. Например /etc/X11/xorg.conf.d/00-keyboard.conf

    Раскладку клавиатуры можно изменить во время сеанса X с помощью команды setxkbmap
    Эти настройки будут действовать только в течение сеанса работы с X. Чтобы изменения вступили в силу, измените /etc/X11/xorg.conf.d/00-keyboard.conf файл

    setxkbmap -model chromebook -layout "gr(polytonic)"

    В современных дистрибутивах Linux есть команда localectl через systemd, с помощью которой можно изменить раскладку клавиатуры и автоматически создать файл конфигурации /etc/X11/xorg.conf.d/00-keyboard.conf

    localectl --no-convert set-x11-keymap "gr(polytonic)" chromebook

    Monitor - В разделе Monitor описывается используемый физический монитор и место его подключения


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

    Screen - Раздел Screen объединяет разделы Monitor и Device .

    Раздел ServerLayout объединяет все разделы, такие как мышь, клавиатура и экраны, в единый интерфейс X Window System.

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

    Пользовательские файлы конфигурации также находятся в /etc/X11/xorg.conf.d/. Файлы конфигурации, поставляемые с дистрибутивом, находятся в /usr/share/X11/xorg.conf.d/. Файлы конфигурации, расположенные в /etc/X11/xorg.conf.d/, анализируются до файла /etc/X11/xorg.conf, если он существует в системе.

    Команда xdpyinfo используется на компьютере для отображения информации о запущенном экземпляре X-сервера.

    xdpyinfo name of display: :0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12101004 X.Org version: 1.21.1.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst ...
    Создание базового файла конфигурации Xorg

    Несмотря на то, что в современных версиях Linux X создает свою конфигурацию после запуска системы, файл xorg.conf все равно можно использовать. Чтобы создать постоянный файл /etc/X11/xorg.conf, выполните следующую команду:

    #будет создан файл xorg.conf.new sudo Xorg :1 -configure .... (++) Using config file: "/root/xorg.conf.new" (==) Using system config directory "/usr/share/X11/xorg.conf.d" ... ... Your xorg.conf file is /root/xorg.conf.new To test the server, run 'X -config /root/xorg.conf.new' .... #Чтобы использовать этот файл, его нужно переместить в каталог /etc/X11/ и переименовать в xorg.conf sudo mv xorg.conf.new /etc/X11/xorg.conf
    Wayland

    Wayland — это новый протокол отображения, призванный заменить X Window System.
    Он менее требователен к системным ресурсам и занимает меньше места при установке, чем X.
    В отличие от X Window System, здесь нет сервера, который работал бы между клиентом и ядром
    Вместо этого клиентское окно работает с собственным кодом или кодом из набора инструментов (например, Gtk+ или Qt), который обеспечивает рендеринг.
    Для рендеринга отправляется запрос в ядро Linux по протоколу Wayland.
    Ядро перенаправляет запрос по протоколу Wayland в компоновщик Wayland, который обрабатывает ввод с устройств, управление окнами и их компоновку.
    Компоновщик — это часть системы, которая объединяет отрендеренные элементы в визуальное изображение на экране.
    Приложения и фреймворки, которые по-прежнему ориентированы на X Window System, могут работать в XWayland. Система XWayland представляет собой отдельный X-сервер, который работает в клиенте Wayland и, таким образом, отображает содержимое клиентского окна в отдельном экземпляре X-сервера.
    Подобно тому, как система X Window использует переменную окружения DISPLAY для отслеживания используемых экранов, протокол Wayland использует переменную окружения WAYLAND_DISPLAY

    echo $WAYLAND_DISPLAY #узнать, какие расширения Xorg доступны в системе xdpyinfo

    Несмотря на то, что X Window System отвечает за управление графическим дисплеем (сам видеодрайвер является частью X), она не предназначена для самостоятельного отрисовки сложных визуальных элементов


    Поскольку система X Window сама по себе предлагает лишь базовые интерактивные функции, удобство работы пользователя зависит от компонентов, предоставляемых средой рабочего стола.

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

    Во всех средах рабочего стола есть оконный менеджер, внешний вид которого соответствует набору виджетов. Виджеты — это информационные или интерактивные визуальные элементы, такие как кнопки или поля для ввода текста, которые размещаются внутри окна приложения

    Программные библиотеки, такие как GTK+ и Qt, предоставляют виджеты, с помощью которых программисты могут создавать сложные графические интерфейсы для своих приложений.

    Все основные среды рабочего стола обычно включают в себя следующие приложения:
    Приложения, связанные с системой
    Эмулятор терминала, файловый менеджер, менеджер установки пакетов, инструменты для настройки системы.

    Коммуникация и Интернет
    Менеджер контактов, почтовый клиент, веб-браузер.

    Офисные приложения
    Календарь, калькулятор, текстовый редактор.

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

    Системы на базе Linux поддерживают различные варианты сред рабочего стола, которые можно использовать вместе с X. У каждой среды рабочего стола есть свои особенности, но обычно они основаны на общих принципах проектирования.
    Панель запуска приложений со списком встроенных и сторонних приложений, доступных в системе.
    Правила, определяющие приложения по умолчанию для различных типов файлов и протоколов.
    Инструменты для настройки внешнего вида и поведения среды рабочего стола.

    Gnome — одна из самых популярных сред рабочего стола, которая используется в таких дистрибутивах, как Fedora, Debian, Ubuntu, SUSE Linux Enterprise, Red Hat Enterprise Linux, CentOS и т. д. В третьей версии Gnome претерпел значительные изменения в плане внешнего вида и структуры, отказавшись от метафоры рабочего стола и представив Gnome Shell в качестве нового интерфейса.

    KDE — это обширная экосистема приложений и платформа для разработки. Последняя версия среды рабочего стола KDE Plasma по умолчанию используется в openSUSE, Mageia, Kubuntu и т. д. Использование библиотеки Qt — отличительная черта KDE, благодаря которой она имеет узнаваемый внешний вид и множество оригинальных приложений. В KDE даже есть инструмент для настройки, обеспечивающий визуальную согласованность с приложениями GTK+.

    Xfce — это среда рабочего стола, которая отличается эстетичным дизайном и при этом не требует больших ресурсов компьютера. Ее структура построена по модульному принципу, что позволяет пользователю активировать и деактивировать компоненты в соответствии со своими потребностями и предпочтениями.

    Существует множество других окружений рабочего стола для Linux, которые обычно предоставляются альтернативными дистрибутивами. Например, дистрибутив Linux Mint включает в себя два оригинальных окружения рабочего стола: Cinnamon (форк Gnome 3) и MATE (форк Gnome 2). LXDE — это окружение рабочего стола, разработанное с учетом низкого потребления ресурсов, что делает его хорошим выбором для установки на старое оборудование или одноплатные компьютеры.

    Записи в среде рабочего стола — это текстовые файлы с расширением .desktop, которые используются средой рабочего стола для сбора информации о доступных приложениях и способах их использования.

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

    Удаленный доступ к рабочему столу изначально поддерживается X, который использует протокол управления диспетчером отображения X (XDMCP) для связи с удаленными дисплеями. Из-за высокой пропускной способности XDMCP редко используется через интернет или в низкоскоростных локальных сетях. Кроме того, XDMCP небезопасен: локальный дисплей взаимодействует с привилегированным удаленным диспетчером отображения X для выполнения удаленных процедур, поэтому в случае обнаружения уязвимости злоумышленник может получить доступ к выполнению произвольных привилегированных команд на удаленном компьютере.
    Кроме того, для XDMCP требуются экземпляры X, работающие на обоих концах соединения, что может сделать его использование невозможным, если система X Windows недоступна на всех задействованных компьютерах. На практике для организации сеансов удаленного графического доступа используются другие, более эффективные и менее инвазивные методы.
    Virtual Network Computing (VNC) — это платформонезависимый инструмент для просмотра и управления удалёнными рабочими столами с использованием протокола Remote Frame Buffer (RFB). С его помощью события, генерируемые локальной клавиатурой и мышью, передаются на удалённый рабочий стол, который, в свою очередь, отправляет обратно все обновления экрана для локального отображения.
    На одном компьютере можно запустить несколько серверов VNC, но каждому из них нужен эксклюзивный TCP-порт в сетевом интерфейсе, принимающий входящие запросы на сеанс. По умолчанию первый VNC-сервер должен использовать TCP-порт 5900, второй — 5901 и так далее.

    Для работы VNC-сервера не требуются специальные привилегии. Обычный пользователь может, например, войти в свою удаленную учетную запись и запустить оттуда собственный VNC-сервер. Затем на локальном компьютере можно использовать любое VNC-клиентское приложение для доступа к удаленному рабочему столу (при условии, что соответствующие сетевые порты доступны).

    Файл ~/.vnc/xstartup представляет собой сценарий оболочки, который запускается VNC-сервером при старте и может использоваться для определения среды рабочего стола, доступной для VNC-клиента.

    Важно отметить, что VNC изначально не поддерживает современные методы шифрования и аутентификации, поэтому его следует использовать в сочетании со сторонним приложением, предоставляющим такие возможности. Для защиты VNC-соединений часто используются VPN- и SSH-туннели.

    Протокол удалённого рабочего стола (Remote Desktop Protocol, RDP) в основном используется для удалённого доступа к рабочему столу операционной системы Microsoft Windows через сетевой порт TCP 3389. Несмотря на то, что используется проприетарный протокол RDP от Microsoft, клиентская реализация, используемая в системах Linux, представляет собой программу с открытым исходным кодом, лицензированную по Универсальной общественной лицензии GNU (GPL), и не имеет юридических ограничений на использование.

    Простой протокол для независимых вычислительных сред (Simple Protocol for Independent Computing Environments, Spice) — это набор инструментов для доступа к среде рабочего стола виртуализированных систем как на локальном компьютере, так и на удаленном устройстве.

    Для подключения к каждому из этих протоколов удалённого рабочего стола существуют специальные клиентские команды, но клиент удалённого рабочего стола Remmina предоставляет интегрированный графический интерфейс, который упрощает процесс подключения и позволяет сохранять настройки подключения для последующего использования. В Remmina есть плагины для каждого отдельного протокола, в том числе для XDMCP, VNC, RDP и Spice. Выбор подходящего инструмента зависит от используемых операционных систем, качества сетевого подключения и того, какие функции среды удалённого рабочего стола должны быть доступны.


    Источники
    Последнее изменение: 27.05.2026 14:11


    Здесь пока нет комментариев
    Добавлять комментарии могут только авторизованные пользователи

    Авторизоваться
    Я буду рекламой
    Я тоже буду рекламой
    И я
    ВВЕРХ