- PVSM.RU - https://www.pvsm.ru -
Эта статья о том, как устроена графика в Linux и из каких компонентов она состоит. В ней много скриншотов с различными реализациями сред рабочих столов.
Если вы не сильно различаете KDE и GNOME или различаете, но хотели бы узнать, какие еще есть альтернативы, то эта статья для вас. Она обзорная, и хотя в ней много названий и немного терминов, материал будет также полезен начинающим и только посматривающим в сторону Linux.
Тема может заинтересовать и продвинутых пользователей при настройке удаленного доступа и при реализации тонкого клиента. Часто встречаю вполне матерых линуксойдов с утверждениями «на сервере только командная строка, и графику подробнее изучать не планирую, так как это всё нужно для простых пользователей». Но даже знатоки Linux с большим удивлением и радостью открывают для себя опцию «-X» у команды ssh (а для этого полезно понимать работу и функции X-сервера).

Источник [1]
Я почти 15 лет обучаю на курсах Linux в «Сетевой Академии ЛАНИТ [2]» и уверен, что многие из тех более пяти тысяч человек, которых обучил, читают и наверняка пишут статьи на Хабр. Курсы всегда очень насыщены (средняя продолжительность курса — пять дней), нужно рассказать темы, на полноценное знакомство с которыми требуется минимум дней десять. И всегда в ходе курса в зависимости от аудитории (новички собрались или матерые администраторы), а также от «вопросов из зала» я делаю выбор, что донести подробнее, а что — более поверхностно, чтобы посвятить больше времени утилитам командной строки и их практическому применению. Таких тем, которыми приходится немного жертвовать, достаточно. Это «История Linux», «Различия в дистрибутивах Linux», «Про лицензии: GPL, BSD, ...», «Про графику и среды рабочих столов» (тема этой статьи) и др. Не то, чтобы они не важны, но обычно есть множество более актуальных «здесь и сейчас» вопросов и всего каких-то пять дней… Однако для общего понимания основ ОС Linux, понимания доступного разнообразия (чтобы даже пользуясь одним конкретным дистрибутивом Linux, всё-таки иметь более широкий взгляд на весь этот огромный и необъятный мир, что зовется «Linux») изучать эти темы полезно и нужно.
По ходу статьи по каждому компоненту я указываю ссылки для тех, кому захочется глубже погрузиться в тему, например, на статьи в Википедии (при этом указываю на более полную/полезную версию при наличии англоязычной и русскоязычной статей).
Для основных примеров и скриншотов я использовал дистрибутив openSUSE. Можно было использовать любой другой дистрибутив, разрабатываемый сообществом, с наличием большого количества пакетов в репозитории. Сложно, но возможно, продемонстрировать многообразие оформления рабочего стола на коммерческом дистрибутиве, так как часто в них используются только одна или две наиболее известных сред рабочего стола. Так разработчики сужают себе задачу выпуска стабильной отлаженной ОС. На данную же систему я установил все DM/DE/WM (объяснение этих терминов ниже), которые нашёл в репозитории.
Скриншоты с «синими рамками» как раз и сделаны на openSUSE.
Скриншоты с «белыми рамками» делал на других дистрибутивах, они указаны на скриншоте.
Скриншоты с «серыми рамками» были взяты из интернета, в качестве примеров оформлений рабочего стола из прошлых лет.
Итак, начнём.
Выделю три основные компонента и перечислю их в порядке, как они запускаются при старте системы:
Дополнительно в качестве важных подпунктов у Desktop Environment:
Подробнее по каждому пункту.
Первое приложение, которое запускается при старте «графики», — это DM (Display Manager), дисплейный менеджер. Его основные задачи:
На текущий момент в различных дистрибутивах широко используются:
Список существующих DM ведётся в актуальном состоянии в Wiki-статье. [8]




Стоит отметить, что на следующих скриншотах используется один и тот же дисплейный менеджер LightDM, но в разных дистрибутивах (названия дистрибутивов указаны в круглых скобках). Оцените, насколько по-разному может выглядеть этот DM благодаря работе дизайнеров различных дистрибутивов.





