2009-03-11 4 views
5

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

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

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

От чтения this article мне кажется, что X - это слой, который находится поверх операционной системы (один X-сервер, сидящий поверх ОС), и X-клиентские приложения делают запросы на X-сервер. Я думаю, что KDE, Xfce и Gnome являются менеджерами дисплеев, являются ли они серверами X-сервера?

Я совершенно смущен, когда все сидит.

Любое объяснение было бы действительно оценено!

ответ

27

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

«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-клиентом. Xlib знает, как подключиться к произвольному X-серверу - на локальном компьютере или через TCP/IP по локальной сети или по всему миру - для вызова этих служб.

Менеджер окон, который является просто еще одной клиентской программой X, отвечает за «внешний вид» рабочего стола - как вы перемещаете и устраиваете окна и т. Д. Поскольку оконный менеджер рисует все декорации окон, он может сделать рабочий стол похожим на WindowsXP или Mac или NeXTSTEP.

Часть философии X заключалась в определении «механизма, а не политики», то есть они дают вам инструменты для этого, но не рассказывают, как использовать эти инструменты. Одним из таких инструментов является диспетчер окон, который можно заменить по желанию.

Многие современные приложения X написаны для использования на рабочем столе, таком как Gnome или KDE. Это предлагает этим программам последовательный набор кнопок и элементов управления для рисования и последовательный интерфейс для некоторых вещей, которые традиционно не включены в X, но часто рассматриваются как часть рабочего стола - например, как реагировать на перетаскивание или как представлять стандартное диалоговое окно выбора файла.

Окружающая среда рабочего стола обычно предоставляет объектную модель или программный интерфейс, который заботится о создании всех простых запросов X-клиента и позволяет программе обрабатывать более важные вещи. Удаление этих низкоуровневых вызовов дает еще одно важное преимущество - независимость платформы.

Многие настольные среды включают в себя оконный менеджер, так что внешний вид оконных элементов управления и кнопок согласован и работает с метафорой рабочего стола, предоставляемой средой. Однако его обычно можно отключить.

Разделение X Server (работает дисплей) и X Client (желая использовать дисплей) имеет несколько последствий:

  • Графическая система отделена от программ с графическим интерфейсом, и они разделены примерно так же, как веб-браузер и веб-сервер.

  • Таким образом, программа GUI может не отображаться на локальной машине - так же, как веб-браузер не должен указывать на веб-сервер на локальном компьютере.

  • Машина может запускать JUST клиент с X-сервером в другом месте.

  • На машине с дисплеем не нужно запускать клиент - он может запускать JUST X-сервер, и все клиенты могут работать на выделенной машине. Это оригинальный тонкий клиент: большие программы, работающие на большом центральном сервере, - с графическим взаимодействием пользователя, обрабатываемым специализированным оборудованием на столе перед пользователем.

  • Вам необходимо знать, что такое сетевой адрес вашего сервера X, чтобы вы могли показывать программы GUI, где отображать их графический интерфейс. (обычно это делается путем установки переменной окружения DISPLAY)

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

+0

GNOME и KDE не являются интерфейсами GUI. Это рабочая среда рабочего стола. GTK + и kdelib являются основой для них. Также обратите внимание, что Window Managers - это клиент X, а также все приложения GUI в DE. – strager

+0

То, как работают оконные менеджеры, довольно круто ... у них есть крючок, который вызывается при подключении нового клиента, и они захватывают окно клиента и вставляют его внутри дочернего окна. это это дочернее окно, которое рисует границу, закрывает/увеличивает кнопки и т. д.(Я думаю) – rmeador

+0

Я собирался написать ответ, но он более обширен, чем то, что я написал. Только одно: я бы добавил, что оконный менеджер - это еще один X-клиент. И что X обычно называют «X», «X11» или «X Window System»). Я предпочитаю «X11», потому что он короткий и довольно однозначный. –

4

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

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

+0

Ваше среднее приложение также ведет переговоры с сервером X, хотя обычно это косвенно через библиотеку инструментальных средств (например, GTK или Qt). – strager

2

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

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

Вне ядра и его модулей нет ничего особенного.

 Смежные вопросы

  • Нет связанных вопросов^_^