OS X 10.6 で $DISPLAY ソケット名を決定しますか?

OS X 10.6 で $DISPLAY ソケット名を決定しますか?

ちょっと変わったことをしたいと思っています。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 を喜んで入手しました。

そこで必要なのは、SSH セッションで $DISPLAY の正しい値を見つける方法です。私が読んだところによると、$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

そして成功。

再起動しても動作し続けるようです。とても満足しています。

関連情報