我经常将我的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...
答案 0 :(得分:1)
我在Unix stackexchange上问了这个问题。简短的回答是
(getenv "SSH_CLIENT")
答案 1 :(得分:0)
这些只是常规的linux变量:
(getenv "HOSTNAME")
(getenv "TTY")
他们应该为您提供您所在的机器以及您在该机器上的位置。
答案 2 :(得分:0)
我不知道X协议是否提供了一种方法来要求X服务器为您提供运行它的机器的主机名。您可能会得到其他信息,例如RandR数据(例如,其EDID信息可能包含监视器的品牌名称)。