stringtranslate.com

Protocolos y arquitectura del sistema X Window

El logotipo del sistema X Window

En informática , el sistema X Window (comúnmente: X11 o X) es un sistema de ventanas transparente en red para visualizaciones de mapas de bits . Este artículo detalla los protocolos y la estructura técnica de X11.

Modelo cliente-servidor y transparencia de la red

En este ejemplo, el servidor X recibe la información de un teclado y un ratón 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. Observe que la aplicación remota se ejecuta tal como lo haría localmente.

X utiliza un modelo cliente-servidor . Un programa servidor X se ejecuta en una computadora con una pantalla gráfica y se comunica con varios programas cliente . El servidor X actúa como intermediario entre el usuario y los programas cliente, aceptando solicitudes en el puerto TCP 6000 más el número de pantalla [1] para salida gráfica (ventanas) de los programas cliente y mostrándolas al usuario (pantalla), y recibiendo la entrada del usuario (teclado, mouse) y transmitiéndola a los programas cliente.

En X, el servidor se ejecuta en el equipo del usuario, mientras que los clientes pueden ejecutarse en equipos remotos. Esta terminología invierte la noción común de los sistemas cliente-servidor, donde el cliente normalmente se ejecuta en el equipo local del usuario y el servidor se ejecuta en el equipo remoto. La terminología de X Window adopta la perspectiva de que el programa X Window está en el centro de toda la actividad, es decir, el programa X Window acepta y responde a las solicitudes de las aplicaciones y de la entrada del ratón y el teclado del usuario. Por lo tanto, las aplicaciones (en equipos remotos) se consideran clientes del programa servidor X Window.

El protocolo de comunicación entre el servidor y el cliente funciona de forma transparente en la red : el cliente y el servidor pueden funcionar en la misma máquina o en máquinas diferentes, posiblemente con diferentes arquitecturas y sistemas operativos . Un cliente y un servidor pueden comunicarse de forma segura a través de Internet mediante la tunelización de la conexión a través de una conexión cifrada. [2]

Principios de diseño

Bob Scheifler y Jim Gettys establecieron los principios iniciales de X de la siguiente manera (como se enumera en Scheifler/Gettys 1996):

El primer principio se modificó durante el diseño de X11 a: No agregue nueva funcionalidad a menos que conozca alguna aplicación real que la requiera.

Desde entonces, X se ha mantenido fiel a estos principios. La Fundación X.Org desarrolla la implementación de referencia con vistas a ampliarla y mejorarla, al tiempo que la mantiene casi totalmente compatible con el protocolo original de 1987.

Protocolo básico

La comunicación entre el servidor y los clientes se realiza mediante el intercambio de paquetes a través de un canal de red . El cliente establece la conexión enviando el primer paquete. El servidor responde enviando un paquete indicando 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 que el cliente puede utilizar en la interacción posterior con el servidor.

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

  1. Solicitud: el cliente solicita información al servidor o le solicita que realice una acción.
  2. Respuesta: el servidor responde a una solicitud. No todas las solicitudes generan respuestas.
  3. Evento: el servidor envía un evento al cliente, por ejemplo, una entrada de teclado o mouse, o una ventana que se mueve, redimensiona o expone.
  4. Error: el servidor envía un paquete de error si una solicitud no es válida. Dado que las solicitudes se ponen en cola, es posible que los paquetes de error generados por una solicitud no se envíen de inmediato.

El servidor X proporciona un conjunto de servicios básicos. Los programas cliente realizan funciones más complejas interactuando con el servidor.

Ventanas

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 la ventana que están fuera de su ventana principal no son visibles.

Lo que otras interfaces gráficas de usuario suelen llamar ventana es una ventana de nivel superior en el sistema X Window. El término ventana también se utiliza para las ventanas que se encuentran dentro de otra ventana, es decir, las subventanas de una ventana principal . Los elementos gráficos como botones, menús, iconos, etc. se realizan mediante ventanas.

