Как я могу указать дисплей?

Когда я запускаю некоторые программы через SSH, например firefox &, я получаю сообщение об ошибке

Error: no display specified 

Я хотел бы открыть много дисплеев, показывая stdout каждой программы.

Начальный вопрос: Как я могу указать отображение для получения многооконной программы?

Pablo Santa Cruz дает мне следующий код в качестве решения. Я этого не понимаю.

$ export DISPLAY=yourmachine.yourdomain.com:0.0

$ firefox &

Что такое yourmachine и yourdomain.com в команде?

Ответ 1

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

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

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

Чтобы клиент мог взаимодействовать с пользователем, он должен знать, как найти сервер. Существует несколько способов сделать это. Многие клиенты позволяют указать параметр -display или --display:

xeyes -display paxbox1.paxco.com:0.0

Многие будут использовать переменную среды DISPLAY, если экран не указан конкретно. Вы можете установить эту переменную, как и любую другую:

DISPLAY=paxbox1.paxco.com:0.0; export DISPLAY # in .profile
export DISPLAY=paxbox1.paxco.com:0.0 # in your shell
DISPLAY=paxbox1.paxco.com:0.0 firefox & # for that command (shell permitting)

Первая часть переменной DISPLAY - это только адрес машины сервера отображения. Он следует тому же правилу, что и любой другой IP-адрес; это может быть разрешимое DNS-имя (включая localhost) или определенный IP-адрес (например, 192.168.10.55).

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

Пример:

+----------------------------------------+
|paxbox1.paxco.com|                      |
+-----------------+                      |
|                                        |
|  +----------+----+  +----------+----+  |
|  |Display :0|    |  |Display :1|    |  |
|  +----------+    |  +----------+    |  |
|  |               |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.0| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  |               |  |
|  | |Screen :0.1| |  |               |  |
|  | +-----------+ |  |               |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.2| |  | |Screen :1.0| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |Screen :0.3| |  | |Screen :1.1| |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | | Keyboard  | |  | |  Keyboard | |  |
|  | +-----------+ |  | +-----------+ |  |
|  | +-----------+ |  | +-----------+ |  |
|  | |   Mouse   | |  | |   Mouse   | |  |
|  | +-----------+ |  | +-----------+ |  |
|  +---------------+  +---------------+  |
|                                        |
+----------------------------------------+

Здесь у вас есть одна машина (paxbox1.paxco.com) с двумя серверами отображения. Первый имеет четыре экрана, а второй - два. Возможны следующие варианты:

DISPLAY=paxbox1.paxco.com:0.0
DISPLAY=paxbox1.paxco.com:0.1
DISPLAY=paxbox1.paxco.com:0.2
DISPLAY=paxbox1.paxco.com:0.3
DISPLAY=paxbox1.paxco.com:1.0
DISPLAY=paxbox1.paxco.com:1.1

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

Ответ 2

$ export DISPLAY=yourmachine.yourdomain.com:0.0
$ firefox &

Ответ 3

Когда вы подключаетесь к другой машине через SSH, вы можете включить X-Forwarding в SSH, чтобы X-окна пересылались зашифрованными через туннель SSH обратно на ваш компьютер. Вы можете включить пересылку X, добавив -X в командную строку ssh или параметр ForwardX11 yes в конфигурационный файл SSH.

Чтобы проверить, была ли успешно настроена X-Forwarding (сервер может ее не разрешать), просто попробуйте, если echo $DISPLAY выводит что-то вроде localhost:10.0.

Ответ 4

Попробуйте

export DISPLAY=localhost:0.0

Ответ 5

Попробуйте установить пакет xorg-x11-xauth.

Ответ 6

У меня возникла аналогичная проблема, поэтому, возможно, этот ответ поможет кому-то.

Причиной ошибки Error: no display specified является запуск Firefox, но на удаленном хосте отсутствует X-сервер (GUI). Вы можете использовать переадресацию X11 для запуска Firefox на удаленном хосте, но отображать его на локальном хосте. В Mac OS X вам понадобится загрузить XQuartz, чтобы использовать пересылку X11. Без него у вас не будет набора переменных $DISPLAY, поэтому, если вы попытаетесь и echo $DISPLAY, он будет пустым.

Ответ 7

Сегодня я столкнулся с подобной проблемой. Итак, здесь простое решение: Выполняя SSH на машине, просто добавьте Ctrl - Y.

ssh [email protected]_address -Y

После входа в систему введите firefox &. И вам хорошо идти.

Ответ 8

Даже я столкнулся с тем же в CentOS 6.8.

yum reinstall xorg*

Завершите текущий сеанс и откройте другой сеанс в инструменте, таком как mobiXterm. Убедитесь, что в сеансе включена функция переадресации X11.

Ответ 9

Пожалуйста, не пытайтесь установить $DISPLAY вручную при подключении через SSH.
Если вы подключаетесь через SSH -X, а $DISPLAY остается пустым, это обычно означает, что не может быть установлен зашифрованный канал.

Скорее всего, вам не хватает пакета xauth или xorg-x11-xauth. Попробуйте установить его на удаленную машину, используя:

sudo apt-get install xauth

или

sudo apt-get install xorg-x11-xauth

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

Теперь попробуйте echo $DISPLAY снова, чтобы узнать, был ли автоматически установлен режим $DISPLAY демоном SSH. Он должен показать вам строку с IP-адресом и портом.

Ответ 10

I через vnc, чтобы понять X11 больше. Чтобы указать отображение, чтобы получить много-отображаемую программу, export DISPLAY = IP: DisplayNum.ScreenNum

Например,

vncserver :2
vncserver -list
echo '$DISPLAY'=$DISPLAY 
export DISPLAY=:2  # export DISPLAY=IP:DisplayNum or export DISPLAY=:DisplayNum for localhost; So that can vnc connect and see the vnc desktop :2 if $DISPLAY is not :2.
echo '$DISPLAY'=$DISPLAY