Как работает X11?

4440
Tony Stark

Я пытаюсь заставить X11 работать на моем Mac при подключении к удаленной машине, и у меня много проблем. Я весь день гуглил безрезультатно. Вот мои основные вопросы:

  1. В чем разница между ssh -X, ssh -Y и тем, когда я это делаю, на каком компьютере (локальном или удаленном) есть сервер x, а на каком клиенте?

  2. Команда startx запускает сервер x? Так что, если я пойду к своему терминалу и нажму startx, все, что я сделал, это запустил xserver?

  3. Зачем мне когда-нибудь хотеть ssh на удаленный компьютер и использовать startx? Нужно ли мне использовать -X или -Y, чтобы использовать startx? Кажется, все, что я читал о том, как установить рабочий стол для gnome / kde на удаленной машине, требует от вас использования startx. Если в этом сценарии я использую startx, то кто такой xserver и кто такой xclient?

  4. Будут ли оконные менеджеры gnome / kde при использовании startx на удаленной машине мешать реализации Mac собственного оконного менеджера x11? есть ли вообще это исправить?

  5. Как что-то вроде VNC влияет на все это? Есть ли разница между удаленным сеансом X и простым подключением к удаленной машине и использованием startx?

  6. Как правильно / команда заставить gnome / kde запустить рабочий стол с графическим интерфейсом на моей удаленной машине сервера? (поэтому рабочий стол, отображаемый на моем компьютере, является рабочим столом сервера)? Под рабочим столом я имею в виду обои, папки, корзину и т. Д.

  7. Если NX / VNC - единственный способ правильно создать настоящий удаленный рабочий стол в смысле # 6, почему команды $ gnome-session или $ startkde вызывают нужный мне рабочий стол с помощью ssh -X, даже если они не работают правильно?

Было бы полезно, если бы каждый из них рассматривался индивидуально, но если бы вы могли привести меня к какой-то четкой документации, которая также была бы полезна!

3
Я бы посоветовал вам разделить это на несколько вопросов или сделать его вики-сообществом. Система не допускает множественных правильных ответов, и наличие каждого индивидуального ответа создаст проблему. BinaryMisfit 15 лет назад 1
извините, когда я имел в виду индивидуально, я имел в виду 1 пост, но отвечал на него как 1. бла, 2. бла, 3. бла, чтобы на каждый мой вопрос отвечали в одном и том же посте. Я НЕ НАМЕРЕН, чтобы каждый вопрос получил отдельный ответ. Tony Stark 15 лет назад 0
Достаточно справедливо, однако принято придерживаться одного вопроса за раз, а не множителей. Я очень сомневаюсь, что вы найдете только один правильный ответ на ваш вопрос. BinaryMisfit 15 лет назад 0
я сделал это вики :) Tony Stark 15 лет назад 0
@Diago, зачем добавлять тег osx для этого вопроса? Не Linux, а? Gnoupi 15 лет назад 0
вероятно, должно быть оба; Я работаю с OSX, работаю с Centos Tony Stark 15 лет назад 0
Хорошо, только теперь я прочитал «Mac» в первом предложении. Виноват Gnoupi 15 лет назад 0

3 ответа на вопрос

2
Martin Beckett

Зачем мне когда-нибудь хотеть ssh на удаленный компьютер и использовать startx? Нужно ли мне использовать -X или -Y, чтобы использовать startx? Кажется, все, что я читал о том, как установить рабочий стол для gnome / kde на удаленной машине, требует от вас использования startx. Если в этом сценарии я использую startx, то кто такой xserver и кто такой xclient?

X имеет немного «необычное» определение клиент / сервер.
Машина с графическим экраном - это сервер, приложения - это клиенты. Таким образом, вы запускаете XServer локально (с помощью startx) и запускаете клиенты (приложение), возможно, удаленно.

Если вы работаете только с локальными приложениями, все это не имеет значения. В старые времена, когда вашему приложению требовалась вычислительная мощность «сервера» (то есть, БОЛЬШОЙ машины в подвале), вы могли запускать задание на машине без дисплея и показывать ее на терминале в вашем офисе.

