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



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

(getenv "DISPLAY")
"localhost:10.0"

有什么想法吗?

更新:我应该更清楚;我正在寻找运行 X 会话的主机的名称(在本例中为我的工作桌面)。例如,调用(system-name)(getenv "HOSTNAME")将返回"home-server",Emacs 实际运行在那里。

更新2:我一直在尝试回复下面的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:

托比亚斯,它表明了这一点:

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...

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

(getenv "SSH_CLIENT")

这些只是常规的 Linux 变量:

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

他们应该给你你所在的机器,以及你在机器上的位置。

我不知道

X协议是否提供了一种要求X服务器为您提供运行它的机器的主机名的方法。 您可能会使用其他信息,例如 RandR 数据(例如,其 EDID 信息可能包括显示器的品牌名称)。

最新更新