Главное в этом многообразии, чтобы было понятно, что есть такое приложение, которое отвечает за запуск графики и допуск пользователя к этой графике, и есть разные реализации этого приложения, различающиеся внешним видом и немного функционалом (выбор сред оформления, выбор пользователей, версия для плохо видящих пользователей, наличие возможности удаленного доступа по протоколу XDMCP [9]).
Display Server — это некий фундамент графики, основная задача которого — работать с видеокартой, монитором и с различными устройствами ввода (клавиатура, мышь, тачпады). То есть приложению (например, браузер или текстовый редактор), которое отрисовывается в «графике», не нужно знать, как напрямую работать с устройствами, не нужно знать про драйверы. Это всё на себя берет X Window.
Когда говорится про Display Server, то много лет в Linux, да и в Unix имелось в виду приложение X Window System [10] или в простонародье X (Иксы).
Сейчас во многих дистрибутивах на смену X внедряют Wayland [11]. [11]
Также можно почитать:
Для начала запустим X'ы и несколько графических приложений в них.
Выполнять всё буду от свежесозданного пользователя webinaruser (проще, но не безопаснее было бы всё выполнить от root'а).
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
% X -retro :77 vt8 &
Опции: * -retro — запускают с «серым» классическим фоном, а не с чёрным как по умолчанию; * :77 — задаю (можно любой в разумном диапазоне, только :0 уже скорее всего занят под уже запущенную графику) номер экрана, фактический некий уникальный идентификатор, по которому можно будет различать несколько запущенных X'ов; * vt8 — указывает терминал, здесь /dev/tty8, на котором будут отображаться X'ы).
Для этого предварительно задаём переменную, по которой приложение будет понимать, в какие из запущенных у меня X'ов отсылать то, что нужно нарисовать:
% export DISPLAY=»:77»
Посмотреть список запущенных X'ов можно так:
ps -fwwC X
После того, как задали переменную, можно запускать приложения в наши X'ы — например, запускаю часы:
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

Основные идеи и выводы из этого фрагмента:

Далее разберём компоненты, из которых обычно состоит рабочий стол.
Начнём с так называемой кнопки «Пуск». Часто это отдельный апплет, используемый на «Панели задач». Также там обычно имеется апплет для переключения между запущенными приложениями.

Посмотрев на разные среды рабочих столов, я обобщил бы подобные приложения под общим названием «Apps Manager (Launcher/Switcher)», то есть инструмент для управления приложениями (запуска и переключением между запущенными), а также укажу утилиты, которые являются примером приложения данного типа.
○ xfce4-panel,
○ mate-panel/gnome-panel,
○ vala-panel,
○ tint2.
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank.
○ sxhkd.
○ dmenu-run,
○ rofi -show drun,
○ albert,
○ grun.

Подробнее на русском [15]
WM (Оконный менеджер) — некое приложение, которое отвечает за управление окнами, добавляет возможность:

Перечислю наиболее известные (в круглых скобках указываю, в каком DE используется по умолчанию):

Также перечислю «старые WM с элементами DE». Т.е. помимо оконного менеджера в них имеются элементы типа кнопки «Пуск» и «Панели задач», более присущие полноценным DE. Хотя какие они «старые», если и IceWM, и WindowMaker уже выпустили свои обновлённые версии в 2020 году. Получается, что корректнее не «старые», а «старожилы»:





Помимо «классических» («стековых оконных менеджеров») стоит отдельно отметить тайловые WM [30], которые позволяет размещать окна «черепицей» по всему экрану, а также для некоторых приложений отдельный рабочий стол для каждого запускаемого приложения на весь экран. Это немного не привычно для людей, ранее их не использовавших, но так как я сам достаточно давно использую такой интерфейс, могу сказать, что это вполне удобно и быстро привыкаешь к такому интерфейсу, после чего уже «классические» оконные менеджеры не кажутся удобными.

