如何确定我的Emacs会话的显示位置?

时间:2014-01-06 17:15:56

标签: emacs ssh elisp x11

我经常将我的X会话从我的家庭服务器(Slackware)转发到我的工作桌面(Cygwin / Windows 7)。即ssh -X home-server; emacs &。我想(以编程方式)知道我的Emacs会话的显示位置,但是DISPLAY环境不是很有帮助:

(getenv "DISPLAY")
"localhost:10.0"

有什么想法吗?

更新:我应该更清楚;我正在寻找运行X会话的主机的名称(在这种情况下,我的工作桌面)。例如,调用(system-name)(getenv "HOSTNAME")将返回“家庭服务器”,其中Emacs实际上正在运行。

更新2:我一直在尝试回复下面的Tobias,但是试图让格式在评论中起作用一直让我疯狂:

谢谢Tobias,但似乎xauth只处理授权数据:

Using authority file /home/mgh/.Xauthority
home-server/unix:0  MIT-MAGIC-COOKIE-1  c545124...
localhost.localdomain/unix:0  MIT-MAGIC-COOKIE-1  c5451...
home-server/unix:14  MIT-MAGIC-COOKIE-1  7b7be...
home-server/unix:13  MIT-MAGIC-COOKIE-1  96d13...
home-server/unix:12  MIT-MAGIC-COOKIE-1  8b186...
home-server/unix:11  MIT-MAGIC-COOKIE-1  28a0a...
home-server/unix:10  MIT-MAGIC-COOKIE-1  bbf6c...

更新3:

Tobias,它表明了这一点:

xauth -v nlist
Using authority file /home/mgh/.Xauthority
0100 0007 4261672d456e64 0001 30 0012 4d49542d4... 0010 c5451248...
0100 0015 6c6f63616c686f73742e6... 0001 30 0012 4d4954... 0010 c545124...
...
0100 0007 4261672d456e64 0002 3130 0012 4d49542d4d... 0010 bbf6c4d...

3 个答案:

答案 0 :(得分:1)

我在Unix stackexchange上问了这个问题。简短的回答是

(getenv "SSH_CLIENT")

答案 1 :(得分:0)

这些只是常规的linux变量:

(getenv "HOSTNAME")
(getenv "TTY")

他们应该为您提供您所在的机器以及您在该机器上的位置。

答案 2 :(得分:0)

我不知道X协议是否提供了一种方法来要求X服务器为您提供运行它的机器的主机名。您可能会得到其他信息,例如RandR数据(例如,其EDID信息可能包含监视器的品牌名称)。