Система X Window использует архитектуру клиент-сервер. X-сервер работает на компьютере с дисплеем (мониторы + устройства ввода), в то время как X-клиенты могут работать на любом другом компьютере и подключаться к X-серверу по протоколу X (не напрямую, а с помощью библиотеки, например, Xlib, или более современный неблокирующий XCB, управляемый событиями). Протокол X разработан для расширения и имеет много расширений (см. xdpyinfo(1)
).
X-сервер выполняет только операции низкого уровня, такие как создание и уничтожение окон, выполнение операций рисования (в настоящее время большая часть рисования выполняется на клиенте и отправляется в виде изображения на сервер), отправка событий в окна ... Вы можете видеть, как мало 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), Enlightenment (с использованием собственных библиотек инструментария), ...
Некоторые современные настольные эффекты лучше всего использовать с использованием 3D-оборудования. Таким образом, появляется новый компонент, композитный менеджер . Расширение X, расширение XComposite, отправляет содержимое окна в композитный менеджер. Составной менеджер преобразует это содержимое в текстуры и использует трехмерное оборудование через OpenGL, чтобы составлять их различными способами (альфа-смешение, 3d-проекции, ...).
Не так давно X-сервер общался напрямую с аппаратными устройствами. Значительная часть этой обработки устройства переместилась в ядро ОС: DRI (разрешение доступа к трехмерному оборудованию для X и клиенты прямого рендеринга), evdev (унифицированный интерфейс для обработки устройства ввода), KMS (настройка режима перемещения графики для ядра) , GEM / TTM (управление текстурной памятью).
Таким образом, из-за сложности обработки устройств в настоящее время в основном за пределами X стало проще экспериментировать с упрощенными оконными системами. Wayland - это оконная система, основанная на концепции составного менеджера, т.е. оконная система - это составной менеджер. Wayland использует обработку устройств, которая вышла из X и выполняет рендеринг с использованием OpenGL.
Что касается Unity, это среда рабочего стола, разработанная для использования пользовательского интерфейса, подходящего для нетбуков.