- BrainTools - https://www.braintools.ru -
Привет! На связи Вахтанг, ведущий системный администратор Cloud4Y. В этой статье расскажу, как в Linux реализован пользовательский интерфейс с графическим интерфейсом (GUI). Этот интерфейс, известный как X Window System, позволяет программам работать с оконным управлением.
Хотя тема не является чем‑то новым и не находится на переднем крае, как это часто бывает с искусственным интеллектом [1], многие люди не знают о возможностях, которые он предоставляет в исходниках.
В отличие от платформы Windows, где графический интерфейс встроен в ядро операционной системы, в UNIX‑подобных системах он является дополнительным компонентом. Его реализация осуществляется с помощью протокола X, который обычно называют X Window System или X11, в зависимости от версии протокола. Этот протокол управляет связью между приложениями и экранами устройств.
История протокола X восходит к 1984 году, когда он был разработан в Массачусетском технологическом институте (MIT). Хотя протокол регулярно обновляется, он остаётся актуальным и важным инструментом для современных пользователей.
Клиент‑серверную архитектуру
X Server. Запускается на пользовательском компьютере с непосредственным устройством отображения. И отвечает за обработку входящих событий от клавиатуры, мыши, отображает графику, управляет шрифтами и многое другое.
X Client. Это приложения, которые требуют визуализации графических элементов или должны обрабатывать пользовательские вводы, такие как клики или нажатия клавиш в GUI. Они ждут события пользователя от X‑сервера.
Передача данных между пользователем и сервером осуществляется с помощью сетевых протоколов TCP/IP и может происходить как локально, так и удалённо. Если клиентская и серверная части X Window System находятся на одном компьютере. Вместо того чтобы использовать сетевое соединение, они взаимодействуют через UNIX‑сокет.
Протокол предоставляет базовые операции рисования, такие как линии, прямоугольники и рендеринг текста, которые клиенты используют для построения своих пользовательских интерфейсов.
Информация о действиях пользователя, таких как перемещение курсора мыши, клики и нажатия клавиш на клавиатуре, передаётся с сервера на клиентское приложение через специальные сообщения.
Такие ресурсы, как окна, шрифты и цвета, управляются X‑сервером, и клиенты взаимодействуют с этими ресурсами через запросы, отправляемые по протоколу.
По умолчанию при входе в графический сеанс в Linux X‑сервер запускается автоматически, позволяя запускать приложения GUI.
За детализацию интерфейса пользователя отвечают графические оболочки, которых разработано множество. Поэтому внешний вид программ может сильно изменяться.
X Window System кроссплатформенная и может функционировать как в Linux, так и в Windows.

Рассмотрим некоторые доступные варианты графических оболочек для Ubuntu.
Если ОС только установлена в desktop варианте, то обновим систему sudo apt update && sudo apt upgrade -y. И можем поставить GUI.
|
Название |
Установка |
|
LXDM display manager |
sudo apt-get -y install lxdm |
|
sudo apt install xfce4 xfce4-goodies |
|
|
KDE Plasma |
sudo apt-get install kde-plasma-desktop |
|
Enlightenment |
sudo add-apt-repository ppa:niko2040/e19 sudo apt-get install enlightenment terminology |
Для смены дисплейного менеджера по умолчанию поможет команда
dpkg-reconfigure <DM>
Чтоб проверить установленный по умолчанию дисплейный менеджер, используем
systemctl status display-manager.service
При использовании облачных решений иногда возникает необходимость в удалённой работе с графикой. Конечно, в основном работа на Linux серверах идёт без графики и использованием SSH, но иногда нужна и графика, если это рабочее место пользователя. В операционной системе Windows для этого предусмотрен протокол RDP (Remote Desktop Protocol) для удалённых рабочих столов. Однако в Linux для решения этой задачи можно использовать не только VNC (Virtual Network Computing [6]), но и тот же X протокол, архитектура которого изначально рассчитана на удалённое использование. Для того, чтобы подключиться к операционной системе Linux из среды Microsoft Windows, можно использовать два метода:
перенаправление X-протокола (X11 Forwarding) и
удалённое подключение по протоколу XDMCP (X Display Manager control protocol) используя UDP и порт 177
Чтобы воспользоваться возможностью X11 Forwarding, на стороне клиента нужно установить X-сервер и настроить переадресацию протокола через SSH.
В качестве X-серверов для Windows можно выбрать:
Xming [7]
полнофункциональный, маленький и быстрый сервер
VcXsrv [8](https://vcxsrv.com/ [9])
Открытый X-сервер, поддерживает несколько дисплеев, OpenGL и аппаратное ускорение.
X410 [10], который можно скачать и установить в Microsoft Store.
Установка не вызывает проблем и не нуждается в каких-то подробностях. Теперь нужно настроить SSH для поддержки пересылки X11. Это делается путём добавления (раскомментирования) директивы:
ForwardX11 yes
в конфигурации /etc/ssh/ssh_config системы, из которой будет осуществляться переадресация (к которой будет осуществляется подключение). После перезапустить SSH сервис:
systemctl restart sshd
В данном случае в качестве удалённой системы выступит компьютер (можно развернуть в нашем облаке [11]) с операционной системой Ubuntu, а в качестве клиентской — Windows и X-сервер VcXsrv. Первым шагом мы запускаем VcXsrv на клиентской стороне.

Затем, используя SSH-клиент PuTTY, подключаемся к серверу через SSH-соединение и настроим проброс X11 forwarding.

После успешного подключения по SSH в командной строке проверим наличие нашего дисплея echo $DISPLAY

и можем запустить установленные дисплейные менеджеры в VcXsrv в Linux.
Например:
1) startlxde

2) startxfce4 start

3) startplasma-x11 start

4) enlightenment_start

Буду рад, если этот небольшой туториал окажется полезным для кого-то. Спасибо за внимание [12], ваш Cloud4Y [13].
Читайте нас здесь или в Telegram‑канале [14]!
Автор: Cloud4Y
Источник [15]
Сайт-источник BrainTools: https://www.braintools.ru
Путь до страницы источника: https://www.braintools.ru/article/15087
URLs in this post:
[1] интеллектом: http://www.braintools.ru/article/7605
[2] https://www.lxde.org/: https://www.lxde.org/
[3] https://ru.wikipedia.org/wiki/Xfce: https://ru.wikipedia.org/wiki/Xfce
[4] https://kde.org/ru/plasma-desktop/: https://kde.org/ru/plasma-desktop/
[5] https://www.enlightenment.org/: https://www.enlightenment.org/
[6] Virtual Network Computing: https://ru.wikipedia.org/wiki/Virtual_Network_Computing
[7] Xming: https://sourceforge.net/projects/xming/
[8] VcXsrv : https://sourceforge.net/projects/vcxsrv/
[9] https://vcxsrv.com/: https://vcxsrv.com/
[10] X410: https://apps.microsoft.com/detail/9pm8lp83g3l3?hl=en-US&gl=US
[11] нашем облаке: https://www.cloud4y.ru/?utm_source=habr&utm_medium=article&utm_campaign=article&utm_content=xserver
[12] внимание: http://www.braintools.ru/article/7595
[13] Cloud4Y: https://www.cloud4y.ru/?utm_source=habr&utm_medium=article&utm_campaign=habr&utm_content=ai-gpu-main
[14] Telegram‑канале: https://t.me/+ET_qtHM8_540Nzhi
[15] Источник: https://habr.com/ru/companies/cloud4y/articles/907008/?utm_source=habrahabr&utm_medium=rss&utm_campaign=907008
Нажмите здесь для печати.