Protocolo central del sistema X Window


El protocolo central del sistema X Window [1] [2] [3] es el protocolo base del sistema X Window , que es un sistema de ventanas en red para pantallas de mapa de bits que se utiliza para crear interfaces gráficas de usuario en Unix , similares a Unix y otros sistemas operativos. sistemas . El sistema X Window se basa en un modelo cliente-servidor : un solo servidor controla el hardware de entrada / salida , como la pantalla , el teclado y el mouse ; todos los programas de aplicaciónactuar como clientes , interactuando con el usuario y con el resto de clientes a través del servidor. Esta interacción está regulada por el protocolo central del sistema X Window. Existen otros protocolos relacionados con el sistema X Window, ambos construidos en la parte superior del protocolo central del sistema X Window o como protocolos separados.

En el protocolo central del sistema X Window, solo se envían cuatro tipos de paquetes, de forma asincrónica , a través de la red: solicitudes, respuestas, eventos y errores. Las solicitudes son enviadas por un cliente al servidor para pedirle que realice alguna operación (por ejemplo, crear una nueva ventana) y que envíe los datos que contiene. Las respuestas son enviadas por el servidor para proporcionar dichos datos. El servidor envía los eventos para notificar a los clientes sobre la actividad del usuario u otros sucesos que les interesan. Erroresson paquetes enviados por el servidor para notificar a un cliente los errores ocurridos durante el procesamiento de sus solicitudes. Las solicitudes pueden generar respuestas, eventos y errores; Aparte de esto, el protocolo no impone un orden específico en el que se envían los paquetes a través de la red. Existen algunas extensiones del protocolo central, cada una con sus propias solicitudes, respuestas, eventos y errores.

X se originó en el MIT en 1984 (su versión actual X11 apareció en septiembre de 1987). Sus diseñadores Bob Scheifler y Jim Gettys establecieron como principio inicial que su protocolo central era "crear un mecanismo, no una política". Como resultado, el protocolo central no especifica la interacción entre clientes y entre un cliente y el usuario. Estas interacciones son objeto de especificaciones independientes, [4] como las especificaciones ICCCM y freedesktop.org , y normalmente se aplican automáticamente mediante el uso de un conjunto de widgets determinado .

La comunicación entre el servidor y los clientes se realiza mediante el intercambio de paquetes a través de un canal . La conexión la establece el cliente (no se especifica cómo se inicia el cliente en el protocolo). El cliente también envía el primer paquete, que contiene el orden de bytes que se utilizará e información sobre la versión del protocolo y el tipo de autenticación que el cliente espera que utilice el servidor. El servidor responde enviando un paquete indicando la aceptación o rechazo de la conexión, o con una solicitud de autenticación adicional . Si se acepta la conexión, el paquete de aceptación contiene datos para que el cliente los utilice en la interacción posterior con el servidor.

Una vez establecida la conexión, se intercambian cuatro tipos de paquetes entre el cliente y el servidor a través del canal:

Los paquetes de solicitud y respuesta tienen una longitud variable, mientras que los paquetes de eventos y errores tienen una longitud fija de 32 bytes .


El logotipo de X Window System
En este ejemplo, el servidor X toma la entrada de un teclado y un mouse y la muestra en una pantalla. Un navegador web y un emulador de terminal se ejecutan en la estación de trabajo del usuario, y un emulador de terminal se ejecuta en un servidor remoto pero bajo el control de la máquina del usuario. Tenga en cuenta que la aplicación remota se ejecuta como lo haría localmente.
Un ejemplo de interacción entre un cliente y un servidor.
Una posible ubicación de algunas ventanas: 1 es la ventana raíz, que cubre toda la pantalla; 2 y 3 son ventanas de nivel superior; 4 y 5 son subventanas de 2. Las partes de una ventana que están fuera de su padre no son visibles.
Anatomía de una ventana FVWM . El área blanca es la ventana creada y vista por la aplicación cliente.
El xfontselprograma permite al usuario ver los glifos de una fuente.
Un ejemplo de evento: cuando se presiona una tecla en una ventana, se genera un evento y se envía a un cliente dependiendo de su máscara de evento de ventana, que el cliente puede cambiar.
Esta clave siempre genera el mismo código clave , pero los símbolos /, 7y {están asociados a tres claves diferentes .
Traducción de keycode a keysym.
Si el puntero o el teclado están congelados, los eventos que generan se bloquean en una cola. Si son capturados, sus eventos se redireccionan al cliente capturador en lugar de a la ventana que normalmente los recibe. Los eventos de puntero se pueden descartar según la máscara de evento.
La extensión de la forma permite que el reloj cree una ventana redonda.