Una ventana sólo puede crearse como subventana de una ventana principal. Esto hace que las ventanas se ordenen jerárquicamente en un árbol . El servidor X crea automáticamente la raíz del árbol, llamada ventana raíz . Las ventanas de nivel superior son exactamente las subventanas directas de la ventana raíz. Visiblemente, la ventana raíz es tan grande como la pantalla y se encuentra detrás de todas las demás ventanas.

Identificadores

El servidor X almacena todos los datos sobre ventanas, fuentes, etc. El cliente conoce los identificadores de estos objetos (números enteros que puede utilizar como nombres para ellos cuando interactúa con el servidor). Por ejemplo, si un cliente desea que se cree una ventana, solicita al servidor que cree una y (en caso de éxito) obtiene a cambio un identificador que el servidor asocia con la ventana recién creada. El identificador puede ser utilizado posteriormente por el cliente para solicitar, por ejemplo, que se dibuje una cadena en la ventana.

Los identificadores son exclusivos del servidor, no solo del cliente; por ejemplo, no hay dos ventanas que tengan el mismo identificador, incluso si las crean dos clientes diferentes. Un cliente puede acceder a cualquier objeto dado su identificador, incluso si otro cliente creó el objeto.

Atributos y propiedades

Cada ventana tiene un conjunto predefinido de atributos y un conjunto de propiedades, todos almacenados en el servidor X y accesibles para los clientes mediante las solicitudes correspondientes. Los atributos son datos sobre la ventana, como su tamaño, posición, color de fondo, etc. Las propiedades son datos que se adjuntan a una ventana. A diferencia de los atributos, las propiedades no tienen significado a nivel del protocolo principal de X Window. Un cliente puede almacenar datos arbitrarios en una propiedad de una ventana.

Una propiedad se caracteriza por un nombre, un tipo y un valor. Las propiedades se parecen a las variables en los lenguajes de programación imperativa , en el sentido de que la aplicación puede crear una nueva propiedad con un nombre determinado y de un tipo determinado y almacenar un valor en ella. Las propiedades están asociadas a ventanas: dos propiedades con el mismo nombre pueden existir en dos ventanas diferentes y tener tipos y valores diferentes.

Las propiedades se utilizan principalmente para la comunicación entre clientes. Por ejemplo, la propiedad named WM_NAMEalmacena el nombre de la ventana; los administradores de ventanas suelen leer esta propiedad y mostrar el nombre de la ventana en la parte superior.

El xpropprograma puede mostrar las propiedades de una ventana. En particular, xprop -rootmuestra las propiedades de la ventana raíz, que incluyen los recursos X (parámetros de los programas).

Eventos

Los eventos son paquetes que envía el servidor al cliente para comunicar que ha ocurrido algo que puede interesarle. Un cliente puede solicitar al servidor que envíe un evento a otro cliente; esto se utiliza para la comunicación entre clientes. Por ejemplo, cuando un cliente solicita el texto que está seleccionado actualmente, se envía un evento al cliente que está manejando la ventana que contiene la selección.

El contenido de una ventana puede "destruirse" en determinadas circunstancias (por ejemplo, si la ventana está cubierta). Siempre que se haga visible un área de contenido destruido, el servidor genera un Exposeevento para notificar al cliente que se debe dibujar una parte de la ventana.

Otros eventos pueden servir para notificar a los clientes sobre la entrada del teclado o del mouse, sobre la creación de nuevas ventanas, etc.

Algunos tipos de eventos siempre se envían a un cliente, pero la mayoría de los tipos de eventos se envían solo si el cliente manifestó previamente su interés en ellos, ya que los clientes pueden estar interesados ​​solo en algunos tipos de eventos. Por ejemplo, un cliente puede estar interesado en un evento relacionado con el teclado, pero no en eventos relacionados con el mouse.

Modos de color

La forma en que el sistema X Window maneja los colores a veces puede confundir a los usuarios, y históricamente se han admitido varios modos diferentes. La mayoría de las aplicaciones modernas utilizan colores completos (color de 24 bits, 8 bits para cada uno de los colores rojo, verde y azul), pero las aplicaciones antiguas o especializadas pueden requerir un modo de color diferente. Muchas aplicaciones comerciales especializadas utilizan PseudoColor.

