2014-01-06 39 views
5

我經常將我的X會話從我的家庭服務器(Slackware)轉發到我的工作桌面(Cygwin/Windows 7)。即ssh -X home-server; emacs &。我想知道(編程),其中正在顯示我的Emacs會話,但顯示的環境是不是非常有幫助:如何確定Emacs會話的顯示位置?

(getenv "DISPLAY") 
"localhost:10.0" 

有什麼想法?

更新:我應該更清楚;我正在尋找我的X會話正在運行的主機的名稱(在本例中爲我的工作桌面)。調用,例如,(system-name)(getenv "HOSTNAME")將返回「home-server」,其中Emacs實際上正在運行。

更新2:我一直在試圖托比亞斯,下面,而是試圖讓格式的註釋工作已經駕駛我堅果迴應:

謝謝,托比亞斯,但它只是似乎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... 
+0

函數調用結果'(current-frame-configuration)'中的'display'-item是什麼?請注意,不同顯示器上可能有多個框架。這些也將在'current-frame-configuration'的結果中列出。 – Tobias

+0

「localhost:10.0」;與$ DISPLAY相同... – Michael

+0

顯示名稱'localhost:10.0'看起來像'xauth -l'(與shell命令一樣)會給你一個xservers列表。如果我理解正確,那麼'xauth -l localhost:10.0'應該給你直接命中。你也可以從emacs中調用它。更一般的情況是'xauth -l「$ DISPLAY」'。 – Tobias

回答

0

這些只是普通的Linux變量:

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

他們應該給你,你是機器,並在該計算機上的位置。

+0

是的,他們會告訴我關於Emacs正在運行的機器,但不會顯示它正在顯示的位置。對困惑感到抱歉。 – Michael

1

我問過這個Unix stackexchange。簡短的回答是

(getenv "SSH_CLIENT") 
+0

是啊......想到了這一點,但不幸的是在我的情況下,它只是告訴我DMZ /防火牆/任何工作的IP地址,而不是我實際開發箱的地址。這就是爲什麼我認爲如果信息可用,它將不得不通過X協議而不是ssh。 – Michael

0

我不知道X協議是否提供了一種方法來要求X服務器爲您提供它所運行的機器的主機名。您可能會獲得其他信息,例如RandR數據(例如,其EDID信息可能包含顯示器的品牌名稱)。