Определить имя сокета $DISPLAY в OS X 10.6?

Я хочу сделать что-то немного странное. Я работаю по SSH с сервера на Snow Leopard, чтобы запустить процесс отображения данных X11. Другими словами, пересылка SSH X11 не то, что я хочу.

Я могу сделать:

client$ echo $DISPLAY
/tmp/launch-SOMETHING/org.x:0
client$ ls -l $DISPLAY
srwx------  1 myuser  wheel  0 Dec  9 15:47 /tmp/launch-SOMETHING/org.x:0

И, когда я делаю:

server$ ssh myuser@client
client$ export DISPLAY=/tmp/launch-SOMETHING/org.x:0
client$ xterm

Я с удовольствием получаю свой xterm.

Тогда мне нужен какой-то способ узнать правильное значение $DISPLAY в моем сеансе ssh. Из того, что я прочитал, $DISPLAY устанавливается с помощью launchd, но я не нашел способа увидеть это значение.

Если это имеет значение, я знаю, что когда мой процесс подключится от $server к $client, $client будет подключен к терминалу как тот же пользователь.

1 ответ

Решение

Я не уверен, что это лучший ответ (подожду несколько дней, чтобы пометить его!), Но кажется многообещающим:

Сначала создайте скрипт на $client, скажем, save_display.sh:

#!/bin/bash
echo $DISPLAY > /path/to/saved_disp

Затем создайте для него LaunchAgent.plist и сохраните его в ~/Library/LaunchAgents. Пусть это начнется с интервалом в 60 секунд или около того.

Наконец, загрузите его в сеансе Aqua:

launchctl load -S Aqua ~ / Библиотека /LaunchAgents/my.display.saver.plist

Если вы просто загрузите его как обычно, $DISPLAY не будет установлен, и ваш файл будет пуст.

Затем,

server$ ssh myuser@client
client$ export DISPLAY=`cat /path/to/saved_disp`
client$ xterm

и успех.

Кажется, продолжает работать через перезагрузки. Я очень доволен этим.

Другие вопросы по тегам