Если в системе работает несколько X Windows, возможно ли заставить программу работать в определенном окне? Как бы вы определили окно и запустили там программу?
Я предполагаю, что у меня есть все необходимые разрешения для запуска такой программы.
Если в системе работает несколько 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
.
Обычно программы X-клиента используют DISPLAY
переменную окружения, чтобы знать, к какому X-серверу подключаться. Некоторые программы также принимают параметр командной строки ( -display
или что-то подобное), который можно использовать для переопределения DISPLAY
переменной среды.