¿Por qué el terminal no admite (¿no puede?) el protocolo x11?

Sería genial poder hacer un túnel x sobre ssh; ¿Por qué uno tiene que usar XQuartz (etc) en su lugar?

Respuestas (1)

La respuesta simple es: Terminal es un emulador de terminal, no es un servidor X11. Existe para proporcionar un punto final de comunicación basado en texto entre su Mac y otras máquinas.

Terminal no es más un servidor X11 que gnome-terminal en Linux o cmd en Windows. Lo que quiere decir: no es un servidor X11 en absoluto. Debe estar ejecutando un servidor X11 en su máquina local para poder tener aplicaciones gráficas X11 tuneladas que dibujen sus interfaces de usuario en su Mac. Esto no es realmente diferente para Mac de algo como Linux, es solo que Linux, de forma predeterminada, siempre ejecuta un servidor X11 para dibujar su escritorio, por lo que se maneja con un poco más de gracia que en Mac. Solo tiene que abrir los permisos de su servidor X11 y el túnel ssh y el reenvío X11 en un escritorio Linux parecen funcionar.

El servidor XQuartz que ejecuta en OS X simplemente le proporciona el servidor X11 faltante que necesita en su sesión de OS X para habilitar el dibujo de los comandos de interfaz de usuario reenviados en su escritorio de OS X. Esto no es algo que una aplicación de Terminal nunca implementaría, o nunca debería implementar. No es parte de ser una Terminal. Es una cosa completamente separada.

También quiero abordar algo que dijiste en tu pregunta:

Sería genial poder hacer un túnel x sobre ssh

Supongo que quiere decir "sería genial hacer el reenvío X11 desde una sesión ssh iniciada en Terminal.app a mi servidor XQuartz en ejecución". ¡Puedes hacerlo!

Cuando use ssh en Terminal.app, simplemente incluya la -Xopción para habilitar el reenvío de X y su Mac iniciará XQuartz automáticamente. No es necesario usar la aplicación de terminal en XQuartz, lo que apesta bastante.

También puede editar ~/.ssh/configy agregar:

ForwardX11 yes

a ese archivo para habilitar el reenvío X de forma predeterminada para todas las sesiones ssh. Incluso puede iniciar programas X en la máquina remota en segundo plano de la siguiente manera:

ssh username@remoteserver -f -X xeyes

Eso funciona desde Terminal.

¡Gracias! Eso tiene mucho sentido. Pero al mismo tiempo, xquartz es solo una terminal que también admite x11... por lo que parece que sería mejor agregar compatibilidad con x11 a la terminal, que reproducir completamente un (mucho peor) emulador de terminal con x11
No, XQuartz no es un terminal. Es principalmente una implementación compatible con OS X de un servidor X11 y se envía con algunos programas X11, uno de ellos es un emulador de terminal que dibuja su interfaz de usuario sobre X11. Como dije anteriormente: no es posible agregar compatibilidad con X11 a la Terminal porque las terminales, ninguna terminal, admite X11 . No existen terminales para dibujar sprites en la pantalla, punto.
Eso suena como un argumento semántico: no puede admitir x11 porque el VT100 en la exhibición paleolítica que emula no hace eso ... ya que es un emulador, presumiblemente puede hacer más. Permítame reorganizar las palabras para que sean menos ofensivas para usted, ¿hay alguna razón por la que un emulador de terminal x11 no pueda ser tan bueno como un emulador de terminal 'normal', pregunta completa?
No puede admitir X11 porque un programa de terminal no contiene los componentes internos de software necesarios (masivos) para dibujar sprites en una pantalla. Casarse con los dos rompe los buenos principios de diseño de software y simplemente infla la aplicación de la terminal. No hay ninguna razón por la que el programa de terminal X11 en XQuartz no pueda ser tan bueno como Terminal, aparte del tiempo y el esfuerzo de las personas que quieren trabajar en él.
@zhermes Actualicé mi respuesta para mostrarle cómo reenviar X desde sus sesiones ssh iniciadas en Terminal.app. Todavía necesita el servidor XQuartz X11 pero no necesita usar su pésimo emulador de terminal.
Puede obtener terminales más potentes que xterm que se ejecutan en X11, por ejemplo, rxvt