El protocolo X11 utiliza un único entero sin signo de 32 bits (denominado valor de píxel ) para representar un único color en la mayoría de las operaciones gráficas. Al transferir la intensidad de los colores primarios , se utiliza un entero de 16 bits para cada componente de color. Existen las siguientes representaciones de colores; es posible que no todas sean compatibles con un dispositivo específico.

Xlib y otras bibliotecas cliente

La mayoría de los programas cliente se comunican con el servidor a través de la biblioteca cliente Xlib . Además de Xlib, la biblioteca XCB opera de forma más cercana al protocolo X. En particular, la mayoría de los clientes usan bibliotecas como Xaw , Motif , GTK+ o Qt , que a su vez usan Xlib para interactuar con el servidor. Qt cambió de Xlib a XCB con la versión 5.0, pero los programas cliente casi no se vieron afectados por este cambio.

Comunicación entre clientes

El protocolo principal de X Window proporciona mecanismos para la comunicación entre clientes: propiedades y eventos de ventana, en particular los eventos de mensajes de cliente a cliente. Sin embargo, no especifica ningún protocolo para dichas interacciones. En cambio, un conjunto independiente de convenciones de comunicación entre clientes rige estos protocolos.

El Manual de Convenciones de Comunicación entre Clientes especifica el protocolo para el intercambio de datos a través de selecciones y la interacción de las aplicaciones con el administrador de ventanas. Algunos han considerado que esta especificación es difícil y confusa; [3] [4] la coherencia de la apariencia y la comunicación de las aplicaciones se logra normalmente mediante la programación para un entorno de escritorio determinado.

El protocolo Inter-Client Exchange (ICE) especifica un marco para construir protocolos de interacción entre clientes, de forma que los programadores puedan construir un protocolo específico sobre él. En concreto, el protocolo X Session Management (XSMP) es un protocolo basado en ICE que rige la interacción entre aplicaciones con el gestor de sesiones , que es el programa que se encarga de almacenar el estado del escritorio al finalizar una sesión interactiva y recuperarlo cuando se vuelve a iniciar otra sesión con el mismo usuario.

Las especificaciones de freedesktop incluyen convenciones más nuevas, incluida la convención de arrastrar y soltar Xdnd (usada para transferir datos seleccionándolos y arrastrándolos en otra ventana) y la convención de aplicación integrada Xembed (que detalla cómo una aplicación puede ejecutarse en una subventana de otra aplicación).

Selecciones, buffers de corte y arrastrar y soltar

Los mecanismos de selección, buffer de corte y arrastrar y soltar en el sistema X Window permiten al usuario transferir datos de una ventana a otra. Las selecciones y el buffer de corte se utilizan (normalmente) cuando un usuario selecciona texto u otros datos en una ventana y los pega en otra ventana. La función de arrastrar y soltar se utiliza cuando un usuario selecciona algo en una ventana, luego hace clic en la selección y la arrastra a otra ventana.

Dado que dos aplicaciones diferentes pueden manejar las dos ventanas, la transferencia de datos requiere que distintos clientes se conecten al mismo servidor X para interactuar. El protocolo principal de X Window incluye algunos tipos de solicitudes y eventos que son específicos del intercambio de selección, pero la transferencia se realiza principalmente mediante el envío de eventos de cliente a cliente y las propiedades de ventana generales, que no son específicas de la transferencia de selección.

Los usuarios pueden transferir datos de distintos tipos entre clientes: normalmente es texto, pero también puede ser un mapa de píxeles, un número, una lista de objetos, etc.

Las selecciones y el arrastrar y soltar son mecanismos activos: después de que el usuario selecciona datos en una ventana, el cliente que maneja la ventana debe admitir activamente un protocolo para transferir esos datos a la aplicación que los solicita. Los buffers de corte , por el contrario, proporcionan un mecanismo pasivo: cuando el usuario selecciona algún texto, su contenido se transfiere a un buffer de corte, donde permanece incluso si la aplicación que maneja la ventana finaliza y la ventana se destruye.

