X, Xorg y D-Bus: ¿cuál es la diferencia?

35

En el proceso de aprender a hacer ciertas cosas en la programación de la GUI (p. Ej., Reservar espacio en la pantalla para una aplicación), tengo que aprender más sobre el Administrador de ventanas, generalmente X11 en Linux (no estoy seguro de si incluso hay distribuciones , que usan algo más que X11, aunque escuché sobre Wayland , que aún no está implementado en ninguno).

Soy bastante nuevo en programación e impaciente; así que solo me estoy sumergiendo en eso. Ahora estoy leyendo el ICCCM, con la esperanza de aprender más. Sin embargo, este documento apunta a un público que sabe (mucho) más que yo. Entonces encontré información y me encantaría obtener algunas aclaraciones.

La sección 2 de las citas de ICCCM:

Tenga en cuenta que todos los datos transferidos entre un propietario y un solicitante generalmente deben pasar por medio del servidor en un entorno X Versión 11. Un cliente no puede asumir que otro cliente puede abrir los mismos archivos o incluso comunicarse directamente. El otro cliente puede estar hablando con el servidor mediante un mecanismo de red completamente diferente (por ejemplo, un cliente puede ser DECnet y el otro TCP / IP). Por lo tanto, pasar referencias indirectas a datos (como nombres de archivos, nombres de host y números de puerto, etc.) está permitido solo si ambos clientes están de acuerdo específicamente.

Por lo que yo entiendo, X Window Manager está construido en la parte superior del servidor X (gracias Wikipedia). En la cita anterior: dice que el cliente puede comunicarse con el servidor utilizando DECnet o TCP / IP. Hasta ahora pensé que "servidor" era una forma de hablar, ahora estoy dudando: ¿X server es un servidor como en un "servidor web"? ¿Cómo debo entender su función / definición?

Luego, a menudo hay referencias a X11, Xorg, X Server y / o X Window Manager. Se vuelve confuso: ¿X11 es un paquete que incluye Xorg y X Window Manager? Si es así, ¿hay algo más en este paquete X11?

X también necesita mouse o teclado o cualquier otro tipo de entrada: ¿ es también parte de las funciones de X Server? ¿X Window Manager solo se ocupa estrictamente de la pantalla?

Finalmente, la cita anterior también menciona que el cliente se comunica o no entre sí: esto me recordó a D-Bus, que he usado un poco para aprender. Con D-Bus también puede activar eventos de ventana. Eso me confunde un poco sobre cómo los programas deben comunicarse entre sí: * ¿qué diferencia hay entre los programas que interactúan usando X Server o D-Bus? * *

Es una pena que esta información siga siendo de alguna manera oscura, hace que sea más difícil de aprender, pero espero que puedas sacar algo de luz sobre esto :) Gracias.

Benjamín
fuente

Respuestas:

61

Estás haciendo cinco preguntas aquí, y podría ser mejor hacer cinco preguntas ☺ Pero voy a saltar:

  1. X es un servidor y se puede comparar con un "servidor web" ya que es un proceso que escucha las conexiones entrantes que hablan un protocolo particular (el protocolo X) y emite respuestas. Las conexiones provienen de clientes X, que pueden estar en el host local o en un host remoto al que se accede a través de una red.

  2. X11 es una "versión principal" del protocolo X, que ha evolucionado desde el inicio. X11 es el protocolo más reciente y el más común. (Xorg es una implementación de un servidor X, bibliotecas X y una colección de clientes, todos hablando X11. Hay otras implementaciones: la XFree86 en gran parte extinta; comerciales como Hummingbird Exceed; horquillas como XQuartz, que se ejecuta en Mac OS X )

  3. Un "administrador de ventanas" es un cliente X que administra ventanas. Por lo general, tiene la responsabilidad de decorar ventanas con biseles / bordes, sombras paralelas, una barra de menú que contiene botones, etc., y manejar la lógica de la colocación de ventanas; admite ventanas arrastradas, redimensionadas o reorganizadas, etc.

  4. X requiere información y tiene la responsabilidad compartida de administrar eso con el Kernel. Históricamente, X hizo mucha gestión de hardware en sí. En los tiempos modernos, en la plataforma Linux, X se está volviendo gradualmente "más pequeño" y delegando esta responsabilidad al kernel de Linux. Las ventajas de esto son: una base de código X más pequeña; menos "hilos cruzados" con el núcleo y X, ambos tratando de manejar las mismas cosas. (un ejemplo de esto es la interfaz de eventos de Linux, donde los eventos de ratones, etc., son interpretados y traducidos por el núcleo y sus controladores a la interfaz estándar en /dev/input/event*, que es consumida por el servidor X). Tenga en cuenta que en otras plataformas (BSD, Solaris) X sigue siendo bastante monolítico.

  5. Hay muchas formas para que los procesos se comuniquen entre sí. Creo que los clientes X pueden interactuar a través del protocolo X (por ejemplo, los administradores de ventanas X tradicionales necesitan saber cuándo otros clientes dibujan ventanas, para decorarlas; los localizadores necesitan saber cuándo cambia el tamaño o la posición de una ventana, para reflejar eso en el buscapersonas). D-Bus es una tecnología moderna de comunicación entre procesos (IPC) desarrollada para abordar las deficiencias de otros métodos. No es X específico.

jmtd
fuente
¡Genial gracias! Eso es realmente útil. Acerca de las 5 preguntas: no sé cuál es el protocolo en ese caso, pero si un administrador quiere que las separe, lo escucharé. Personalmente, me gusta tener eso en un documento, y veo las 5 preguntas como subpreguntas del título. Gracias de nuevo.
Benjamin
El punto de no saltar protocolos es que el sistema X Window está diseñado para que las aplicaciones ("clientes") no necesiten ejecutarse en el mismo host, es decir, puede iniciar sesión en otra máquina, ejecutar un programa allí, y la ventana se abre en su pantalla como una aplicación local Si otro programa preguntara "cuál es su ID de proceso, para que pueda hablar con usted directamente", no hay forma de responder esta pregunta correctamente.
Simon Richter
Es posible que no desee que el recurso compartido por el servidor X sea la pantalla que consiste en uno o más monitores y dos o más dispositivos de entrada (teclado, mouse)
hildred
Definitivamente útil las 5 preguntas juntas. Gracias.
Harvey
@hildred En el caso de una pantalla táctil en configuración de kiosco, podría tener tan solo un dispositivo de entrada.
Shadur