Вопрос

Я использую screen для сохранения моего рабочего сеанса и подключения к одному и тому же сеансу с нескольких компьютеров.Как я могу настроить SSH и экран таким образом, чтобы переменная XDISPLAY внутри мой постоянный сеанс просмотра экрана всегда настроен на компьютер, с которого я в данный момент подключаюсь?

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

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

Это было полезно?

Решение

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

Предполагая, что ваша локальная оболочка соответствующим образом устанавливает переменную DISPLAY, вы могли бы использовать screen -X отправить commads в удаленном экране подключение.

# set future remote shells started by screen to have the correct XDISPLAY
% screen -X "setenv XDISPLAY $DISPLAY" #...

# set up the keystroke F1 to update the XDISPLAY in current shells
% screen -X "bindkey -k k1 stuff export XDISPLAY=$DISPLAY\015" #...

Если вы знаете, что все ваши окна были оставлены в оболочке (не в запущенном редакторе или чем-то подобном), вы могли бы использовать :at чтобы изменить XDISPLAY вместо привязки ключа:

# update the XDISPLAY in all current windows
% screen -X "at % stuff export XDISPLAY=$DISPLAY\015" #...

В качестве альтернативы, если вы знаете какой-либо способ получения значения переменной среды родительского процесса, то вы могли бы использовать это вместе с перехватом запроса вашей командной строки, чтобы получить значение экрана XDISPLAY (заданное setenv) и обновить его для командной строки.

Другие советы

Не существует "тривиального" способа изменить переменные среды во внешних процессах.

Простым решением может быть сохранение вашего XDISPLAY в файл при входе в систему и использовании PROMPT_COMMAND чтобы прочитать этот файл перед печатью следующего запроса.


Для перемещения X-приложений посмотрите на что-то вроде X11vnc или Xvnc.

Меня также интересует ответ на этот вопрос.Разве не должно быть возможно перечислить SSH-процессы для вашего пользователя, отсортированные по времени, и, возможно, указать среду для этого процесса?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top