ProHoster > Блог > адміністрування > Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Як улаштована графіка в Linux: огляд різних середовищ оформлення робочого столу
Ця стаття про те, як влаштована графіка в Linux та з яких компонентів вона складається. У ній багато скріншотів із різними реалізаціями серед робочих столів.
Якщо ви не сильно розрізняєте KDE і GNOME або розрізняєте, але хотіли б дізнатися, які є альтернативи, то ця стаття для вас. Вона оглядова, і хоча в ній багато назв і трохи термінів, матеріал буде також корисний початківцям і лише Linux, що тільки поглядає в бік.
Тема може зацікавити і просунутих користувачів при налаштуванні віддаленого доступу та реалізації тонкого клієнта. Часто зустрічаю цілком запеклих лінуксойдів із твердженнями «на сервері лише командний рядок, і графіку докладніше вивчати не планую, тому що це все потрібно для простих користувачів». Але навіть знавці Linux з великим подивом і радістю відкривають для себе опцію "-X" у команди ssh (а для цього корисно розуміти роботу та функції X-сервера).
Джерело
Я майже 15 років навчаю на курсах LinuxМережевий Академії ланитьі впевнений, що багато з тих понад п'яти тисяч людей, яких навчив, читають і напевно пишуть статті на Хабр. Курси завжди дуже насичені (середня тривалість курсу – п'ять днів), потрібно розповісти теми, на повноцінне знайомство з якими потрібно щонайменше днів десять. І завжди в ході курсу в залежності від аудиторії (новачки зібралися або матері адміністратори), а також від «питань із зали» я роблю вибір, що донести докладніше, а що більш поверхово, щоб присвятити більше часу утилітам командного рядка та їх практичному застосуванню . Таких тим, якими доводиться трохи жертвувати, достатньо. Це "Історія Linux", "Відмінності в дистрибутивах Linux", "Про ліцензії: GPL, BSD, …", "Про графіку та середовища робочих столів" (тема цієї статті) та ін. Не те, щоб вони не важливі, але зазвичай є безліч актуальніших «тут і зараз» питань і всього якихось п'ять днів… Однак для загального розуміння основ ОС Linux, розуміння доступного розмаїття (щоб навіть користуючись одним конкретним дистрибутивом Linux, все-таки мати ширший погляд на весь цей величезний і неосяжний світ, що зветься "Linux") вивчати ці теми корисно і потрібно.
Під час статті по кожному компоненту я вказую посилання для тих, кому захочеться глибше поринути у тему, наприклад, на статті у Вікіпедії (при цьому вказую на більш повну/корисну версію за наявності англомовної та російськомовної статей).
Для основних прикладів та скріншотів я використовував дистрибутив OpenSUSE. Можна було використовувати будь-який інший дистрибутив, що розробляється спільнотою, з великою кількістю пакетів у репозиторії. Складно, але можливо, продемонструвати різноманіття оформлення робочого столу на комерційному дистрибутиві, тому що часто в них використовуються лише одне або два найбільш відомих середовищ робочого столу. Так розробники звужують завдання випуску стабільної налагодженої ОС. На цю систему я встановив все DM/DE/WM (пояснення цих термінів нижче), які знайшов у репозиторії.
Скріншоти з «синіми рамками» таки зроблені на openSUSE.
Скріншоти з білими рамками робив на інших дистрибутивах, вони вказані на скріншоті.
Скріншоти з «сірими рамками» були взяті з інтернету як приклади оформлення робочого столу з минулих років.
Тож почнемо.
Основні компоненти, з яких складається графіка
Виділю три основні компоненти та перерахую їх у порядку, як вони запускаються при старті системи:
DM (Display Manager);
Display Server;
DE (Desktop Environment).
Додатково як важливі підпункти у Desktop Environment:
Apps Manager/Launcher/Switcher (кнопка "Пуск");
WM (Window Manager);
різне ПЗ, що поставляється разом із середовищем робочого столу.
Докладніше по кожному пункту.
DM (Display Manager)
Перший додаток, який запускається при старті "графіки", - це DM (Display Manager), дисплейний менеджер. Його основні завдання:
запитати, яких користувачів пустити до системи, запитати автентифікаційні дані (пароль, відбиток пальця);
вибрати, яке середовище оформлення робочого столу запустити.
На даний момент у різних дистрибутивах широко використовуються:
Також можна згадати Fly-DM (який використовується в AstraLinux).
Список існуючих DM ведеться в актуальному стані Wiki-стаття.
Варто відзначити, що на наступних скріншотах використовується той самий дисплейний менеджер LightDM, але в різних дистрибутивах (назви дистрибутивів вказані в круглих дужках). Оцініть, як по-різному може виглядати цей DM завдяки роботі дизайнерів різних дистрибутивів.
Головне в цьому різноманітті, щоб було зрозуміло, що є така програма, яка відповідає за запуск графіки і допуск користувача до цієї графіки, і є різні реалізації цієї програми, що відрізняються зовнішнім виглядом і трохи функціоналом (вибір середовищ оформлення, вибір користувачів, версія для погано бачачих користувачів, наявність можливості віддаленого доступу за протоколом XDMCP).
Сервер відображення
Display Server - це якийсь фундамент графіки, основне завдання якого - працювати з відеокартою, монітором та з різними пристроями введення (клавіатура, миша, тачпади). Тобто додатку (наприклад, браузер або текстовий редактор), який малюється в «графіці», не потрібно знати, як працювати з пристроями, не потрібно знати про драйвери. Це все бере на себе X Window.
Коли йдеться про Display Server, то багато років у Linux, та й у Unix мав на увазі додаток X Window System або в народі X (Ікси).
Зараз у багатьох дистрибутивах на зміну X запроваджують Вейленд.
Х'и під ОС Windows (потрібні для віддаленого запуску графічних програм, наприклад використовуючи PuTTY).
Для початку запустимо X'и та кілька графічних додатків у них.
Практикум «запускаємо Х та додатки в ньому»
Виконувати все буду від нового користувача webinaruser (простіше, але не безпечніше було б все виконати від root'а).
Так як Х'ам потрібен доступ до пристроїв, даю доступ: Список пристроїв визначив подивившись помилки при запуску Х'ов у лозі (/home/webinaruser/.local/share/xorg/Xorg.77.log)
Опції: * -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 &
Основні ідеї та висновки з цього фрагмента:
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-клієнти запускаються і працюють на "сервері", хоч і відображаються на моніторі "клієнтської машини".
Компоненти DE
Далі розберемо компоненти, у тому числі зазвичай складається робочий стіл.
Компоненти DE: кнопка «Пуск» та «Панель завдань»
Почнемо з так званої кнопки "Пуск". Часто це окремий аплет, що використовується на панелі завдань. Також там зазвичай є аплет для перемикання між запущеними програмами.
Подивившись на різні середовища робочих столів, я узагальнив би подібні програми під загальною назвою «Apps Manager (Launcher/Switcher)», тобто інструмент для керування додатками (запуску та перемикання між запущеними), а також вкажу утиліти, які є прикладом додатка даного типу .
Буває у вигляді кнопки «Пуск» на класичній (на всю довжину одного з країв екрану) «Панелі завдань»:
Також можна окремо виділити "MacOS-подібні панелі завдань" (не на всю довжину краю екрана), хоча багато панелі завдань можуть відображатися в обох варіантах. Тут скоріше головна відмінність суто візуальна – наявність «ефекту збільшення піктограм при наведенні».
○ docky,
○ latte-dock,
○ cairo-dock,
○ plank.
І/або служби, яка запускає програми при натисканні «гарячих клавіш» (у багатьох середовищах робочого столу аналогічний компонент обов'язково присутній і дозволяє налаштувати свої гарячі клавіші):
○ sxhkd.
Також є різні меню-подібні "лаунчери" (від англ. Launch (запускати)):
Також перерахую "старі WM з елементами DE". Тобто. крім віконного менеджера у них є елементи типу кнопки «Пуск» і «Панелі завдань», властиві повноцінним DE. Хоча які вони "старі", якщо і IceWM, і WindowMaker вже випустили свої оновлені версії у 2020 році. Виходить, що коректніше не «старі», а «старожили»:
Крім "класичних" ("стекових віконних менеджерів") варто окремо відзначити тайлові WM, які дозволяє розміщувати вікна «черепицею» по всьому екрану, а також для деяких програм окремий робочий стіл для кожної програми, що запускається на весь екран. Це трохи не звично для людей, які раніше їх не використовували, але так як я сам досить давно використовую такий інтерфейс, можу сказати, що це цілком зручно і швидко звикаєш до такого інтерфейсу, після чого вже «класичні» віконні менеджери не здаються зручними.
Також варто окремо згадати проект Компіз і таке поняття, як "Композитний менеджер вікон", що використовує можливості апаратного прискорення для відображення прозорості, тіней, різних тривимірних ефектів. Близько 10 років тому був бум 3D-ефектів на Linux-десктопах. Зараз багато хто з віконних менеджерів, вбудованих в DE, частково використовують композитні можливості. Нещодавно з'явився Шляховий вогонь — продукт із аналогічним Compiz функціоналом під Wayland.
Докладний список різних віконних менеджерів також можна переглянути статті-порівнянні.
Компоненти DE: інші
Також варто відзначити наступні компоненти робочого столу (тут використовую англійські усталені терміни для опису різновиду додатка – це не назви самих додатків):
Applets(Аплети):
ПЗ (Widget toolkit) - часто з середовищем поставляється якийсь «мінімальний набір» ПЗ:
З перерахованих вище компонентів виходить так зване «Середовище оформлення робочого столу». Часто всі її компоненти розробляються з використанням тих самих графічних бібліотек і з використанням однакових принципів оформлення. Тим самим, як мінімум, витримується загальний стиль зовнішнього вигляду додатків.
Тут можна виділити такі існуючі на даний момент середовища робочого столу:
Навіть є такі цікаві приклади з історії: у 2003-2007 роках для Linux було зроблено «3D-оформлення робочого столу» з назвою «Project Looking Glass» від фірми Sun. Я сам користувався цим робочим столом, точніше «грав», тому що користуватися було важко. Це «3D-оформлення» було написано на Java у часи, коли ще не було відеокарт з підтримкою 3D. Тому всі ефекти перераховувалися процесором, і комп'ютер мав бути дуже сильним, інакше все працювало повільно. Зате виходило красиво. Тривимірні плашки додатків можна було повертати/розгортати. Можна було повертатися в циліндрі робочого столу зі шпалерами з панорами 360 градусів. Було кілька своїх гарних програм: наприклад, прослуховування музики у вигляді «зміни CD-дисків» і т. д. Можна на youtube подивитися відео про цей проект, тільки якість цих відео швидше за все буде поганою, тому що в ті роки не було можливості завантажити відео високої якості.
Легкий робочий стіл. Існує проект досить давно, із 1996 року. В останні роки досить популярний, на противагу важчим KDE і GNOME, на багатьох дистрибутивах яким потрібний легкий і «класичний» інтерфейс робочого столу. У ньому є багато налаштувань і багато своїх програм: термінал (xfce4-terminal), файловий менеджер (thunar), переглядач картинок (ristretto), текстовий редактор (mousepad).
Використовується в дистрибутиві Elementary OS. Тут можна сказати, що є «робочі столи», які розробляються і використовуються в рамках одного окремого дистрибутива і не використовуються (якщо не сказати «зовсім не використовуються») в інших дистрибутивах. Принаймні вони поки що не набрали популярності і не переконали більшу частину аудиторії у перевагах свого підходу. Pantheon ставить собі завдання побудувати інтерфейс, схожий на macOS.
Сильний ухил у графічні ефекти та віджети (ще з часів, коли інші робочі середовища не мали віджети на робочому столі, наприклад, календар/годинник). Використовує бібліотеки. Є великий набір своїх «красивих» програм: термінал (Terminology), відеоплеєр (Rage), перегляд картинок (Ephoto).
Спочатку «класичний» інтерфейс робочого столу, створений на противагу KDE, який був написаний на бібліотеці QT, що на той момент розповсюджується за ліцензією, не дуже зручною для комерційних дистрибутивів.
З третьої версії GNOME став поставлятися з оболонкою GNOME Shell, що має «некласичний вигляд», що сподобалося не всім користувачам (різні зміни в інтерфейсах користувачами складно приймаються). Як наслідок — поява форк-проектів, які продовжують розвиток цього робочого столу у «класичному» стилі: MATE та Cinnamon. Використовується за умовчанням у багатьох комерційних дистрибутивах. Має велику кількість налаштувань та своїх додатків.
З'явилася на основі GNOME2 та продовжує розвиток цього середовища оформлення. Має велику кількість налаштувань та форків додатків, які використовувалися ще в GNOME2 (використовуються нові імена) для того, щоб не плутати форки з їх новою версією для GNOME3).
Форк GNOME у «класичному» стилі, що розвивався в рамках дистрибутива Solus, але зараз також поставляється в рамках самостійного робочого столу на різних дистрибутивах.
Середовище робочого столу, що розвивається в рамках проекту KDE.
Має величезну кількість налаштувань, доступних простому користувачеві з графічного інтерфейсу та багато графічних програм, що розвиваються в рамках цього робочого столу.
У 2008 році KDE випустила свою нову реалізацію KDE Plasma (було сильно переписано двигун робочого столу). Так само, як і з GNOME/MATE, не всім фанатам KDE це сподобалося. В результаті з'явився форк проекту, що продовжує розвиток попередньої версії під назвою TDE (Trinity Desktop Environment).
Одне з нових середовищ робочого столу, написане за допомогою Qt (на якому написано KDE). Має багато налаштувань та досить гарний (хоча це суб'єктивне поняття) та опрацьований інтерфейс. Розробляється у рамках дистрибутива Deepin Linux. Також є пакети під інші дистрибутиви
полетіти
Приклад середовища робочого столу написаної з використанням Qt. Розробляється у рамках дистрибутива Astra Linux.
Легковаго середовища робочого столу. Як і кілька попередніх прикладів написана з використанням Qt. Фактично є продовженням проекту LXDE та результатом об'єднання з проектом Razor-qt.
Як бачите, робочий стіл у Linux може виглядати дуже по-різному і на смак будь-якого тут знайдеться відповідний інтерфейс: від дуже красивих і з 3D-ефектами до мінімалістичних, від «класичних» до незвичайних, від ресурсів системи, що активно використовують, до легковажних, від великих екранів до планшетів/смартфонів.
Ну і хочеться сподіватися, що мені вдалося дати уявлення про те, з яких основних компонентів складається графіка і робочий стіл в ОС Linux.
Матеріал для цієї статті було обкатано у липні 2020 року на вебінарі. Його можна подивитися тут.
На цьому все. Сподіваюся, було корисно. Якщо є якісь питання та коментарі, пишіть. Радий відповісти. Ну і приходьте вчитися у «Мережеву Академію ланить»!