2014-01-06 17 views
5

Ich leite meine X-Session oft von meinem Home-Server (Slackware) auf meinen Arbeits-Desktop (Cygwin/Windows 7) weiter. I.e. ssh -X home-server; emacs &. Ich möchte (programmatisch) wissen, wo meine Emacs-Sitzung angezeigt wird, aber die DISPLAY-Umgebung ist nicht sehr hilfreich:Wie kann ich feststellen, wo meine Emacs-Sitzung angezeigt wird?

(getenv "DISPLAY") 
"localhost:10.0" 

Irgendwelche Gedanken?

Update: Ich hätte klarer sein sollen; Ich suche nach dem Namen des Hosts, auf dem meine X-Sitzung läuft (in diesem Fall mein Arbeits-Desktop). Wenn Sie beispielsweise (system-name) oder (getenv "HOSTNAME") anrufen, wird "home-server" zurückgegeben, wo Emacs tatsächlich ausgeführt wird.

Update 2: Ich habe versucht, zu Tobias, unten, zu reagieren, aber die Formatierung arbeiten in den Kommentaren zu bekommen versucht, mich verrückt ist:

Danke, Tobias, aber es scheint nur, dass xauth befasst sich mit Berechtigungsdaten:

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

Update 3:

Tobias, zeigt es das:

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

Was liefert das 'display'-Item im Ergebnis des Funktionsaufrufs' (current-frame-configuration) '? Beachten Sie, dass mehrere Frames auf verschiedenen Displays angezeigt werden können. Diese würden auch im Ergebnis von 'current-frame-configuration' aufgelistet werden. – Tobias

+0

"localhost: 10.0"; Wie $ DISPLAY ... – Michael

+0

Der Anzeigename 'localhost: 10.0' sieht aus wie' xauth -l' (als Shell-Befehl) sollte Ihnen die Liste der xservers geben. Wenn ich richtig verstehe, dann sollte 'xauth -l localhost: 10.0' dir den direkten Treffer geben. Sie können dies auch von emacs aus aufrufen. Der allgemeinere Fall wäre 'xauth -l" $ DISPLAY "'. – Tobias

Antwort

0

Dies sind nur normale Linux-Variablen:

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

Sie sollten Sie die Maschine geben Sie sind, und Ihre Position auf der Maschine.

+0

Ja, sie werden mir von der Maschine erzählen, auf der Emacs läuft, aber nicht dort, wo sie angezeigt wird. Entschuldigung für die Verwirrung. – Michael

1

Ich fragte dies auf der Unix stackexchange. Die kurze Antwort ist

(getenv "SSH_CLIENT") 
+0

Ja ... daran gedacht, aber leider in meinem Fall, es sagt mir nur die IP-Adresse der DMZ/Firewall/was auch immer bei der Arbeit, nicht die Adresse meiner tatsächlichen Entwicklungs-Box. Deshalb denke ich, dass, wenn die Information verfügbar ist, es über das X-Protokoll kommen muss, nicht ssh. – Michael

0

Ich weiß nicht, ob das X-Protokoll bietet eine Möglichkeit, den X-Server fragen Sie den Hostnamen der Maschine zu geben, auf dem es läuft. Sie könnten mit anderen Informationen, wie den RandR-Daten (deren EDID-Informationen beispielsweise einen Markennamen des Monitors enthalten könnten), zurechtkommen.

Verwandte Themen