Gestor de ventanas

Un gestor de ventanas es un programa que controla la apariencia general de las ventanas y otros elementos gráficos de la interfaz gráfica de usuario . Las diferencias en la apariencia de X Window System en diferentes instalaciones se deben principalmente al uso de distintos gestores de ventanas o a diferentes configuraciones del gestor de ventanas.

El administrador de ventanas se encarga de decidir la posición de las ventanas, colocar el borde decorativo alrededor de ellas, manejar los íconos, manejar los clics del mouse fuera de las ventanas (en el “fondo”), manejar ciertas pulsaciones de teclas, etc.

Desde el punto de vista del servidor X, el gestor de ventanas funciona como un cliente como cualquier otro. La posición inicial y los bordes decorativos de las ventanas son gestionados por el gestor de ventanas mediante las siguientes solicitudes:

  1. una aplicación puede solicitar al servidor que no satisfaga las solicitudes de mapeo (mostrar) subventanas de una ventana dada y que en su lugar se le envíe un evento;
  2. Una aplicación puede solicitar cambiar el padre de una ventana.

El gestor de ventanas utiliza la primera petición para interceptar cualquier petición de mapeo de ventanas de nivel superior (hijas de la ventana raíz). Siempre que otra aplicación solicita el mapeo de una ventana de nivel superior, el servidor no lo hace, sino que envía un evento al gestor de ventanas. La mayoría de los gestores de ventanas reestructuran la ventana: crean una ventana de nivel superior más grande (llamada ventana de marco) y reestructuran la ventana original como una ventana hija de ella. Gráficamente, esto corresponde a colocar la ventana original dentro de la ventana de marco. El espacio de la ventana de marco que no ocupa la ventana original se utiliza para el marco decorativo alrededor de la ventana (el “borde” y la “barra de título”).

El administrador de ventanas administra los clics del ratón en la ventana del marco. Esto permite, por ejemplo, que un usuario mueva o cambie el tamaño de la ventana haciendo clic y arrastrando el borde o la barra de título.

El gestor de ventanas también se encarga de los iconos y los elementos visuales relacionados de la interfaz gráfica de usuario. Los iconos no existen en el nivel del protocolo principal de X Window. Son implementados por el gestor de ventanas. Por ejemplo, siempre que se debe "iconificar" una ventana, el gestor de ventanas FVWM desmapea la ventana y crea una ventana para el nombre del icono y, posiblemente, otra ventana para la imagen del icono. Por lo tanto, el significado y el manejo de los iconos lo decide completamente el gestor de ventanas: algunos gestores de ventanas como wm2 no implementan iconos en absoluto.

Administrador de sesiones

En líneas generales, el estado de una sesión es el «estado del escritorio» en un momento dado: un conjunto de ventanas con su contenido actual. Más precisamente, es el conjunto de aplicaciones que gestionan estas ventanas y la información que permite a estas aplicaciones restaurar el estado de las ventanas que gestionan, si es necesario. Un programa conocido como gestor de sesiones X guarda y restaura el estado de las sesiones.

Lo más reconocible es que el uso de un administrador de sesiones permite al usuario cerrar sesión en una sesión interactiva, pero encontrar exactamente las mismas ventanas en el mismo estado cuando inicia sesión nuevamente. Para que esto funcione, el programa del administrador de sesiones almacena los nombres de las aplicaciones que se están ejecutando al cerrar la sesión y las inicia nuevamente al iniciarla. Para que también se pueda restaurar el estado de las aplicaciones (lo cual es necesario para restaurar el contenido de las ventanas), las aplicaciones deben poder guardar su estado de ejecución cuando se lo solicite el administrador de sesiones y cargarlo nuevamente cuando se inicien nuevamente.

