Dlaczego terminal (nie może?) Obsługuje protokół x11?

3

Byłoby wspaniale móc x tunelować nad ssh; dlaczego zamiast tego trzeba używać XQuartz (itp.)?

DilithiumMatrix
źródło

Odpowiedzi:

4

Prosta odpowiedź brzmi: Terminal jest emulatorem terminala - to nie jest serwer X11. Istnieje, aby zapewnić punkt końcowy komunikacji tekstowej między komputerem Mac i innymi komputerami.

Terminal nie jest już więcej X11 serwer niż gnome-terminal w systemie Linux to lub cmd w systemie Windows. Oznacza to, że nie jest to wcale serwer X11. Musisz mieć serwer X11 na swojej lokalnej maszynie, aby mieć tunelowane, graficzne aplikacje X11 rysujące swoje interfejsy użytkownika na komputerze Mac. W rzeczywistości nie różni się to dla Maca od Linuksa, po prostu Linux domyślnie zawsze uruchamia serwer X11 do rysowania pulpitu, więc jest on obsługiwany trochę lepiej niż na Macu. Wystarczy otworzyć uprawnienia serwera X11, a tunelowanie ssh i przekierowanie X11 na pulpicie systemu Linux wydają się działać.

The Serwer XQuartz uruchamiasz na OS X po prostu dostajesz brakujący serwer X11, którego potrzebujesz na sesji OS X, aby umożliwić rysowanie przekazanych poleceń interfejsu użytkownika na pulpicie OS X. To nie jest coś, co aplikacja Terminal kiedykolwiek wykonałaby, lub kiedykolwiek powinna, wdrożyć. To nie jest część bycia Terminalem. To całkowicie oddzielna rzecz.

Chcę również zająć się tym, co powiedziałeś w swoim pytaniu:

Byłoby wspaniale móc x tunelować nad ssh

Zakładam, że masz na myśli „byłoby wspaniale wykonać X11 przekierowanie z sesji ssh uruchomionej w Terminal.app do mojego działającego serwera XQuartz”. Możesz to zrobić!

Kiedy używasz ssh w Terminal.app, po prostu dołącz -X opcja włączenia przekazywania X, a komputer Mac automatycznie uruchomi XQuartz. Nie ma potrzeby korzystania z aplikacji terminalowej w XQuartz, która jest do bani.

Możesz także edytować ~/.ssh/config i dodaj:

ForwardX11 yes

do tego pliku, aby domyślnie włączyć przekierowanie X dla wszystkich sesji ssh. Możesz nawet uruchamiać programy X na zdalnej maszynie w tle w taki sposób:

ssh username@remoteserver -f -X xeyes

To działa z Terminalu.

Ian C.
źródło
Dzięki! To ma sens. Ale w tym samym czasie xquartz jest tylko terminalem, który obsługuje również x11 ... więc wydaje się, że lepiej byłoby dodać obsługę x11 do terminala, niż całkowicie odtworzyć (znacznie gorszy) emulator terminala z x11
DilithiumMatrix
1
Nie, XQuartz nie jest terminalem. Jest to przede wszystkim przyjazna dla OS X implementacja serwera X11 i zdarza się, że jest dostarczana z niektórymi programami X11, z których jeden jest emulatorem terminala, który rysuje swój interfejs użytkownika nad X11. Jak już powiedziałem powyżej: dodanie obsługi X11 do terminala nie jest możliwe, ponieważ terminale, bez terminala, obsługują X11 . Terminale nie istnieją do rysowania sprite'ów na sceen, full kropka.
Ian C.
2
Nie może obsługiwać X11, ponieważ program terminala nie zawiera niezbędnych (masywnych) elementów oprogramowania do rysowania ikonek na ekranie. Poślubienie dwóch przełamuje dobre zasady projektowania oprogramowania i po prostu rozszerza aplikację terminalową. Nie ma powodu, aby program terminala X11 w XQuartz nie mógł być tak dobry jak Terminal inny niż czas i wysiłek ludzi, którzy chcą nad nim pracować.
Ian C.
1
@zhermesI zaktualizowałem moją odpowiedź, aby pokazać, jak wykonać przekierowanie X z sesji ssh zainicjowanych w Terminal.app. Nadal potrzebujesz XQuartz X11 serwer ale nie musisz używać tego kiepskiego emulatora terminala.
Ian C.
2
Możesz uzyskać potężniejsze terminale niż xterm, które działają pod X11 rxvt
Mark