Пожалуйста, помогите уточнить для меня роль и архитектуру Xorg (X-сервер) и взаимодействие с другим программным обеспечением

Извините, это будет многопрофильный вопрос, поэтому, пожалуйста, несите меня:

Я уже несколько лет являюсь пользователем Linux, но мне все еще сложно понять, как X сравнивается с программным обеспечением, используемым для отображения в системах Windows и Mac.

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

Я имею в виду, возьмем среду Cocoa для Mac: у вас есть GnuStep, которая является реализацией с открытым исходным кодом этой структуры, но (из того, что я могу догадаться), она работает на X, правильно? Но я полагаю, что Mac не использует X.

Есть ли альтернативные варианты Xorg для Linux? Могу ли я запустить GnuStep, например, с чем-то еще?

Являются ли оконные менеджеры и настольные среды написанными специально для работы с X или могут ли они работать с другим программным обеспечением для отображения?

Первая проверка. Понимание рабочего стола Linux.

Я уже несколько лет являюсь пользователем Linux, но мне все еще сложно понять, как X сравнивается с программным обеспечением, используемым для отображения в системах Windows и Mac.

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

Я имею в виду, возьмем среду Cocoa для Mac: у вас есть GnuStep, которая является реализацией с открытым исходным кодом этой структуры, но (из того, что я могу догадаться), она работает на X, правильно? Но я полагаю, что Mac не использует X.

Инструментарий (GTK, Qt …) обычно не взаимодействует между собой – это просто библиотеки и как таковые (в основном) разделенные на каждый процесс. Они, конечно же, взаимодействуют с сервером X – отправляют команды рисования и вводятся данные ввода. Однако некоторые из них не ограничены одним бэкэнд (X11) – например, GTK, Qt и GNUstep также имеют MS Windows.

Инструментарий действует как единый уровень API над собственным интерфейсом рисования – в случае X11 они переводят запрос на рисование кнопки в ряд простых объектов (прямоугольники, шейдеры и т. Д., Например, в последних версиях GTK это достигается за счет другого слой абстракции, предоставляемый Каиром ). В Windows или Mac у них есть возможность использовать собственный API, чтобы, например, «Кнопка GTK» можно было перевести на «Windows Button», и, например, на устройстве фреймбуфера, он будет переведен непосредственно в отдельные пиксели (возможно, снова через растровый двигатель, такой как Каир). Например, Qt имеет около 15 различных бэкендов .

Если вы говорите о средах рабочего стола, общающихся с приложениями, используя различные инструментальные средства, это совсем другая история. В наши дни D-Bus обычно используется в X сеансе, что позволяет не только приложениям GUI отправлять и получать сообщения в / из других приложений.

Есть ли альтернативные варианты Xorg для Linux? Могу ли я запустить GnuStep, например, с чем-то еще?

Один из вариантов (кроме тех, о которых говорил Джон Сиу в его ответе) мог бы быть Wayland . Тем не менее, не так много приложений, которые могли бы использовать его изначально .

Являются ли оконные менеджеры и настольные среды написанными специально для работы с X или могут ли они работать с другим программным обеспечением для отображения?

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

Если вы ищете альтернативу X11 в Linux, на этом посту есть несколько оснований. Однако, проверяя свои ссылки на вики, некоторые из них, похоже, больше не разрабатываются. Ниже приведены 2, которые кажутся активными

  1. DirectFB

  2. KDrive / TinyX

Лично я использую / попробую directfb раньше. Я использовал Gentoo в течение этого времени и могу указать приложение окна, которое компилируется с помощью библиотеки DirectFB вместо X11 (или обоих: я забыл).