Все это очень модульно и гибко; Однако это приводит к сложности.
«X-сервер» управляет устройством отображения. Он предоставляет графические сервисы клиентам, и эти сервисы довольно просты, такие как:
"Give me a window frame to draw in"
"Put this bitmap here"
"Draw a horizontal black line 100px wide"
"Render the text 'hello' at (100,100)"
"Tell me if any mouse clicks or key presses have been aimed at my window frame"
Существует библиотека под названием Xlib, предоставляемая X, которая имеет стандартный интерфейс для всех этих простых сервисов. Любая программа, которая хочет использовать дисплей X-сервера, в конечном итоге использует эту клиентскую библиотеку и называется X-клиентом. Xlib знает, как подключиться к произвольному X-серверу - на локальном компьютере или через TCP / IP через локальную сеть или по всему миру - для вызова этих служб.
Диспетчер окон, который является еще одной программой X-клиента, отвечает за «внешний вид» рабочего стола - как вы перемещаете и размещаете окна и т. Д. Поскольку диспетчер окон рисует все декорации окон, он может сделать рабочий стол похожим на WindowsXP, Mac или NeXTSTEP.
Часть философии X состояла в том, чтобы определить «механизм, а не политику» - то есть, они дают вам инструменты для этого, но не говорят вам, как использовать эти инструменты. Одним из таких инструментов является оконный менеджер, который можно заменить по желанию.
Многие современные приложения X написаны для использования в среде рабочего стола, такой как Gnome или KDE. Это предлагает этим программам согласованный набор кнопок и элементов управления для рисования, а также согласованный интерфейс для некоторых вещей, которые традиционно не включены в X, но часто рассматриваются как часть рабочего стола, например, как реагировать на перетаскивание или как представлять стандартное диалоговое окно выбора файлов.
Среда рабочего стола обычно предоставляет объектную модель или программный интерфейс, который выполняет все простые запросы X-клиента и позволяет программе обрабатывать более важные вещи. Удаление этих вызовов низкого уровня дает еще одно важное преимущество - независимость от платформы.
Во многих средах рабочего стола есть диспетчер окон, поэтому внешний вид элементов управления и кнопок окна согласован и работает с метафорой рабочего стола, предоставляемой средой. Тем не менее, его обычно можно отключить.
Разделение X-сервера (работающего на дисплее) и X-клиента (желающего использовать дисплей) имеет несколько последствий:
Графическая система отделена от программ с графическим интерфейсом и отделена примерно так же, как веб-браузер и веб-сервер.
Таким образом, программа GUI может не отображаться на локальном компьютере - так же, как веб-браузер не должен указывать на веб-сервер на локальном компьютере.
Машина может работать ТОЛЬКО с клиентом, с X-сервером в другом месте.
Машина с дисплеем не должна запускать клиент - она может запускать только Х-сервер, и все клиенты могут работать на выделенном компьютере. Это оригинальный тонкий клиент: большие программы, работающие на большом центральном сервере - с графическим взаимодействием с пользователем, управляемым специальным оборудованием на столе перед пользователем.
Вам необходимо знать сетевой адрес вашего X-сервера, чтобы вы могли указать программам с графическим интерфейсом, где отображать их графический интерфейс. (обычно это делается путем установки переменной окружения DISPLAY)
Вы можете отображать множество программ с разных компьютеров одновременно на одном рабочем столе. Все это обрабатывается без проблем, включая вырезание и вставку.