Также стоит отдельно упомянуть проект Compiz [37]и такое понятие, как «Композитный менеджер окон», использующий возможности аппаратного ускорения для отображения прозрачности, теней, различных трёхмерных эффектов. Около 10 лет назад был бум 3D-эффектов на Linux-десктопах. Сейчас многие из оконных менеджеров, встроенных в DE, частично используют композитные возможности. Недавно появился Wayfire [38] — продукт с аналогичным Compiz функционалом под Wayland.

Подробный список различных оконных менеджеров также можно посмотреть в статье-сравнении [39].
Также стоит отметить следующие компоненты рабочего стола (здесь использую английские устоявшиеся термины для описания разновидности приложения — это не названия самих приложений):
Из перечисленных выше компонентов получается так называемая «Среда оформления рабочего стола». Часто все её компоненты разрабатываются с использованием одних и тех же графических библиотек и с использованием одинаковых принципов оформления. Тем самым, как минимум, выдерживается общий стиль для внешнего вида приложений.
Здесь можно выделить следующие существующие на данный момент среды рабочего стола:
Наиболее распространёнными считаются GNOME и KDE, ну и на пятки им наступает XFCE.

Сравнение по различным параметрам в виде таблицы можно посмотреть в соответствующей статье Википедии [48].

Даже есть такие интересные примеры уже из истории: в 2003-2007 годах для Linux было сделано «3D-оформление рабочего стола» с названием «Project Looking Glass» от фирмы Sun. Я сам пользовался этим рабочим столом, точнее «игрался», так как пользоваться было тяжело. Это «3D-оформление» было написано на Java во времена, когда не было ещё видеокарт с поддержкой 3D. Потому все эффекты пересчитывались процессором, и компьютер должен был быть очень мощным, иначе все работало медленно. Но зато получалось красиво. Трёхмерные плашки приложений можно было поворачивать/разворачивать. Можно было поворачиваться в цилиндре рабочего стола с обоями из панорамы в 360 градусов. Было несколько своих красивых приложений: например, прослушивание музыки в виде «смены CD-дисков» и т. д. Можно на youtube посмотреть видео [50] про этот проект, только качество этих видео скорее всего будет плохим, так как в те годы не было возможности загрузить видео высокого качества.

Xfce [41]
Легковесный рабочий стол. Существует проект достаточно давно, с 1996 года. В последние годы достаточно популярен, в противовес более тяжёлым KDE и GNOME, на многих дистрибутивах которым требуется лёгкий и «классический» интерфейс рабочего стола. В нем имеется много настроек и большое количество своих программ: терминал (xfce4-terminal), файловый менеджер (thunar), просмотрщик картинок (ristretto), текстовый редактор (mousepad).

Pantheon [51]
Используется в дистрибутиве «Elementary OS». Тут можно сказать, что есть «рабочие столы», которые разрабатываются и используются в рамках одного отдельного дистрибутива и не сильно используются (если не сказать «совсем не используются») в других дистрибутивах. По крайней мере они пока не набрали популярность и не убедили большую часть аудитории в преимуществах своего подхода. Pantheon ставит перед собой задачу построить интерфейс, похожий на macOS.

Вариант с dock-панелью:

Enlightenment [47]
Сильный уклон в графические эффекты и виджеты (ещё со времён, когда другие рабочие среды не имели виджеты на рабочем столе, например, календарь/часы). Использует свои библиотеки. Имеется большой набор своих «красивых» приложений: терминал (Terminology), видеоплеер (Rage), просмотр картинок (Ephoto).

Moksha [52]
Это форк Enlightenment17, который используется в дистрибутиве BodhiLinux.

GNOME [43]
Изначально «классический» интерфейс рабочего стола, созданный в противовес KDE, который был написан на библиотеке QT, на тот момент распространяющийся по лицензии, не очень удобной для коммерческих дистрибутивов.

GNOME_Shell [53]
С третьей версии GNOME стал поставляться с оболочкой GNOME Shell, имеющей «неклассический вид», что понравилось не всем пользователям (любые резкие изменения в интерфейсах пользователями сложно принимаются). Как следствие — появление форк-проектов, продолжающих развитие этого рабочего стола в «классическом» стиле: MATE и Cinnamon. Используется по умолчанию во многих коммерческих дистрибутивах. Имеет большое количество настроек и своих приложений.

