Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу

Ця стаття про те, як влаштована графіка в Linux та з яких компонентів вона складається. У ній багато скріншотів із різними реалізаціями серед робочих столів. 

Якщо ви не сильно розрізняєте KDE і GNOME або розрізняєте, але хотіли б дізнатися, які є альтернативи, то ця стаття для вас. Вона оглядова, і хоча в ній багато назв і трохи термінів, матеріал буде також корисний початківцям і лише Linux, що тільки поглядає в бік.

Тема може зацікавити і просунутих користувачів при налаштуванні віддаленого доступу та реалізації тонкого клієнта. Часто зустрічаю цілком запеклих лінуксойдів із твердженнями «на сервері лише командний рядок, і графіку докладніше вивчати не планую, тому що це все потрібно для простих користувачів». Але навіть знавці Linux з великим подивом і радістю відкривають для себе опцію "-X" у команди ssh (а для цього корисно розуміти роботу та функції X-сервера).

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столуДжерело

Я майже 15 років навчаю на курсах LinuxМережевий Академії ланитьі впевнений, що багато з тих понад п'яти тисяч людей, яких навчив, читають і напевно пишуть статті на Хабр. Курси завжди дуже насичені (середня тривалість курсу – п'ять днів), потрібно розповісти теми, на повноцінне знайомство з якими потрібно щонайменше днів десять. І завжди в ході курсу в залежності від аудиторії (новачки зібралися або матері адміністратори), а також від «питань із зали» я роблю вибір, що донести докладніше, а що більш поверхово, щоб присвятити більше часу утилітам командного рядка та їх практичному застосуванню . Таких тим, якими доводиться трохи жертвувати, достатньо. Це "Історія Linux", "Відмінності в дистрибутивах Linux", "Про ліцензії: GPL, BSD, …", "Про графіку та середовища робочих столів" (тема цієї статті) та ін. Не те, щоб вони не важливі, але зазвичай є безліч актуальніших «тут і зараз» питань і всього якихось п'ять днів… Однак для загального розуміння основ ОС Linux, розуміння доступного розмаїття (щоб навіть користуючись одним конкретним дистрибутивом Linux, все-таки мати ширший погляд на весь цей величезний і неосяжний світ, що зветься "Linux") вивчати ці теми корисно і потрібно. 

Під час статті по кожному компоненту я вказую посилання для тих, кому захочеться глибше поринути у тему, наприклад, на статті у Вікіпедії (при цьому вказую на більш повну/корисну версію за наявності англомовної та російськомовної статей).

Для основних прикладів та скріншотів я використовував дистрибутив OpenSUSE. Можна було використовувати будь-який інший дистрибутив, що розробляється спільнотою, з великою кількістю пакетів у репозиторії. Складно, але можливо, продемонструвати різноманіття оформлення робочого столу на комерційному дистрибутиві, тому що часто в них використовуються лише одне або два найбільш відомих середовищ робочого столу. Так розробники звужують завдання випуску стабільної налагодженої ОС. На цю систему я встановив все DM/DE/WM (пояснення цих термінів нижче), які знайшов у репозиторії. 

Скріншоти з «синіми рамками» таки зроблені на openSUSE. 

Скріншоти з білими рамками робив на інших дистрибутивах, вони вказані на скріншоті. 

Скріншоти з «сірими рамками» були взяті з інтернету як приклади оформлення робочого столу з минулих років.

Тож почнемо.

Основні компоненти, з яких складається графіка

Виділю три основні компоненти та перерахую їх у порядку, як вони запускаються при старті системи: 

  1. DM (Display Manager);
  2. Display Server;
  3. DE (Desktop Environment).

Додатково як важливі підпункти у Desktop Environment: 

  • Apps Manager/Launcher/Switcher (кнопка "Пуск"); 
  • WM (Window Manager);
  • різне ПЗ, що поставляється разом із середовищем робочого столу.

Докладніше по кожному пункту.

DM (Display Manager)

Перший додаток, який запускається при старті "графіки", - це DM (Display Manager), дисплейний менеджер. Його основні завдання:

  • запитати, яких користувачів пустити до системи, запитати автентифікаційні дані (пароль, відбиток пальця);
  • вибрати, яке середовище оформлення робочого столу запустити.

На даний момент у різних дистрибутивах широко використовуються: 

  • SDDM (Змінив КДМ),
  • GDM,
  • LightDM,
  • XDM.
  • Також можна згадати Fly-DM (який використовується в AstraLinux).

