Можно ли выбрать, на каком дисплее X должен запускаться экземпляр программы?

10

Если в системе работает несколько X Windows, возможно ли заставить программу работать в определенном окне? Как бы вы определили окно и запустили там программу?

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

vfclists
источник
Возможный дубликат Что на самом деле означает DISPLAY =: 0.0?
СЛМ

Ответы:

15

Программы X знают, с какой сессией X они должны общаться, глядя на DISPLAYпеременную окружения.

Сначала вам нужно выяснить, что DISPLAYустановлено в сеансе X, где вы хотите запустить вашу программу. Сделайте это, введя команду echo $DISPLAYвнутри X-терминала в этом сеансе X. Как правило, получить что-то вроде :0.0выводится.

Допустим, вы хотите запустить отличную программу xclockв своем сеансе X, где вы DISPLAYесть :0.0, но вы хотите сделать это в консоли. Затем вы нажимаете Alt-Ctrl-F1, чтобы перейти к этой консоли, а затем набираете:

DISPLAY=:0.0 xclock   # variables set w/ a command are local to that command

Затем вы возвращаетесь к X, нажимая Alt-Ctrl-F7 или Alt-Ctrl-F8 (или, возможно, какую-то другую клавишу F, в зависимости от вашего вкуса в Linux) и смотрите новый симпатичный настенный час, который у вас есть.

Фактически, вы могли выполнить вышеупомянутую команду в любой оболочке на том же компьютере (через SSH, в любой сессии X, на любой консоли и т. Д.) - тот факт, что вы указали DISPLAY=:0.0перед командой, означает, что xclockокно всегда будет всплывать в тот же сеанс X

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

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

                      # variables set w/o a command are local to the shell,
export DISPLAY=:0.0   # unless exported
xclock
zrajm
источник
1
Обратите внимание, что последний бит не будет работать, если вы сначала не экспортируете переменную оболочки в среду.
Игнасио Васкес-Абрамс
Я думаю, что DISPLAYбудет установлен экспорт по умолчанию, так как он импортируется оболочкой (он работает zshи dashу меня, и без использования export). Но, да, если вы не можете заставить работать двухстрочную версию, попробуйте заменить DISPLAY=:0.0на export DISPLAY=:0.0.
Зрайм
1

Обычно программы X-клиента используют DISPLAYпеременную окружения, чтобы знать, к какому X-серверу подключаться. Некоторые программы также принимают параметр командной строки ( -displayили что-то подобное), который можно использовать для переопределения DISPLAYпеременной среды.

Ласло Валко
источник