MATE [45]
Появилась на основе GNOME2 и продолжает развитие этой среды оформления. Имеет большое количество настроек и форков приложений, которые использовались еще в GNOME2 (употребляются новые имена) для того, чтобы не путать форки с их новой версией для GNOME3).

Cinnamon [44]
Форк GNOME Shell, предоставляющий пользователям интерфейс в «классическом» стиле (как это было в GNOME2).
Имеет большое количество настроек и те же приложения, что и для GNOME Shell.

Budgie [54]
Форк GNOME в «классическом» стиле, который развивался в рамках дистрибутива Solus, но сейчас также поставляется в рамках самостоятельного рабочего стола на различных других дистрибутивах.

KDE_Plasma [42] (или, как часто называют, просто KDE)
Среда рабочего стола, развиваемая в рамках проекта KDE.
Имеет огромное количество настроек, доступных простому пользователю из графического интерфейса и много графических приложений, развиваемых в рамках этого рабочего стола.

Trinity [55]
В 2008 году KDE выпустила свою новую реализацию KDE Plasma (был сильно переписан движок рабочего стола). Также, как и с GNOME/MATE, не всем фанатам KDE это понравилось. В результате появился форк проекта, продолжающий развитие предыдущей версии, под названием TDE (Trinity Desktop Environment).

Deepin_DE [56]
Одна из новых сред рабочего стола, написанная с использованием Qt (на котором написан KDE). Имеет много настроек и достаточно красивый (хотя это субъективное понятие) и проработанный интерфейс. Разрабатывается в рамках дистрибутива Deepin Linux. Также есть пакеты под другие дистрибутивы

Fly
Пример среды рабочего стола, написанной с использованием Qt. Разрабатывается в рамках дистрибутива Astra Linux.