Список існуючих DM ведеться в актуальному стані Wiki-стаття. 

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Варто відзначити, що на наступних скріншотах використовується той самий дисплейний менеджер LightDM, але в різних дистрибутивах (назви дистрибутивів вказані в круглих дужках). Оцініть, як по-різному може виглядати цей DM завдяки роботі дизайнерів різних дистрибутивів.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Головне в цьому різноманітті, щоб було зрозуміло, що є така програма, яка відповідає за запуск графіки і допуск користувача до цієї графіки, і є різні реалізації цієї програми, що відрізняються зовнішнім виглядом і трохи функціоналом (вибір середовищ оформлення, вибір користувачів, версія для погано бачачих користувачів, наявність можливості віддаленого доступу за протоколом XDMCP).

Сервер відображення

Display Server - це якийсь фундамент графіки, основне завдання якого - працювати з відеокартою, монітором та з різними пристроями введення (клавіатура, миша, тачпади). Тобто додатку (наприклад, браузер або текстовий редактор), який малюється в «графіці», не потрібно знати, як працювати з пристроями, не потрібно знати про драйвери. Це все бере на себе X Window.

Коли йдеться про Display Server, то багато років у Linux, та й у Unix мав на увазі додаток X Window System або в народі X (Ікси). 

Зараз у багатьох дистрибутивах на зміну X запроваджують Вейленд. 

Також можна почитати:

Для початку запустимо X'и та кілька графічних додатків у них.

Практикум «запускаємо Х та додатки в ньому»