El sistema X Window incluye un administrador de sesiones predeterminado llamado xsm. Los desarrolladores han escrito otros administradores de sesiones para sistemas de escritorio específicos. Los principales ejemplos incluyen ksmserver, xfce4-session, y gnome-sessionpara KDE , Xfce y GNOME respectivamente.

Administrador de pantalla X

El programa conocido como administrador de pantalla X muestra el mensaje gráfico de inicio de sesión en el sistema X Window. En términos más generales, un administrador de pantalla ejecuta uno o más servidores X en la computadora local o acepta conexiones entrantes de servidores X que se ejecutan en computadoras remotas. Los servidores locales son iniciados por el administrador de pantalla, que luego se conecta a ellos para presentar al usuario la pantalla de inicio de sesión. Los servidores remotos se inician independientemente del administrador de pantalla y se conectan a él. En esta situación, el administrador de pantalla funciona como un servidor telnet gráfico : un servidor X puede conectarse al administrador de pantalla, que inicia una sesión; las aplicaciones que utilizan esta sesión se ejecutan en la misma computadora del administrador de pantalla, pero tienen entrada y salida en la computadora donde se ejecuta el servidor X (que puede ser la computadora frente al usuario o una remota).

El sistema X Window se entrega con XDM como administrador de pantalla básico. Otros administradores de pantalla son GDM ( GNOME ), KDM / SDDM ( KDE ), WDM (que utiliza el conjunto de widgets WINGs utilizado en Window Maker ) y Entrance (que utiliza la arquitectura utilizada en Enlightenment v.17).

Elementos de la interfaz de usuario

Los primeros kits de herramientas de widgets para X incluían Xaw ( Athena Widget Set, 1983), OLIT ( OPEN LOOK Intrinsics Toolkit, 1988), XView (1988), Motif (años 1980) y Tk . OLIT y XView funcionan como kits de herramientas base para el entorno de escritorio OpenWindows heredado de Sun.

Motif proporciona el conjunto de herramientas básico para el Common Desktop Environment (CDE), el entorno de escritorio utilizado en sistemas Unix comerciales como Solaris , AIX y HP-UX . (Solaris 10 incluye tanto CDE como GNOME , siendo este último el entorno de escritorio preferido a partir de 2010 ).

Los kits de herramientas desarrollados más recientemente incluyen Qt (1991-, utilizado por KDE ), GTK+ (1997-, utilizado por GNOME), wxWidgets (1992-), FLTK (1998-), FOX (1997-) y fpGUI (2005-actualidad).

Extensiones

Scheifler y Gettys diseñaron el servidor X para que fuera simple pero extensible. Por ello, gran parte de la funcionalidad reside ahora en extensiones del protocolo.

A nivel de protocolo, a cada extensión se le pueden asignar nuevos tipos de paquetes de solicitud/evento/error. Las aplicaciones cliente acceden a las características de la extensión a través de bibliotecas de extensiones. Según se informa, agregar extensiones a las implementaciones actuales del servidor X es difícil debido a la falta de modularidad en el diseño del servidor. [5] Un objetivo a largo plazo del proyecto XCB es automatizar la generación de extensiones tanto del lado del cliente como del lado del servidor a partir de descripciones de protocolo XML.

La siguiente tabla proporciona un catálogo parcial de las extensiones que se han desarrollado, ordenadas aproximadamente por fecha de introducción reciente:

Extensiones obsoletas

Véase también

