Клиентская программ (например, ваше графическое приложение) знает, какой дисплей использовать из переменной окружения DISPLAY. Ее можно переопределить, либо использовать аргумент -display hostname:0 во время запуска вашей программы. Рассмотрим это на примере.
Наш компьютер известен в сети как light, в домене uni.verse. Если мы запустим обычный X-сервер, переменная DISPLAY будет равна light.uni.verse:0. Но мы хотим запустить программу для рисования xfig на удаленном компьютере dark.matt.er, а в качестве дисплея использовать машину light.
Полагаю, что вы уже вошли на удаленный компьютер dark.matt.er.
Если вы используете csh в качестве оболочки на нем:
dark% setenv DISPLAY light.uni.verse:0 dark% xfig & |
или же:
dark% xfig -display light.uni.verse:0 & |
Если вы используете sh в качестве оболочки:
dark$ DISPLAY=light.uni.verse:0 dark$ export DISPLAY dark$ xfig & |
или же:
dark$ DISPLAY=light.uni.verse:0 xfig & |
или, конечно же:
dark$ xfig -display light.uni.verse:0 & |
Кажется, некоторые версии telnet автоматически передают переменную DISPLAY на удаленный компьютер. Если у вас как раз такая, считайте, что вам повезло, и не надо указывать ее вручную. В противном случае, большинство версий telnet передают переменную окружения TERM; можно установить переменную DISPLAY, основываясь на переменной TERM.
Основная идея состоит в том, чтобы при помощи скрипта сделать следующее: перед запуском telnet, добавляем значение переменной DISPLAY к переменной TERM. На другом конце в скрипте .*shrc устанавливаем значение DISPLAY из переменной TERM.