Можно ли выбрать, на каком дисплее X должен запускаться экземпляр программы?
10
Если в системе работает несколько X Windows, возможно ли заставить программу работать в определенном окне? Как бы вы определили окно и запустили там программу?
Я предполагаю, что у меня есть все необходимые разрешения для запуска такой программы.
Программы 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
Обратите внимание, что последний бит не будет работать, если вы сначала не экспортируете переменную оболочки в среду.
Игнасио Васкес-Абрамс
Я думаю, что DISPLAYбудет установлен экспорт по умолчанию, так как он импортируется оболочкой (он работает zshи dashу меня, и без использования export). Но, да, если вы не можете заставить работать двухстрочную версию, попробуйте заменить DISPLAY=:0.0на export DISPLAY=:0.0.
Зрайм
1
Обычно программы X-клиента используют DISPLAYпеременную окружения, чтобы знать, к какому X-серверу подключаться. Некоторые программы также принимают параметр командной строки ( -displayили что-то подобное), который можно использовать для переопределения DISPLAYпеременной среды.
Ответы:
Программы X знают, с какой сессией X они должны общаться, глядя на
DISPLAY
переменную окружения.Сначала вам нужно выяснить, что
DISPLAY
установлено в сеансе X, где вы хотите запустить вашу программу. Сделайте это, введя командуecho $DISPLAY
внутри X-терминала в этом сеансе X. Как правило, получить что-то вроде:0.0
выводится.Допустим, вы хотите запустить отличную программу
xclock
в своем сеансе X, где выDISPLAY
есть:0.0
, но вы хотите сделать это в консоли. Затем вы нажимаете Alt-Ctrl-F1, чтобы перейти к этой консоли, а затем набираете:Затем вы возвращаетесь к 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
.источник
DISPLAY
будет установлен экспорт по умолчанию, так как он импортируется оболочкой (он работаетzsh
иdash
у меня, и без использованияexport
). Но, да, если вы не можете заставить работать двухстрочную версию, попробуйте заменитьDISPLAY=:0.0
наexport DISPLAY=:0.0
.Обычно программы X-клиента используют
DISPLAY
переменную окружения, чтобы знать, к какому X-серверу подключаться. Некоторые программы также принимают параметр командной строки (-display
или что-то подобное), который можно использовать для переопределенияDISPLAY
переменной среды.источник