Warum unterstützt (kann?) das Terminal das x11-Protokoll nicht?

Es wäre toll, x über ssh tunneln zu können; warum muss man stattdessen XQuartz (usw.) verwenden?

Antworten (1)

Die einfache Antwort lautet: Terminal ist ein Terminalemulator – es ist kein X11-Server. Es dient dazu, einen textbasierten Kommunikationsendpunkt zwischen Ihrem Mac und anderen Computern bereitzustellen.

Terminal ist nicht mehr ein X11- Server als Gnome-Terminal unter Linux oder cmd unter Windows. Das heißt: Es ist überhaupt kein X11-Server. Sie müssen einen X11-Server auf Ihrem lokalen Computer ausführen, damit getunnelte, grafische X11-Anwendungen ihre Benutzeroberflächen auf Ihrem Mac zeichnen können. Dies unterscheidet sich für Mac nicht wirklich von etwas wie Linux, es ist nur so, dass Linux standardmäßig immer einen X11-Server zum Zeichnen Ihres Desktops ausführt, sodass es etwas eleganter gehandhabt wird als auf dem Mac. Sie müssen nur die Berechtigungen Ihres X11-Servers öffnen und ssh-Tunneling und X11-Weiterleitung auf einem Linux-Desktop scheinen zu funktionieren.

Der XQuartz-Server , den Sie unter OS X ausführen, holt Ihnen einfach den fehlenden X11-Server, den Sie in Ihrer OS X-Sitzung benötigen, um das Zeichnen der weitergeleiteten UI-Befehle auf Ihrem OS X-Desktop zu ermöglichen. Dies ist nichts, was eine Terminal-Anwendung jemals implementieren würde oder sollte. Es gehört nicht dazu, ein Terminal zu sein. Es ist eine ganz andere Sache.

Ich möchte auch auf etwas eingehen, das Sie in Ihrer Frage gesagt haben:

Es wäre toll, x über ssh tunneln zu können

Ich nehme an, Sie meinen "es wäre großartig, eine X11-Weiterleitung von einer in Terminal.app gestarteten ssh-Sitzung zu meinem laufenden XQuartz-Server durchzuführen". Du kannst das!

Wenn Sie ssh in Terminal.app verwenden, schließen Sie einfach die -XOption zum Aktivieren der X-Weiterleitung ein und Ihr Mac startet XQuartz automatisch. Keine Notwendigkeit, die Terminal-App in XQuartz zu verwenden, was ziemlich scheiße ist.

Sie können auch Folgendes bearbeiten ~/.ssh/configund hinzufügen:

ForwardX11 yes

in diese Datei, um die X-Weiterleitung standardmäßig für alle SSH-Sitzungen zu aktivieren. Sie können sogar X-Programme auf dem Remote-Rechner im Hintergrund wie folgt starten:

ssh username@remoteserver -f -X xeyes

Das funktioniert vom Terminal aus.

Danke! Das macht sehr viel Sinn. Aber gleichzeitig ist xquartz nur ein Terminal, das auch x11 unterstützt ... also scheint es besser zu sein, dem Terminal x11-Unterstützung hinzuzufügen, als einen (viel schlechteren) Terminal-Emulator vollständig mit x11 zu reproduzieren
Nein, XQuartz ist kein Terminal. Es ist in erster Linie eine OS X-freundliche Implementierung eines X11-Servers und wird zufällig mit einigen X11-Programmen ausgeliefert, von denen eines ein Terminalemulator ist, der seine Benutzeroberfläche über X11 zeichnet. Wie ich oben gesagt habe: Das Hinzufügen von X11-Unterstützung zu Terminal ist nicht möglich, da Terminals, kein Terminal, X11 unterstützen . Es gibt keine Terminals, um Sprites auf den Bildschirm zu zeichnen, Punkt.
Das klingt wie ein semantisches Argument: Sie können x11 nicht unterstützen, weil der VT100 in dem paläolithischen Exponat, das es emuliert, dies nicht tut ... da es ein Emulator ist - vermutlich kann es mehr. Lassen Sie mich die Wörter neu anordnen, um sie für Sie weniger anstößig zu machen. Gibt es einen Grund, warum ein x11-Terminalemulator nicht so gut sein kann wie ein "normaler" Terminalemulator, vollständige Frage?
Es kann X11 nicht unterstützen, da ein Terminalprogramm nicht die notwendigen (massiven) Software-Interna enthält, um Sprites auf einem Bildschirm zu zeichnen. Das Heiraten der beiden bricht gute Prinzipien des Softwaredesigns und bläht die Terminal-App nur auf. Es gibt keinen Grund, warum das X11-Terminalprogramm in XQuartz nicht so gut sein kann wie Terminal, außer Zeit und Mühe von den Leuten, die zufällig daran arbeiten wollen.
@zhermesIch habe meine Antwort aktualisiert, um Ihnen zu zeigen, wie Sie die X-Weiterleitung von Ihren in Terminal.app initiierten ssh-Sitzungen durchführen. Sie brauchen immer noch den XQuartz X11- Server , aber Sie müssen nicht seinen miesen Terminal-Emulator verwenden.
Sie können leistungsfähigere Terminals als xterm bekommen, die unter X11 laufen, zB rxvt