Оконный менеджер - интересный случай. Это просто приложение X, как и все остальное. Вполне возможно запустить Xserver локально на Mac, а затем запустить менеджер окон Motif на Sun, управляющий вашими локальными окнами, работая в приложении X, которое работает на компьютере с Linux где-то еще.

пс. ответит в sep ответах, чтобы люди могли комментировать / редактировать их.

@mgb: упс, позвольте мне уточнить (при условии, что это ваш ответ на вопрос 3). Для меня имеет смысл использовать startx на моей локальной машине. но когда я читал о том, как включить рабочий стол gnome / kde на удаленном сервере, я использовал команду startx. это бессмысленно. почему я хочу, чтобы xserver был на удаленном сервере? это то, что он делает? Tony Stark 15 лет назад 0
2
Andrew J. Brehm
  1. Если я правильно помню, ssh -X сопоставляет X-сервер с целевой машиной, а затем маршрутизирует соединения через канал, созданный SSH, на терминал (т. Е. На вашу машину). «X-сервер» - это программа, которая рисует окно для «X-клиентов», которые являются программами, использующими эти окна.

  2. Да, startx запускает X-сервер. Но в Mac OS X вы запускаете X-сервер, запуская X11.app в Utilities.

  3. Вам бы этого не хотелось, если вы не пытаетесь перезапустить X-сервер на компьютере, на котором вы используете SSH. Но это не имеет ничего общего с вашим подключением к этому компьютеру или программами, которые вы хотите запустить через это подключение.

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

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

  6. Пусть Paul будет вашим Mac, а Peter - машиной (Linux), к которой вы подключаетесь:

Пол: startx (или, скорее, запустите X11.app и используйте окно терминала, которое он создает для следующего)

Пол: xhost + Питер

Пол: ssh -X Питер

Питер: xlogo & (теперь это должно отображаться на экране Пола, если нет, продолжить)

Питер: экспорт DISPLAY = Пол: 0

Питер: xlogo & (теперь это должно отображаться на экране Пола)

спасибо, очень полезно Теперь, в ответ на ваши ответы: 1. что делает -Y? просто сделайте так, чтобы вы сказали, что доверяете удаленному компьютеру и позволяете ему делать все, что я прочитал? 2. Написание startx в терминале эквивалентно попаданию x11 в приложения для Mac, верно? 4. пока, когда я захожу в удаленный компьютер с сервером x11 на моем компьютере, когда я набираю $ startkde или $ gnome-session, соответствующие рабочие столы показываются, но окна запутываются, потому что, если я открываю папку, она открывается в фон на моем Mac X11 и поэтому скрыт за рабочим столом, поэтому я не могу добраться до него. я слышал, что это был конфликт оконных Mngrs Tony Stark 15 лет назад 0
1. Не знаю, что ты делаешь. 2. Да. Они одинаковые. 4. Не запускайте KDE или Gnome при подключении с Mac. Программы Gnome и KDE не требуют запуска всего рабочего стола. Andrew J. Brehm 15 лет назад 0
1
Martin Beckett

Как что-то вроде VNC влияет на все это? Есть ли разница между удаленным сеансом X и простым подключением к удаленной машине и использованием startx?

VNC делает похожую работу немного по-другому. VNC просто берет весь экран или одно окно и отправляет видео по сети в приложение VNC на вашем локальном компьютере. X запускает приложение на удаленном компьютере, но отправляет все команды отображения по сети на локальный дисплей X. На самом деле X делает это даже при локальном запуске, но сетевой вызов на тот же компьютер может быть ускорен и очень быстр.

пс. Вы не запускаете ssh на удаленной машине и не запускаете startx - вы запускаете X-сервер локально, затем запускаете ssh на удаленной машине и запускаете приложение X (office / gimp / xeyes / etc), и X обрабатывает его появление локально.