Виконувати все буду від нового користувача webinaruser (простіше, але не безпечніше було б все виконати від root'а).

  • Так як Х'ам потрібен доступ до пристроїв, даю доступ: Список пристроїв визначив подивившись помилки при запуску Х'ов у лозі (/home/webinaruser/.local/share/xorg/Xorg.77.log) 

% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*

  • Після цього запускаю X'и:

% 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 &

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Основні ідеї та висновки з цього фрагмента:

  • X'ам потрібен доступ до пристроїв: терміналу, відеокарти, пристроїв введення,
  • Самі X'и жодних елементів інтерфейсу не відображають — це сіре (якщо з опцією «retro») або чорне полотно певних розмірів (наприклад, 1920×1080 або 1024×768), щоб запускати в ньому графічні програми.
  • За рухом «хрестика» видно, що X'и відстежують положення миші та передають цю інформацію запущеним у ньому додаткам.
  • Також X'и відловлюють натискання клавіш на клавіатурі та передають цю інформацію додаткам.
  • Змінна DISPLAY показує графічним додаткам, у якому екрані (кожні X'и під час запуску запускаються з унікальним номером екрана), отже й у які із запущених моїй машині, потрібно буде малювати X'ы. (Також є можливість у цій змінній вказати віддалену машину і відсилати висновок на X'и, запущені на іншій машині в мережі.) Так як X'и запускали без опції -auth, тому немає необхідності розбиратися зі змінною XAUTHORITY або з командою xhost.
  • Графічні додатки (або як їх називають X-клієнти) малюються в X'ах — при цьому без можливості їх переміщати/закривати/змінити «-g (Ширина)x(Висота)+(Зсув від лівого краю) + (зрушення від віхового краю)». Зі знаком «мінус» відповідно від правого та від нижнього краю.
  • Два терміни, які варто озвучити: X-сервер (так називають X'и) та X-клієнти (так називають будь-який графічний додаток, що запускається в X'ах). Є невелика плутанина у розумінні цієї термінології, багато хто розуміє її точно до навпаки. У випадку, коли я з «клієнтської машини» (в термінології віддаленого доступу) підключаюсь до «сервера» (в термінології віддаленого доступу), щоб відобразити на своєму моніторі графічний додаток із сервера, то X-сервер запускається на тій машині, де монітор ( тобто на "клієнтській машині", а не на "сервері"), а X-клієнти запускаються і працюють на "сервері", хоч і відображаються на моніторі "клієнтської машини". 

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу

Компоненти DE

Далі розберемо компоненти, у тому числі зазвичай складається робочий стіл.

Компоненти DE: кнопка «Пуск» та «Панель завдань»

Почнемо з так званої кнопки "Пуск". Часто це окремий аплет, що використовується на панелі завдань. Також там зазвичай є аплет для перемикання між запущеними програмами.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Подивившись на різні середовища робочих столів, я узагальнив би подібні програми під загальною назвою «Apps Manager (Launcher/Switcher)», тобто інструмент для керування додатками (запуску та перемикання між запущеними), а також вкажу утиліти, які є прикладом додатка даного типу .

  • Буває у вигляді кнопки «Пуск» на класичній (на всю довжину одного з країв екрану) «Панелі завдань»:

    ○ xfce4-panel,
    ○ mate-panel/gnome-panel,
    ○ vala-panel,
    ○ tint2.

  • Також можна окремо виділити "MacOS-подібні панелі завдань" (не на всю довжину краю екрана), хоча багато панелі завдань можуть відображатися в обох варіантах. Тут скоріше головна відмінність суто візуальна – наявність «ефекту збільшення піктограм при наведенні».

    ○ docky,
    ○ latte-dock,
    ○ cairo-dock,
    ○ plank.

  • І/або служби, яка запускає програми при натисканні «гарячих клавіш» (у багатьох середовищах робочого столу аналогічний компонент обов'язково присутній і дозволяє налаштувати свої гарячі клавіші):

    ○ sxhkd.

  • Також є різні меню-подібні "лаунчери" (від англ. Launch (запускати)):

    ○ dmenu-run,
    ○ rofi -show drun,
    ○ albert,
    ○ grun.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу

Компоненти DE: WM (Window Manager)

Детальніше російською

Детальніше англійською

WM (Віконний менеджер) — певний додаток, який відповідає за керування вікнами, додає можливість:

  • переміщень вікон по робочому столу (у тому числі стандартне із затисканням клавіші Alt за будь-яку частину вікна, а не лише за заголовок);
  • зміна розмірів вікон, наприклад, перетягуючи за "рамку вікна";
  • додає до інтерфейсу вікна «заголовок (title)» та кнопки згортання/розгортання/закриття програми;
  • поняття, яка програма знаходиться у «фокусі».

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Перерахую найбільш відомі (у круглих дужках вказую, в якому DE використовується за замовчуванням):

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Також перерахую "старі WM з елементами DE". Тобто. крім віконного менеджера у них є елементи типу кнопки «Пуск» і «Панелі завдань», властиві повноцінним DE. Хоча які вони "старі", якщо і IceWM, і WindowMaker вже випустили свої оновлені версії у 2020 році. Виходить, що коректніше не «старі», а «старожили»:

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Крім "класичних" ("стекових віконних менеджерів") варто окремо відзначити тайлові WM, які дозволяє розміщувати вікна «черепицею» по всьому екрану, а також для деяких програм окремий робочий стіл для кожної програми, що запускається на весь екран. Це трохи не звично для людей, які раніше їх не використовували, але так як я сам досить давно використовую такий інтерфейс, можу сказати, що це цілком зручно і швидко звикаєш до такого інтерфейсу, після чого вже «класичні» віконні менеджери не здаються зручними.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Також варто окремо згадати проект Компіз і таке поняття, як "Композитний менеджер вікон", що використовує можливості апаратного прискорення для відображення прозорості, тіней, різних тривимірних ефектів. Близько 10 років тому був бум 3D-ефектів на Linux-десктопах. Зараз багато хто з віконних менеджерів, вбудованих в DE, частково використовують композитні можливості. Нещодавно з'явився Шляховий вогонь — продукт із аналогічним Compiz функціоналом під Wayland.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Докладний список різних віконних менеджерів також можна переглянути  статті-порівнянні.

Компоненти DE: інші

Також варто відзначити наступні компоненти робочого столу (тут використовую англійські усталені терміни для опису різновиду додатка – це не назви самих додатків):

  • Applets(Аплети):
  • ПЗ (Widget toolkit) - часто з середовищем поставляється якийсь «мінімальний набір» ПЗ:

DE (Desktop Environment)

Детальніше англійською

З перерахованих вище компонентів виходить так зване «Середовище оформлення робочого столу». Часто всі її компоненти розробляються з використанням тих самих графічних бібліотек і з використанням однакових принципів оформлення. Тим самим, як мінімум, витримується загальний стиль зовнішнього вигляду додатків.

Тут можна виділити такі існуючі на даний момент середовища робочого столу:

Найбільш поширеними вважаються GNOME і KDE, та й на п'яти їм настає XFCE.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Порівняння за різними параметрами у вигляді таблиці можна переглянути у відповідній статті Вікіпедії.  

Різноманітність DE

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Project_Looking_Glass

Навіть є такі цікаві приклади з історії: у 2003-2007 роках для Linux було зроблено «3D-оформлення робочого столу» з назвою «Project Looking Glass» від фірми Sun. Я сам користувався цим робочим столом, точніше «грав», тому що користуватися було важко. Це «3D-оформлення» було написано на Java у часи, коли ще не було відеокарт з підтримкою 3D. Тому всі ефекти перераховувалися процесором, і комп'ютер мав бути дуже сильним, інакше все працювало повільно. Зате виходило красиво. Тривимірні плашки додатків можна було повертати/розгортати. Можна було повертатися в циліндрі робочого столу зі шпалерами з панорами 360 градусів. Було кілька своїх гарних програм: наприклад, прослуховування музики у вигляді «зміни CD-дисків» і т. д. Можна на youtube подивитися відео про цей проект, тільки якість цих відео швидше за все буде поганою, тому що в ті роки не було можливості завантажити відео високої якості.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Xfce

Легкий робочий стіл. Існує проект досить давно, із 1996 року. В останні роки досить популярний, на противагу важчим KDE і GNOME, на багатьох дистрибутивах яким потрібний легкий і «класичний» інтерфейс робочого столу. У ньому є багато налаштувань і багато своїх програм: термінал (xfce4-terminal), файловий менеджер (thunar), переглядач картинок (ristretto), текстовий редактор (mousepad).

 
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Пантеон 

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

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Варіант із dock-панеллю:

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Просвітлення

Сильний ухил у графічні ефекти та віджети (ще з часів, коли інші робочі середовища не мали віджети на робочому столі, наприклад, календар/годинник). Використовує бібліотеки. Є великий набір своїх «красивих» програм: термінал (Terminology), відеоплеєр (Rage), перегляд картинок (Ephoto).

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Мокша

Це форк Enlightenment17, який використовується у дистрибутиві BodhiLinux. 

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
GNOME

Спочатку «класичний» інтерфейс робочого столу, створений на противагу KDE, який був написаний на бібліотеці QT, що на той момент розповсюджується за ліцензією, не дуже зручною для комерційних дистрибутивів. 

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
GNOME_Shell

З третьої версії GNOME став поставлятися з оболонкою GNOME Shell, що має «некласичний вигляд», що сподобалося не всім користувачам (різні зміни в інтерфейсах користувачами складно приймаються). Як наслідок — поява форк-проектів, які продовжують розвиток цього робочого столу у «класичному» стилі: MATE та Cinnamon. Використовується за умовчанням у багатьох комерційних дистрибутивах. Має велику кількість налаштувань та своїх додатків. 

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
MATE 

З'явилася на основі GNOME2 та продовжує розвиток цього середовища оформлення. Має велику кількість налаштувань та форків додатків, які використовувалися ще в GNOME2 (використовуються нові імена) для того, щоб не плутати форки з їх новою версією для GNOME3).

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Кориця

Форк GNOME Shell, що надає користувачам інтерфейс у «класичному» стилі (як це було в GNOME2). 

Має велику кількість налаштувань і ті ж програми, що й для GNOME Shell.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Будгі

Форк GNOME у «класичному» стилі, що розвивався в рамках дистрибутива Solus, але зараз також поставляється в рамках самостійного робочого столу на різних дистрибутивах.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
KDE_Plasma (або, як часто називають, просто KDE) 

Середовище робочого столу, що розвивається в рамках проекту KDE. 

Має величезну кількість налаштувань, доступних простому користувачеві з графічного інтерфейсу та багато графічних програм, що розвиваються в рамках цього робочого столу.

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Трійця

У 2008 році KDE випустила свою нову реалізацію KDE Plasma (було сильно переписано двигун робочого столу). Так само, як і з GNOME/MATE, не всім фанатам KDE це сподобалося. В результаті з'явився форк проекту, що продовжує розвиток попередньої версії під назвою TDE (Trinity Desktop Environment).

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Deepin_DE

Одне з нових середовищ робочого столу, написане за допомогою Qt (на якому написано KDE). Має багато налаштувань та досить гарний (хоча це суб'єктивне поняття) та опрацьований інтерфейс. Розробляється у рамках дистрибутива Deepin Linux. Також є пакети під інші дистрибутиви

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
полетіти 

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

Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
LXQt

Легковаго середовища робочого столу. Як і кілька попередніх прикладів написана з використанням Qt. Фактично є продовженням проекту LXDE та результатом об'єднання з проектом Razor-qt.

Як бачите, робочий стіл у Linux може виглядати дуже по-різному і на смак будь-якого тут знайдеться відповідний інтерфейс: від дуже красивих і з 3D-ефектами до мінімалістичних, від «класичних» до незвичайних, від ресурсів системи, що активно використовують, до легковажних, від великих екранів до планшетів/смартфонів.

Ну і хочеться сподіватися, що мені вдалося дати уявлення про те, з яких основних компонентів складається графіка і робочий стіл в ОС Linux.

Матеріал для цієї статті було обкатано у липні 2020 року на вебінарі. Його можна подивитися тут.

На цьому все. Сподіваюся, було корисно. Якщо є якісь питання та коментарі, пишіть. Радий відповісти. Ну і приходьте вчитися у «Мережеву Академію ланить»!

Джерело: habr.com

Додати коментар або відгук