Система X Window використовує архітектуру клієнт-сервер. X-сервер працює на машині, яка має дисплей (монітори + пристрої введення), тоді як клієнти X можуть працювати на будь-якій іншій машині та підключатися до X-сервера за допомогою протоколу X (не безпосередньо, а скоріше за допомогою бібліотеки, наприклад Xlib або більш сучасний XCB, що не блокує події). Протокол X призначений для розширення і має безліч розширень (див. xdpyinfo(1)
).
X-сервер виконує лише низькорівневі операції, такі як створення та знищення вікон, виконуючи операції малювання (на сьогоднішній день більшість малюнків робиться на клієнті та надсилається як зображення на сервер), надсилає події до windows, ... Ви можете бачити, як мало X-сервер робить запуск X :1 &
(використовуйте будь-яке число, яке ще не використовується іншим сервером X) або Xephyr :1 &
(Xephyr запускає X-сервер, вбудований у ваш поточний X-сервер), а потім працює xterm -display :1 &
та переходить на новий X-сервер (можливо, вам знадобиться налаштувати авторизацію X використовуючи xauth(1)
).
Як бачите, сервер X робить дуже мало, він не малює заголовки, не робить мінімізацію вікон / іконіфікацію, не керує розміщенням вікон ... Звичайно, ви можете керувати розміщенням вікон вручну за допомогою команди як xterm -geometry -0-0
, але зазвичай у вас буде спеціальний клієнт X, який виконує вищевказані речі. Цей клієнт називається менеджером вікон . Одночасно може бути активний лише один менеджер вікон. Якщо ви до цих пір відкрито голий X - сервер попередніх команд, ви можете спробувати запустити менеджер вікон на ній, як twm
, metacity
, kwin
, compiz
, larswm
, pawm
, ...
Як ми вже говорили, X виконує лише низькорівневі операції, і не надає понять вищого рівня, як кнопки, меню, панелі інструментів ... Це надається бібліотеками, що називаються наборами інструментів , наприклад: Xaw, GTK, Qt, FLTK, ...
Настільні середовища - це сукупність програм, розроблених для забезпечення єдиного досвіду користувача. Отже, настільні середовища зазвичай забезпечують панелі, пускові програми, системні треї, панелі управління, інфраструктуру конфігурації (де зберегти налаштування). Деякі відомі настільні середовища: KDE (створений за допомогою інструментарію Qt), Gnome (за допомогою GTK), Просвітлення (з використанням власних бібліотек інструментаріїв), ...
Деякі сучасні ефекти на робочому столі найкраще виконувати за допомогою обладнання 3d. Отже, з'являється новий компонент, композитний менеджер . Розширення X, розширення XComposite, надсилає вміст вікна до складеного менеджера. Композитний менеджер перетворює цей вміст у текстури та використовує 3d обладнання через OpenGL, щоб скласти їх багатьма способами (альфа-змішування, 3d-проекції, ...).
Не так давно сервер X спілкувався безпосередньо з апаратними пристроями. Значна частина цього пристрою керування переміщується до ядра ОС: DRI (дозволяє доступ до 3d апаратного забезпечення за допомогою X та клієнтів прямої рендерингу), evdev (уніфікований інтерфейс для обробки пристрою введення), KMS (переміщення налаштування графічного режиму до ядра) , GEM / TTM (управління пам'яттю текстури).
Таким чином, при складності керування пристроями, що в основному знаходяться поза X, стало простіше експериментувати зі спрощеними віконними системами. Wayland - це система вікон, заснована на концепції композитного менеджера, тобто віконна система - це композитний менеджер. Wayland використовує обробку пристрою, який перемістився з X та надає за допомогою OpenGL.
Що стосується Unity, то це настільне середовище, розроблене для того, щоб мати інтерфейс користувача, придатний для нетбуків.