确定 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

和成功。

似乎重启后仍能继续工作。我对此非常满意。

相关内容