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 mapas 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 los demás 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 integrados 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 devolver los datos que contiene. Las respuestas son enviadas por el servidor para proporcionar dichos datos. El servidor envía eventos para notificar a los clientes sobre la actividad de los usuarios u otros sucesos que les interesen. Erroresson paquetes enviados por el servidor para notificar a un cliente de errores ocurridos durante el procesamiento de sus solicitudes. Las solicitudes pueden generar respuestas, eventos y errores; aparte de esto, el protocolo no exige 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 están sujetas a especificaciones separadas, [4] como las especificaciones ICCCM y freedesktop.org , y normalmente se aplican automáticamente mediante el uso de un conjunto de widgets dado .

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 (el protocolo no especifica cómo se inicia el cliente). El cliente también envía el primer paquete, que contiene el orden de bytes que se usará e información sobre la versión del protocolo y el tipo de autenticación que el cliente espera que use el servidor. El servidor responde devolviendo un paquete que indica la aceptación o el 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 del sistema de ventanas X
En este ejemplo, el servidor X recibe entradas de un teclado y un mouse y las 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 la máscara de evento de su ventana, que el cliente puede cambiar.
Esta clave siempre genera el mismo código de clave , pero los símbolos /, 7y {están asociados a tres keysyms 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 se toman, sus eventos se redirigen al cliente que los toma en lugar de a la ventana que normalmente los recibe. Los eventos de puntero se pueden descartar según una máscara de evento.
La extensión de forma permite que en punto cree una ventana redonda.