確定 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 秒或類似的間隔開始。

最後,加載它在 Aqua 會議中:

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

和成功。

似乎在重新啟動後仍能繼續工作。我對此很滿意。

相關內容