Перемещение от окон до Linux: Понимание - X-оконная система, X-сервер, Xorg, Xfree86

Я - разработчик окон (Win32api), перемещающийся от Windows до Linux. При установке Linux существует партия вещей знать о X11, X-оконной системе, X-сервере, Xorg, Xfree86 и что нет.

Каким образом мы не знаем о таких вещах в окнах? Статья Wiki о них пугает меня. Кто-либо может объяснить эти вещи? Как они работают? Почему это так сложно в Linux и не в окнах?

Любые хорошие ссылки также ценятся.

PS: Я люблю знать внутренности, войдите в глубину.

8
задан 25.05.2010, 13:42

2 ответа

Windows дает Вам единственную реализацию единственного рабочего стола сверх единственной реализации единственного API / платформа, все сделанные Microsoft.

В системах Unix Вы получаете API / платформа (X11 / X-оконная система), для которого существуют несколько реализаций (Xorg, Xfree86), сверху которого Вы получаете различный "высокоуровневый" API / платформы (GTK +, QT...), потому что необработанный X11 так примитивен, сверху которого Вы получаете различные рабочие столы (Gnome, KDE...), все сделанные различными людьми.

Кроме того, система X11 была разработана с нуля с удаленными графический интерфейсами пользователя в памяти - т.е. локальная машина, отображающая GUI удаленно запущенного приложения - который представляет понятие "X-сервера" и "X-клиента".

Затем существует номенклатура, которая "чувствует" неправильный путь вокруг к вновь прибывшим: Ваша локальная машина выполняет "X-сервер", обеспечивающий "дисплей GUI" сервис, в то время как удаленной машиной является "X-клиент", использующий сервисы на Вашу машину для отображения GUI.

Ну, это - быстрый обзор; после того как Вы разобрались в этом, поняв любые статьи / сообщения форума на предмете должны стать намного легче.

Править: Ответить на два первых комментария OP.

Да, "X11" является просто протоколом и Xorg / XFree86 являются двумя реализациями. На его базовом уровне X11 только о проведении линий и точек, который не ужасно полезен, если Вы хотите сделать GUI.

Вдобавок к протоколу X11 люди реализовали много вещей, и довольно трудно сделать 1:1 сравнение с Windows, потому что Microsoft никогда не потрудилась действительно разделять вещи. Также я не разработчик типа GUI, т.е. мой фактический опыт с любой системой минимален.

Внизу, "менеджер окон" обеспечивает окно (обрабатывающий границы, близко / минимизируют / кнопки развертывания окна, изменяя размер и т.д.), и предлагает "недвижимость" в окне к набору инструментов виджета. Существует много менеджеров окон, некоторые имитирующие другие системы (Windows, MacOS, AmigaOS, безотносительно), и они главным образом взаимозаменяемые очевидный для остающейся системы.

"Набор инструментов виджета" предлагает Вам кнопки, ползунки, текстовые поля и т.д., на которых можно создать Ваш GUI. Это - то, что Вы (как разработчик приложений) на самом деле получаете для "видения", мудрый API, и что решает, что большая часть "смотрит и чувствует" приложения.

"Рабочий стол" создает много приложений сверху определенного набора инструментов виджета / комбинация менеджера окон для обеспечения последовательного взгляда и чувства. Вы не должны беспокоиться ими, если Вы на самом деле не хотите разработать сам рабочий стол.

Настольный "Gnome" использует набор инструментов виджета "GTK +" сверху менеджера окон "Метагород".

Настольная "KDE" использует набор инструментов виджета "QT" сверху менеджера окон "KWin".

Обратите внимание, что особенно те два, GTK + и QT, развились далеко вне простых "наборов инструментов виджета" в "платформы разработки приложений". Если Вы хотите разработать приложения для GUI для Linux, эффективно необходимо выбрать, какой из тех двух Вы хотите использовать. Существует больше вариантов, если Вы хотите более "легкое" приложение (не нуждающийся в больших зависимостях библиотеки), но сегодня большинство систем имеет GTK +, и QT уже освобождает установленный так или иначе.

Совершенно возможно использовать спокойные приложения на рабочем столе Gnome или GTK + приложения на рабочем столе KDE (это не всегда было похоже на это), таким образом, необходимо волноваться мало о совместимости. Учитывая выбор между двумя приложениями сопоставимой функциональности, люди будут обычно предпочитать приложение с помощью "собственных" виджетов их предпочтительного рабочего стола, но я не волновался бы об этом.

Другой, более важные пункты маркированного списка в выборе "набора инструментов виджета": Условия лицензирования, поддерживайте для своего языка предпочтительную, межплатформенную совместимость.


Сообщение Scriptum: Возвращаясь несколько лет спустя, я взял некоторый мой собственный опыт программирования GUI, и понимаю, что одна вещь отсутствует в вышеупомянутом объяснении, если Вы ищете "который способ пойти" совет: wxWidgets. Это - платформа, которая создает сверху того, что Вы используете исходно, и позволяет прозрачно портативную разработку GUI, не жертвуя производительностью или присоединяя любые строки licensind. C++ API. Это - путь, который я выбрал для своих потребностей GUI, и я чувствовал, что это должно быть упомянуто для полноты.

13
ответ дан 07.12.2019, 13:53

Я не понимаю, почему Вы находите настолько трудным понять объяснение, данное http://en.wikipedia.org/wiki/X_Window_System, но во всяком случае:

X-оконная система обычно состоит из 2 частей:

  • Сервер (названный XServer)
  • Клиенты (названный.. XClients :))

Сервер соединяется с аппаратными средствами (графическая карта, устройства ввода данных) и позволяет клиентам использовать эти ресурсы. Клиенты соединяются с xserver и используют обеспеченные ресурсы.

Там существует серверы для Unix (Xorg, у людей Mac есть свое собственное и т.д.), и для Windows (Колибри, порт Cygwin Xorg и т.д.).

Можно соединить клиенты на одной ОС к серверам, работающим на другой ОС.

Коммуникация между сервером и клиентами сделана или через Xlib-API или через (более современная) xcb-API.

Для создавания простого приложения, Вы обычно просто делаете это:

  • соединитесь с xserver
  • запросите xserver создать окно (который даст Вам "дескриптор"),
  • скажите xserver поднимать окно
  • события процесса (мышь, клавиатура, воздействие, движение и т.д.)
  • потяните материал к окну (текст, графика и т.д.)
  • выйдите из приложения, говоря xserver высвободить все средства

и..готово.

3
ответ дан 07.12.2019, 13:53

Теги

Похожие вопросы