LXQt [46]
Легковесная среда рабочего стола. Как и несколько предыдущих примеров, написана с использованием Qt. Фактически является продолжением проекта LXDE и результатом объединения с проектом Razor-qt.
Как видите, рабочий стол в Linux может выглядеть очень по-разному и на вкус любого здесь найдётся подходящий интерфейс: от очень красивых и с 3D-эффектами до минималистических, от «классических» до необычных, от активно использующих ресурсы системы до легковесных, от больших экранов до планшетов/смартфонов.
Ну и хочется надеяться, что у меня получилось дать представление о том, из каких основных компонентов состоит графика и рабочий стол в ОС Linux.
Материал для этой статьи был обкатан в июле 2020 года на вебинаре. Его можно посмотреть здесь [57].
На этом всё. Надеюсь, было полезно. Если есть какие-то вопросы и комментарии, пишите. Буду рад ответить. Ну и приходите учиться в «Сетевую Академию ЛАНИТ» [58]!
Автор: LinuxCertifiedInstructor
Источник [59]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/linux/356559
Ссылки в тексте:
[1] Источник: https://ru.freepik.com/premium-photo/empty-working-table-in-room-with-window_5478457.htm
[2] Сетевой Академии ЛАНИТ: https://academy.ru/
[3] SDDM: https://ru.wikipedia.org/wiki/Simple_Desktop_Display_Manager
[4] KDM: https://ru.wikipedia.org/wiki/KDE_Display_Manager
[5] GDM: https://ru.wikipedia.org/wiki/GNOME_Display_Manager
[6] LightDM: https://ru.wikipedia.org/wiki/LightDM
[7] XDM: https://ru.wikipedia.org/wiki/XDM
[8] Wiki-статье.: https://en.wikipedia.org/wiki/X_display_manager
[9] XDMCP: https://ru.wikipedia.org/wiki/XDMCP
[10] X Window System: https://ru.wikipedia.org/wiki/X_Window_System
[11] Wayland: https://ru.wikipedia.org/wiki/Wayland
[12] общее описание архитектуры X'ов: https://en.wikipedia.org/wiki/X_Window_System_protocols_and_architecture
[13] запуск X'ов в X'ах: https://en.wikipedia.org/wiki/Xephyr
[14] Х'ы под ОС Windows: https://ru.wikipedia.org/wiki/Xming
[15] Подробнее на русском: https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80_%D0%BE%D0%BA%D0%BE%D0%BD_X_Window_System
[16] Подробнее на английском: https://en.wikipedia.org/wiki/Comparison_of_X_window_managers
[17] mutter: https://ru.wikipedia.org/wiki/Mutter_(%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80)
[18] marco: https://ru.wikipedia.org/wiki/Metacity#Marco
[19] metacity: https://ru.wikipedia.org/wiki/Metacity
[20] muffin: https://ru.wikipedia.org/wiki/Metacity#Muffin
[21] kwin: https://ru.wikipedia.org/wiki/KWin
[22] xfwm: https://ru.wikipedia.org/wiki/Xfce#Xfwm
[23] twm: https://ru.wikipedia.org/wiki/Twm
[24] IceWM: https://ru.wikipedia.org/wiki/IceWM
[25] WindowMaker: https://ru.wikipedia.org/wiki/Window_Maker
[26] openbox: https://ru.wikipedia.org/wiki/Openbox
[27] blackbox: https://ru.wikipedia.org/wiki/Blackbox
[28] fluxbox: https://ru.wikipedia.org/wiki/Fluxbox
[29] fvwm: https://ru.wikipedia.org/wiki/FVWM
[30] тайловые WM: https://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%BE%D0%B2%D1%8B%D0%B9_%D0%BE%D0%BA%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80
[31] i3: https://ru.wikipedia.org/wiki/I3_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0)
[32] ratpoison: https://ru.wikipedia.org/wiki/Ratpoison
[33] awesome: https://ru.wikipedia.org/wiki/Awesome
[34] DWM: https://ru.wikipedia.org/wiki/Dwm
[35] Xmonad: https://ru.wikipedia.org/wiki/Xmonad
[36] sway: https://en.wikipedia.org/wiki/Sway_(window_manager)
[37] Compiz : https://ru.wikipedia.org/wiki/Compiz
[38] Wayfire: https://wayfire.org/
[39] статье-сравнении: https://www.gilesorr.com/wm/table.html
[40] Подробнее на английском: https://en.wikipedia.org/wiki/Desktop_environment
[41] Xfce: https://ru.wikipedia.org/wiki/Xfce
[42] KDE: https://ru.wikipedia.org/wiki/KDE_Plasma_5
[43] GNOME: https://ru.wikipedia.org/wiki/GNOME
[44] Cinnamon: https://ru.wikipedia.org/wiki/Cinnamon
[45] Mate: https://ru.wikipedia.org/wiki/MATE
[46] LXQt: https://ru.wikipedia.org/wiki/LXQt
[47] Enlightenment: https://ru.wikipedia.org/wiki/Enlightenment
[48] статье Википедии: https://en.wikipedia.org/wiki/Comparison_of_X_Window_System_desktop_environments
[49] Project_Looking_Glass: https://en.wikipedia.org/wiki/Project_Looking_Glass
[50] видео: https://www.youtube.com/results?search_query=%22Project+Looking+Glass%22+SUN
[51] Pantheon: https://ru.wikipedia.org/wiki/Elementary_OS#Pantheon
[52] Moksha: http://www.bodhilinux.com/moksha-desktop/
[53] GNOME_Shell: https://ru.wikipedia.org/wiki/GNOME_Shell
[54] Budgie: https://ru.wikipedia.org/wiki/Budgie_(%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B0%D1%8F_%D0%BE%D0%B1%D0%BE%D0%BB%D0%BE%D1%87%D0%BA%D0%B0)
[55] Trinity: https://ru.wikipedia.org/wiki/Trinity_Desktop_Environment
[56] Deepin_DE: https://en.wikipedia.org/wiki/Deepin#Deepin_Desktop_Environment
[57] здесь: https://youtu.be/KaJEa_VKceI
[58] «Сетевую Академию ЛАНИТ»: https://academy.ru/catalog/unix%20linux/
[59] Источник: https://habr.com/ru/post/516330/?utm_source=habrahabr&utm_medium=rss&utm_campaign=516330
Нажмите здесь для печати.