X11 / X - Linux для настольных компьютеров, я не понимаю, как это сочетается - PullRequest
5 голосов
/ 11 марта 2009

Я недавно начал использовать Linux (где я работаю в магазине Microsoft, поэтому я пишу код только на C #, работаю с продуктами MS и т. Д.).

Я пытаюсь понять на высоком уровне, как некоторые базовые вещи в Linux связаны друг с другом. Я читал www.linfo.org

Во всяком случае, я так и не понял, что такое Х.

Из прочтения этой статьи мне кажется, что X - это слой, который находится поверх операционной системы (один X-сервер расположен поверх операционной системы ??), а X-клиентские приложения делают запросы к Х сервер Я думаю, что KDE, Xfce и Gnome - менеджеры дисплеев, тогда они клиенты X-сервера?

Я совсем запутался, где все сидит.

Любое объяснение будет очень признателен!

Ответы [ 4 ]

28 голосов
/ 11 марта 2009

Все это очень модульно и гибко; Однако это приводит к сложности.

«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)

  • Вы можете отображать множество программ с разных компьютеров одновременно на одном рабочем столе. Все это обрабатывается без проблем, включая вырезание и вставку.

4 голосов
/ 12 марта 2009

X11 - сетевой протокол, в настоящее время выпускается 7 (следовательно, X11R7). Он инкапсулирует графику и входную информацию и подключает X-клиент (менеджер приложений или окон), работающий на локальном или удаленном компьютере, к X-серверу, который в данный момент управляет локальным экраном и устройствами ввода.

Gnome, KDE, XFCE и LXDE - среды рабочего стола; они содержат фрагменты, которые взаимодействуют с / с X-сервером (metacity, kwin и т. д.), но также состоят из спецификаций, которым должны следовать приложения, и библиотек, которые доступны для того, чтобы приложение «принадлежало» DE.

2 голосов
/ 12 марта 2009

Кроме того, стоит помнить, что X-сервер - это просто еще одна программа, которая запускается под Linux. В этом нет ничего особенного, он просто знает, как захватить видеокарту и захватить монитор с помощью видеодрайверов. Вы можете (теоретически) запускать Linux очень счастливо, даже не запуская X-сервер - хотя, конечно, вы будете ограничены программами командной строки.

Вот так самоорганизуется linux - ядро ​​у основания, затем набор программ, которые предоставляют функциональность программам более высокого уровня, которые сами предоставляют функциональность программам более высокого уровня, и все это встраивается в полный стек программного обеспечения, ориентированного на любую работу. машины (скажем, общий рабочий стол, разработка программного обеспечения, веб-сервер и т. д.).

Помимо ядра и его модулей, ничто не является "особенным".

1 голос
/ 11 марта 2009

Википедия имеет некоторую информацию об этом.

...