Notas

  1. ^ "Xorg, conexiones de red". Páginas del manual X11R7. Fundación X.Org . Consultado el 23 de diciembre de 2023 .
  2. ^ Modelo cliente-servidor
    • IBM 1994, págs. 2-11
    • Maguolo 2005
    • Manrique 2001
    • Stevens 1994, págs. 430-433
    • Quercia y O'Reilly 1993, págs. 13-17
  3. ^ Hopkins, Don (sin acreditar) (mayo de 1994). Garfinkel, Simson ; Weise, Daniel; Strassmann, Steven (eds.). The UNIX-Haters Handbook (PDF) . San Mateo, CA, EE. UU.: IDG Books . p. 126 El desastre de X-Windows. ISBN 978-1-56884-203-5. OCLC  30681401 . Consultado el 11 de julio de 2011 . El ICCCM es increíblemente denso, debe seguirse al pie de la letra y, aun así, no funciona. El cumplimiento del ICCCM es una de las pruebas más complejas de la implementación de kits de herramientas X, administradores de ventanas e incluso aplicaciones simples. Es tan difícil que muchos de los beneficios simplemente no compensan la molestia del cumplimiento.
  4. ^ Raymond, Eric S. (30 de septiembre de 2008). "The Unix Hater's Handbook, Reconsidered". Armed and Dangerous . Consultado el 11 de julio de 2011. ICCCM es tan horrible como describen los autores de [Unix Hater's Handbook], pero eso es difícil de notar en estos días porque los kits de herramientas y los administradores de ventanas modernos hacen un buen trabajo ocultando la fealdad de las aplicaciones.
  5. ^ Gettys, James ; Karlton, Philip L.; McGregor, Scott (10 de diciembre de 1990). "The X Window System, Version 11" (PDF) . Digital Equipment Corporation y Silicon Graphics Computer Systems . p. 36 . Consultado el 11 de julio de 2011 . X11 no permite la lectura de toda la información que pueda haberse almacenado en el servidor (por ejemplo, el protocolo X11 no permite consultar el estado del GC). Esto hace que la modularidad sea algo más difícil de lograr.
  6. ^ "Biblioteca cliente libXi de X.org para XInput" . Consultado el 2 de marzo de 2010 . libXi - biblioteca para la extensión de entrada X
  7. ^ "Extensión XC-MISC" (PDF) . Archivado desde el original (PDF) el 27 de septiembre de 2011. Consultado el 2 de agosto de 2010 .
  8. ^ "Especificación de extensión de seguridad" (PDF) . Archivado desde el original (PDF) el 27 de septiembre de 2011. Consultado el 2 de agosto de 2010 .
  9. ^ Desactivar las solicitudes XFree86-DGA excepto el movimiento relativo del mouse, hasta que Xinput 2 permita eliminarlo todo. X.Org Wiki - Releases/7.6
  10. ^ Anuncio de lanzamiento de abcdef 7.5
  11. ^ Confirmar la eliminación de XPrint

Referencias

  1. Manrique, Daniel (23 de mayo de 2001). "La arquitectura del sistema X Window: descripción general". Descripción general de la arquitectura del sistema X Window HOWTO . The Linux Documentation Project . Consultado el 13 de julio de 2011 .
  2. Maguolo, Filippo (16 de diciembre de 2005). "La arquitectura de X-Window". Lecciones de Linux . Mount Kisco, NY, EE. UU.: John F. Moore . Consultado el 13 de julio de 2011 .
  3. Stevens, W. Richard (1994). "30.5 X Window System" (PDF) . TCP/IP Illustrated (PDF) . Serie de informática profesional de Addison-Wesley. Vol. 1, The Protocols (1.ª ed.). Boston, MA, EE. UU.: Addison-Wesley . 30.5 X Window System. ISBN 978-0-201-63346-7. OCLC  246049781 . Consultado el 13 de julio de 2011 .
  4. IBM Corporation, Centro de soporte técnico internacional (julio de 1994). "1.2 X Concepts" (PDF) . TCP/IP para MVS, VM, OS/2 y DOS: Guía del sistema X Window (PDF) . IBM Redbooks (segunda edición). Research Triangle Park, NC, EE. UU.: IBM . X Concepts . Consultado el 13 de julio de 2011 .
  5. Quercia, Valerie; O'Reilly, Tim (1993) [1988]. Guía del usuario del sistema X Window: para X11 versión 5. Guías definitivas para el sistema X Window. Vol. 3. Sebastopol, CA, EE. UU.: O'Reilly & Assoc. ISBN 978-1-56592-014-9. OCLC  682229836. LCC  QA76.76.W56 Q47 . Consultado el 14 de julio de 2011 . archive.org tiene la edición de 1990.

Lectura adicional

Enlaces externos