Re: Wie werden Klicks in ein per X-Umleitung geöffnetes Fenster ausgewertet?
Hallo, ich trage die Antwort mal wieder auf die Liste. Hoffe, das geht in Ordnung. Situation: ssh login von Rechner A auf Rechner B (Suse). KMail auf B starten (X-Umleitung nach A) und dort auf URL klicken. On Sunday 22 January 2006 23:12, Steffen Dettmer wrote:
* Achim Schäfer wrote on Sun, Jan 22, 2006 at 18:41 +0100:
Jetzt das erstaunliche: Ist Rechner A mein Suse 9.1 Rechner, so öffnet sich der Firefox auf Rechner B (natürlich mit Anzeige auf Rechner A). Ist aber Rechner A ein Fedora Rechner, so öffnet sich der Firefox auf Rechner A !
[...] Ich würde vielleicht mit ssh -v anfangen.
OK, ich habe das zwar gerade nur auf zwei Fedora Rechnern testen können, denke aber, dass das bei Suse nicht anders sein wird. Details s.u.
Kann mir nicht vorstellen, wie das kommt, und vor allem, warum B auf A ein Firefox starten darf. Oder läuft der schon und macht nur neues Fenster auf?
Das scheint ein entscheidender Punkt zu sein. Wenn Firefox noch nicht läuft, wird er remote gestartet (Rechner B). Falls aber auf Rechner A schon ein Firefox läuft, öffnet sich die angeklickte URL in diesem Firefox auf Rechner A. Wie das ganze bei den zwei Suse Rechnern aussieht, muss ich heute abend mal testen.
Wie werden die Klicks ausgewertet?
Auf B ist das display ja :10 oder sowas, was von SSH weitergeleitet wird. Soweit ich weiss, sollte die unten liegende xlib das halt über's Netz die klicks zur Applikation schicken, wobei natürlich die connection, die von SSH getunnelt wird, verwendet werden müsste. Also dürfte kmail natürlich gar nicht wissen, dass das End-Display auf Rechner A liegt!
So ähnlich hätte ich mir das auch gedacht. Deshalb verstehe ich auch immer noch nicht, warum sich der angeklickte Link im laufenden Firefox auf Rechner A öffnet. Für diesen Fall habe ich mal die Ausgabe von ssh -vvv protokolliert. Vielleicht kann da jemand mehr draus lesen als ich: -------------------------- debug2: channel 6: rcvd adjust 32908 debug1: client_input_channel_open: ctype x11 rchan 9 win 65536 max 16384 debug1: client_request_x11: request from 127.0.0.1 39712 debug2: fd 13 setting O_NONBLOCK debug3: fd 13 is O_NONBLOCK debug1: channel 7: new [x11] debug1: confirm x11 debug1: client_input_channel_open: ctype x11 rchan 10 win 65536 max 16384 debug1: client_request_x11: request from 127.0.0.1 39713 debug2: fd 14 setting O_NONBLOCK debug3: fd 14 is O_NONBLOCK debug1: channel 8: new [x11] debug1: confirm x11 debug2: channel 7: rcvd eof debug2: channel 7: output open -> drain debug2: channel 7: obuf empty debug2: channel 7: close_write debug2: channel 7: output drain -> closed debug1: channel 7: FORCE input drain debug2: channel 7: ibuf empty debug2: channel 7: send eof debug2: channel 7: input drain -> closed debug2: channel 7: send close debug3: channel 7: will not send data after close debug3: channel 7: will not send data after close debug3: channel 7: will not send data after close debug3: channel 7: will not send data after close debug3: channel 7: will not send data after close debug2: channel 7: rcvd close debug3: channel 7: will not send data after close debug2: channel 7: is dead debug2: channel 7: garbage collecting debug1: channel 7: free: x11, nchannels 9 debug3: channel 7: status: The following connections are open: #0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cfd -1) #1 x11 (t4 r3 i0/0 o0/0 fd 7/7 cfd -1) #2 x11 (t4 r4 i0/0 o0/0 fd 8/8 cfd -1) #3 x11 (t4 r5 i0/0 o0/0 fd 9/9 cfd -1) #4 x11 (t4 r6 i0/0 o0/0 fd 10/10 cfd -1) #5 x11 (t4 r7 i0/0 o0/0 fd 11/11 cfd -1) #6 x11 (t4 r8 i0/0 o0/0 fd 12/12 cfd -1) #7 x11 (t4 r9 i3/0 o3/0 fd 13/13 cfd -1) #8 x11 (t4 r10 i0/0 o0/0 fd 14/14 cfd -1) debug3: channel 7: close_fds r 13 w 13 e -1 c -1 debug2: channel 8: rcvd adjust 32800 debug2: channel 3: window 65344 sent adjust 65728 debug2: channel 8: rcvd adjust 32780 debug2: channel 8: rcvd eof debug2: channel 8: output open -> drain debug2: channel 8: obuf empty debug2: channel 8: close_write debug2: channel 8: output drain -> closed debug1: channel 8: FORCE input drain debug2: channel 8: ibuf empty debug2: channel 8: send eof debug2: channel 8: input drain -> closed debug2: channel 8: send close debug3: channel 8: will not send data after close debug2: channel 8: rcvd close debug3: channel 8: will not send data after close debug2: channel 8: is dead debug2: channel 8: garbage collecting debug1: channel 8: free: x11, nchannels 8 debug3: channel 8: status: The following connections are open: #0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cfd -1) #1 x11 (t4 r3 i0/0 o0/0 fd 7/7 cfd -1) #2 x11 (t4 r4 i0/0 o0/0 fd 8/8 cfd -1) #3 x11 (t4 r5 i0/0 o0/0 fd 9/9 cfd -1) #4 x11 (t4 r6 i0/0 o0/0 fd 10/10 cfd -1) #5 x11 (t4 r7 i0/0 o0/0 fd 11/11 cfd -1) #6 x11 (t4 r8 i0/0 o0/0 fd 12/12 cfd -1) #8 x11 (t4 r10 i3/0 o3/0 fd 14/14 cfd -1) debug3: channel 8: close_fds r 14 w 14 e -1 c -1 debug1: client_input_channel_open: ctype x11 rchan 9 win 65536 max 16384 debug1: client_request_x11: request from 127.0.0.1 39714 debug2: fd 13 setting O_NONBLOCK debug3: fd 13 is O_NONBLOCK debug1: channel 7: new [x11] debug1: confirm x11 debug2: channel 7: rcvd adjust 32800 debug2: channel 7: rcvd adjust 32780 debug2: channel 7: rcvd eof debug2: channel 7: output open -> drain debug2: channel 7: obuf empty debug2: channel 7: close_write debug2: channel 7: output drain -> closed debug1: channel 7: FORCE input drain debug2: channel 7: ibuf empty debug2: channel 7: send eof debug2: channel 7: input drain -> closed debug2: channel 7: send close debug3: channel 7: will not send data after close debug2: channel 7: rcvd close debug3: channel 7: will not send data after close debug2: channel 7: is dead debug2: channel 7: garbage collecting debug1: channel 7: free: x11, nchannels 8 debug3: channel 7: status: The following connections are open: #0 client-session (t4 r0 i0/0 o0/0 fd 4/5 cfd -1) #1 x11 (t4 r3 i0/0 o0/0 fd 7/7 cfd -1) #2 x11 (t4 r4 i0/0 o0/0 fd 8/8 cfd -1) #3 x11 (t4 r5 i0/0 o0/0 fd 9/9 cfd -1) #4 x11 (t4 r6 i0/0 o0/0 fd 10/10 cfd -1) #5 x11 (t4 r7 i0/0 o0/0 fd 11/11 cfd -1) #6 x11 (t4 r8 i0/0 o0/0 fd 12/12 cfd -1) #7 x11 (t4 r9 i3/0 o3/0 fd 13/13 cfd -1) debug3: channel 7: close_fds r 13 w 13 e -1 c -1 debug2: channel 3: rcvd adjust 32896 debug2: channel 3: window 65272 sent adjust 65800 debug2: channel 3: window 65392 sent adjust 65680 debug2: channel 3: rcvd adjust 32792 debug2: channel 3: window 65332 sent adjust 65740 -------------------------- Gruß, Achim
Am Montag, 23. Januar 2006 11:24 schrieb Achim Schaefer:
Situation: ssh login von Rechner A auf Rechner B (Suse). KMail auf B starten (X-Umleitung nach A) und dort auf URL klicken.
Ich habe noch mal weiter getestet und verstehe es immer noch nicht, wie das geht. Die Situation ist aber noch interessanter als vorher: Rechner A ist ein Suse 9.1 Rechner. Bei Klicks auf URLs öffnet sich der Firefox, aber ich habe es nicht hinbekommen, dass bei laufendem Firefox URLs innerhalb des laufenden Firefox geöffnet werden. Stattdessen bekomme ich immer den Profilmanager, der ein neues Profil anlegen möchte. Rechner B ist ein Suse 9.3 Rechner, bei dem sich ebenfalls Firefox öffnet. Hier habe ich es geschafft, dass bei laufendem Firefox URLs in neuen Tabs geöffnet werden. Jetzt wird's interessant: Ich sitze vor Rechner A, logge mich per ssh auf B ein und starte dort (auf B) KMail (Anzeige auf A). In KMail klicke ich auf eine URL. Wenn auf A kein Firefox läuft, wird auf B einer gestartet (und natürlich auf A angezeigt). Wenn aber auf A ein Firefox läuft, öffnet sich die URL dort in einem neuen Tab. Dabei kann der Firefox auf A das (Öffnen in neuem Tab) doch eigentlich gar nicht. Und andererseits sollte KMail auf B doch gar nicht wissen, dass die Anzeige auf Rechner A erfolgt. Irgendwie scheint also KDE den Klick abzufangen. Kann mir das jemand erklären? Gruß, Achim
On 1/23/06, Achim Schäfer
Am Montag, 23. Januar 2006 11:24 schrieb Achim Schaefer:
Situation: ssh login von Rechner A auf Rechner B (Suse). KMail auf B starten (X-Umleitung nach A) und dort auf URL klicken.
Ich habe noch mal weiter getestet und verstehe es immer noch nicht, wie das geht.
Die Situation ist aber noch interessanter als vorher: Rechner A ist ein Suse 9.1 Rechner. Bei Klicks auf URLs öffnet sich der Firefox, aber ich habe es nicht hinbekommen, dass bei laufendem Firefox URLs innerhalb des laufenden Firefox geöffnet werden. Stattdessen bekomme ich immer den Profilmanager, der ein neues Profil anlegen möchte. Rechner B ist ein Suse 9.3 Rechner, bei dem sich ebenfalls Firefox öffnet. Hier habe ich es geschafft, dass bei laufendem Firefox URLs in neuen Tabs geöffnet werden.
Jetzt wird's interessant: Ich sitze vor Rechner A, logge mich per ssh auf B ein und starte dort (auf B) KMail (Anzeige auf A). In KMail klicke ich auf eine URL. Wenn auf A kein Firefox läuft, wird auf B einer gestartet (und natürlich auf A angezeigt). Wenn aber auf A ein Firefox läuft, öffnet sich die URL dort in einem neuen Tab.
Dabei kann der Firefox auf A das (Öffnen in neuem Tab) doch eigentlich gar nicht. Und andererseits sollte KMail auf B doch gar nicht wissen, dass die Anzeige auf Rechner A erfolgt. Irgendwie scheint also KDE den Klick abzufangen.
Kann mir das jemand erklären?
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando. Ich habe früher solche Spielchen immer mühsam in das Firefox-Startskript reingehackt, braucht man zum Glück jetzt nicht mehr. Gruss, Karsten.
Am Montag, 23. Januar 2006 22:44 schrieb Karsten Künne:
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando.
Nicht vollkommen OT: Wie bring ich Thunderbird bei, was er beim Klick auf eine URL in einer Mail machen soll? Unter win ploppt da brav ein firefox auf, bzw die url kommt in einem neuen Tab. Unter Linux passiert da bei mir gar nix, egal ob schon ein FF läuft oder nicht (firefox 1.5 von suse, thunderbird 1.5 auch von suse, das ganze unter kde 3.5 auf 9.2). bye, MH -- gpg key fingerprint: 5F64 4C92 9B77 DE37 D184 C5F9 B013 44E7 27BD 763C
Am 23.01.2006 23:09 schrieb Mathias Homann:
Nicht vollkommen OT: Wie bring ich Thunderbird bei, was er beim Klick auf eine URL in einer Mail machen soll? Unter win ploppt da brav ein
Stichwörter: mozex (weiss nicht ob es die noch gibt) network.protocol-handler Google mal danach in den de.comm.software.mozilla.* Gruppen, da solltest du das finden. Hab FF+TB leider nicht im Einsatz, und mein SM kann das auch so ;-) OJ -- One's never alone with a rubber duck. (Douglas Adams)
On 1/23/06, Mathias Homann
Am Montag, 23. Januar 2006 22:44 schrieb Karsten Künne:
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando.
Nicht vollkommen OT: Wie bring ich Thunderbird bei, was er beim Klick auf eine URL in einer Mail machen soll? Unter win ploppt da brav ein firefox auf, bzw die url kommt in einem neuen Tab. Unter Linux passiert da bei mir gar nix, egal ob schon ein FF läuft oder nicht (firefox 1.5 von suse, thunderbird 1.5 auch von suse, das ganze unter kde 3.5 auf 9.2).
Das Problem hatte ich glaube ich auch, als ich Thunderbird 1.5 getestet habe (bin ansonsten eiserner Kamel-User). Ich glaube, Thunderbird startet den "Default"-Browser. Wo der allerdings bei Linux genau definiert wird, habe ich nicht herausgefunden, das ist irgendwo in dieser unsäglichen Gconf-Registry verbuddelt, vermute ich (über diesen Gconf-Mist könnte ich mich stundenlang aufregen, macht nur Probleme hier). Lösche doch mal die Verzeichnisse .gconf und .gconfd in Deinem Home-Verzeichnis, starte Thunderbird neu und schau mal, ob's dann funzt. Ich glaube, das hat's bei mir gefixt. Karsten.
On Monday 23 January 2006 23:09, Mathias Homann wrote:
Wie bring ich Thunderbird bei, was er beim Klick auf eine URL in einer Mail machen soll?
Ob das auch beim Thunderbird wirkt, kann ich Dir nicht sagen. Aber ich kann die Ansatzpunkte geben, wie man den Browser definiert, mit dem URLs geöffnet werden. Falls Du KDE verwendest, gibt es mehrere Ansatzpunkte, um KDE zu sagen, was es beim Klick auf eine URL tun soll. Einerseits kannst Du die Dateitypen "text->html" einem Programm zuordnen. Da kann dann so was wie "firefox %u" drinstehen. Für die Remote-Funktionalität wird es etwas komplizierter. Ich habe dazu folgendes gefunden: Firefox < 1.0: firefox -remote "OpenURL(%u, new-window)" || firefox %u Firefox ab 1.0: firefox -a firefox -remote "openURL(%u,new-window)" || firefox %u Außerdem gibt es so weit ich weiß bei neuren KDE Versionen auch die Möglichkeit einen Standardbrowser zu definieren. Ich glaube, das ist im Kontrollzentrum unter "KDE Komponenten --> Komponentenauswahl" Das bezieht sich jetzt alles auf KDE und Firefox, aber vielleicht hilft es Dir trotzdem auch für Thunderbird weiter. Gruß, Achim
HI! Mathias Homann wrote:
Nicht vollkommen OT: Wie bring ich Thunderbird bei, was er beim Klick auf eine URL in einer Mail machen soll? Unter win ploppt da brav ein firefox auf, bzw die url kommt in einem neuen Tab. Unter Linux passiert da bei mir gar nix, egal ob schon ein FF läuft oder nicht (firefox 1.5 von suse, thunderbird 1.5 auch von suse, das ganze unter kde 3.5 auf 9.2).
Ebenfalls KDE 3.5 auf 9.2: Geht bei mir AFAIR out-of-the-box, seit ich die offiziellen Pakete von mozilla.org nehme, statt der Suse RPMs. Thomas
Am Montag, 23. Januar 2006 22:44 schrieb Karsten Künne:
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando.
Ich habe früher solche Spielchen immer mühsam in das Firefox-Startskript reingehackt, braucht man zum Glück jetzt nicht mehr.
und was muß man tun, um ein solches Verhalten wieder weg zu bekommen? Meiner Meinung nach ist das einfach nicht X-Konform: Fenster gehen da auf, wo $DISPLAY hinweist. Basta. Bye Jürgen -- Dr.rer.nat. Juergen Vollmer, Viktoriastrasse 15, D-76133 Karlsruhe Tel: +49(721) 92 04 87 1 Fax: +49(721) 92 04 87 2 Juergen.Vollmer@informatik-vollmer.de www.informatik-vollmer.de Internet-Telefonie: www.skype.com Benutzer: juergen.vollmer
On Tuesday 24 January 2006 08:24, Dr. Jürgen Vollmer wrote:
und was muß man tun, um ein solches Verhalten wieder weg zu bekommen? Meiner Meinung nach ist das einfach nicht X-Konform: Fenster gehen da auf, wo $DISPLAY hinweist. Basta.
Hallo Jürgen, ob das hilft, weiß ich nicht, aber ich habe gerade noch folgendes gefunden: http://www.firefox-browser.de/wiki/MOZ_NO_REMOTE "MOZ_NO_REMOTE ist eine Umgebungsvariable, deren Setzen auf den Wert 1 das gleichzeitige Starten mehrerer Firefox Profile ermöglicht." Vielleicht führt das setzen der Umgebungsvariable dann auch dazu, dass Firefox nicht mehr prüft, ob bereits eine Instanz läuft? (ungetestet) Gruß, Achim
* Dr. Jürgen Vollmer wrote on Tue, Jan 24, 2006 at 08:24 +0100:
Am Montag, 23. Januar 2006 22:44 schrieb Karsten Künne:
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen.
und was muß man tun, um ein solches Verhalten wieder weg zu bekommen? Meiner Meinung nach ist das einfach nicht X-Konform: Fenster gehen da auf, wo $DISPLAY hinweist. Basta.
Na ja, gibt ja mehrere DISPLAY, remoteliche und lokalitäre... Frage mich nur gerade, ob man damit nicht prima Unfug treiben kann, zum Beispiel Angriffe irgendwelcher Art (so remoterlicher Dings als file:/ ein Script erst downloaden und dann starten oder sowas vielleicht). oki, Steffen -- Dieses Schreiben wurde maschinell erstellt, es trägt daher weder Unterschrift noch Siegel.
On 1/24/06, Dr. Jürgen Vollmer
Am Montag, 23. Januar 2006 22:44 schrieb Karsten Künne:
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando.
Ich habe früher solche Spielchen immer mühsam in das Firefox-Startskript reingehackt, braucht man zum Glück jetzt nicht mehr.
und was muß man tun, um ein solches Verhalten wieder weg zu bekommen?
Keine Ahnung, man müsste mal im Sourcecode stöbern und schauen, was die da treiben. Da ich aber bis jetzt von meinen Usern noch keine Klagen gehört habe, hatte ich dazu auch noch kein Bedürfnis. Die meisten mögen es wohl eher. Meiner Meinung nach ist das einfach nicht X-Konform: Fenster gehen da auf,
wo $DISPLAY hinweist. Basta.
Gehen sie ja auch ;-) . Nur, dass sie eben von der auf diesem DISPLAY gerade laufenden Firefox-Instanz gestartet werden, egal, auf welchem Rechner die jetzt gerade läuft. Karsten.
On Monday 23 January 2006 22:44, Karsten Künne wrote:
Ich sitze vor Rechner A, logge mich per ssh auf B ein und starte dort (auf B) KMail (Anzeige auf A). In KMail klicke ich auf eine URL. Wenn auf A kein Firefox läuft, wird auf B einer gestartet (und natürlich auf A angezeigt). Wenn aber auf A ein Firefox läuft, öffnet sich die URL dort in einem neuen Tab.
[...]
Mit KDE hat das gar nichts zu tun. Das ist ein Feature von neueren Firefox-Versionen (ab 1.0 oder 1.5?, weiss nicht mehr so genau). Firefox fragt beim Start erstmal die List der X-Klienten beim X-Server ab, und wenn da schon ein Firefox dabei ist , dann schickt er diesem Firefox ganz einfach ein Kommando über den X-Server, er möge doch bitte mal den URL in einem neuen Tab oder Fenster öffnen. Ich vermute mal, die Version von SUSE 9.1hatte dieses Feature noch nicht, versteht aber das "Firefox -remote ...." Kommando.
Danke Karsten, das erklärt einiges. Für mich ist dieses Verhalten gut. Mir gefällt es. Ob es X-konform ist, kann ich nicht sagen. Gruß, Achim
participants (8)
-
Achim Schaefer
-
Achim Schäfer
-
Dr. Jürgen Vollmer
-
Johannes Kastl
-
Karsten Künne
-
Mathias Homann
-
Steffen Dettmer
-
Thomas Börkel