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

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

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

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

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 секунд или около того.

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

launchctl load -S Aqua ~/Library/LaunchAgents/my.display.saver.plist

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

Затем,

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

и успех.

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

Связанный контент