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 a la 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 información 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 tal como lo haría localmente.

X utiliza un modelo cliente-servidor . Un programa de 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 la salida gráfica (ventanas) de los programas cliente y mostrándolas al usuario (pantalla). y recibir entradas del usuario (teclado, mouse) y transmitirlas a los programas cliente.

En X, el servidor se ejecuta en la computadora del usuario, mientras que los clientes pueden ejecutarse en máquinas remotas. Esta terminología invierte la noción común de sistemas cliente-servidor, donde el cliente normalmente se ejecuta en la computadora local del usuario y el servidor se ejecuta en la computadora remota. La terminología X Window adopta la perspectiva de que el programa X Window está en el centro de toda actividad, es decir, el programa X Window acepta y responde a solicitudes de aplicaciones y de las entradas del mouse y teclado del usuario. Por lo tanto, las aplicaciones (en computadoras remotas) se ven como clientes del programa servidor X Window.

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

Criterios de diseño

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

El primer principio se modificó durante el diseño de X11 para: No agregar nuevas funciones a menos que conozca alguna aplicación real que las requiera.

Desde entonces, X se ha atenido en gran medida a estos principios. La Fundación X.Org desarrolla la implementación de referencia con miras a ampliar y mejorar la implementación, manteniéndola casi totalmente compatible con el protocolo original de 1987.

Protocolo central

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 devolviendo 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 para que el cliente los utilice 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. Responder: 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, cambia de tamaño o se expone.
  4. Error: el servidor envía un paquete de error si una solicitud no es válida. Dado que las solicitudes están en cola, es posible que los paquetes de error generados por una solicitud no se envíen inmediatamente.

El servidor X proporciona un conjunto de servicios básicos. Los programas cliente realizan funcionalidades más complejas al interactuar 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 del 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 se puede crear 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 del servidor asociado con la ventana recién creada. El cliente puede utilizar posteriormente el identificador para solicitar, por ejemplo, que se dibuje una cadena en la ventana.

Los identificadores son exclusivos del servidor, no sólo del cliente; por ejemplo, no hay dos ventanas que tengan el mismo identificador, incluso si fueron creadas por 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 a través de las solicitudes apropiadas. Los atributos son datos sobre la ventana, como su tamaño, posición, color de fondo, etc. Las propiedades son datos adjuntos a una ventana. A diferencia de los atributos, las propiedades no tienen significado en el nivel del protocolo central 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 de los lenguajes de programación imperativos , 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 diferentes tipos y valores.

Las propiedades se utilizan principalmente para la comunicación entre clientes. Por ejemplo, la propiedad denominada WM_NAMEalmacena el nombre de la ventana; Los administradores de ventanas normalmente leen esta propiedad y muestran 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 programas).

Eventos

Los eventos son paquetes enviados por el servidor al cliente para comunicar que ha sucedido algo que puede interesar al cliente. 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 actualmente seleccionado, se envía un evento al cliente que actualmente está manejando la ventana que contiene la selección.

El contenido de una ventana puede "destruirse" en algunas condiciones (por ejemplo, si la ventana está cubierta). Cada vez que un área de contenido destruido se hace visible, 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 el mouse, 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 previamente manifestó interés en ellos, porque es posible que los clientes solo estén interesados ​​en algunos tipos de eventos. Por ejemplo, un cliente puede estar interesado en eventos relacionados 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 e históricamente se han admitido varios modos diferentes. La mayoría de las aplicaciones modernas utilizan todo color (color de 24 bits, 8 bits para cada uno de 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 en realidad utiliza un único entero sin signo de 32 bits, llamado valor de píxel , para representar un solo color en la mayoría de las operaciones gráficas. Al transferir la intensidad de los colores primarios , se utiliza un número entero de 16 bits para cada componente de color. Existen las siguientes representaciones de colores; Es posible que no todos 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 más estrechamente con el protocolo X. En particular, la mayoría de los clientes utilizan bibliotecas como Xaw , Motif , GTK+ o Qt que a su vez utilizan 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 central de X Window proporciona mecanismos para la comunicación entre clientes: propiedades y eventos de ventana, en particular eventos de mensajes de cliente a cliente. Sin embargo, no especifica ningún protocolo para tales interacciones. En cambio, un conjunto separado 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 mediante selecciones y la interacción de las aplicaciones con el administrador de ventanas. Algunos han considerado esta especificación difícil y confusa; [3] [4] La coherencia de la apariencia y la comunicación de la aplicación generalmente se aborda mediante la programación en un entorno de escritorio determinado.

El protocolo de intercambio entre clientes (ICE) especifica un marco para crear protocolos para la interacción entre clientes, de modo que los programadores puedan crear un protocolo específico sobre él. En particular, el protocolo X Session Management (XSMP) es un protocolo basado en ICE que gobierna la interacción entre aplicaciones con el administrador de sesiones , que es el programa que se encarga de almacenar el estado del escritorio al final de una sesión interactiva y recuperándolo cuando se vuelva 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 (utilizada para transferir datos seleccionándola y arrastrándola en otra ventana) y la convención de aplicación integrada Xembed (que detalla cómo se puede ejecutar una aplicación en una subventana de otra aplicación). ).

Selecciones, búferes de corte y arrastrar y soltar

Los mecanismos de selección, corte de búfer y arrastrar y soltar en el sistema X Window permiten al usuario transferir datos de una ventana a otra. Las selecciones y el búfer de corte se utilizan (normalmente) cuando un usuario selecciona texto u otros datos en una ventana y lo pega en una ventana diferente. 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 diferentes clientes conectados con el mismo servidor X para interactuar. El protocolo central 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 utilizando el envío de eventos generales de cliente a cliente y las propiedades de ventana, que no son específicas de la transferencia de selección.

Los usuarios pueden transferir datos de diferentes 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 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.

Administrador de ventanas

Un administrador 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 el aspecto del sistema X Window en diferentes instalaciones se deben principalmente al uso de diferentes administradores de ventanas o a diferentes configuraciones del administrador 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 iconos, 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 administrador de ventanas funciona como un cliente como cualquier otro cliente. La posición inicial y los bordes decorativos alrededor de las ventanas los maneja el administrador 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 determinada y que, en su lugar, se le envíe un evento;
  2. una aplicación puede solicitar cambiar el padre de una ventana.

El administrador de ventanas utiliza la primera solicitud para interceptar cualquier solicitud de mapeo de ventanas de nivel superior (hijas de la ventana raíz). Cada vez 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 administrador de ventanas. La mayoría de los administradores de ventanas reparan la ventana: crean una ventana de nivel superior más grande (llamada ventana de marco) y reparan la ventana original como hija de ella. Gráficamente, esto corresponde a colocar la ventana original dentro del marco de la ventana. El espacio del marco de la ventana 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 gestiona los clics del mouse 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 en el borde o en la barra de título.

El administrador de ventanas también maneja íconos y elementos visuales relacionados de la interfaz gráfica de usuario. Los iconos no existen en el nivel del protocolo central de X Window. Son implementados por el administrador de ventanas. Por ejemplo, siempre que es necesario "iconificar" una ventana, el administrador de ventanas FVWM desasigna 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 administrador de ventanas: algunos administradores de ventanas como wm2 no implementan iconos en absoluto.

administrador de sesión

A grandes rasgos, 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 administran estas ventanas y la información que permite a estas aplicaciones restaurar la condición de sus ventanas administradas si es necesario. Un programa conocido como administrador de sesiones X guarda y restaura el estado de las sesiones.

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

El sistema X Window incluye un administrador de sesión predeterminado llamado xsm. Los desarrolladores han escrito otros administradores de sesiones para sistemas de escritorio específicos. Los ejemplos principales incluyen ksmserver, xfce4-sessiony 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. De manera más general, 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 envía con XDM como administrador de pantalla básico suministrado. Otros administradores de pantalla incluyen GDM ( GNOME ), KDM / SDDM ( KDE ), WDM (usando el conjunto de widgets WINGs usado en Window Maker ) y entrada (usando la arquitectura usada 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 (década de 1980) y Tk . OLIT y XView funcionan como conjuntos de herramientas básicos para el entorno de escritorio OpenWindows heredado de Sun.

Motif proporciona el conjunto de herramientas básico para Common Desktop Environment (CDE), el entorno de escritorio utilizado en sistemas Unix comerciales como Solaris , AIX y HP-UX . (Solaris 10 incluye CDE y 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-actual).

Extensiones

Scheifler y Gettys diseñaron el servidor X para que fuera simple pero extensible. Como tal, 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 funciones de extensión a través de bibliotecas de extensión. 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 en el lado del cliente como en el del servidor a partir de descripciones de protocolo XML.

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

Extensiones obsoletas

Ver también

Notas

  1. ^ "Xorg, conexiones de red". Páginas del manual X11R7.7. Fundación X.Org . Consultado el 23 de diciembre de 2023 .
  2. ^ Modelo cliente-servidor
    • IBM 1994, páginas 2-11
    • Maguolo 2005
    • Manrique 2001
    • Stevens 1994, páginas 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.). El manual de los que odian a UNIX (PDF) . San Mateo, CA, EE.UU.: Libros IDG . pag. 126 El desastre de X-Windows. ISBN 978-1-56884-203-5. OCLC  30681401 . Consultado el 11 de julio de 2011 . La ICCCM es increíblemente densa, hay que seguirla al pie de la letra y todavía no funciona. El cumplimiento de ICCCM es una de las pruebas más complejas a la hora de implementar kits de herramientas X, administradores de ventanas e incluso aplicaciones simples. Es tan difícil que muchos de los beneficios simplemente no valen la molestia de cumplirlos.
  4. ^ Raymond, Eric S. (30 de septiembre de 2008). "Reconsideración del manual del enemigo de Unix". Armado y peligroso . Consultado el 11 de julio de 2011 . ICCCM es tan horrible como lo describen los autores [del Manual de los enemigos de Unix], pero eso es difícil de notar hoy en día porque los kits de herramientas y administradores de ventanas modernos hacen un trabajo bastante bueno al ocultar la fealdad de las aplicaciones.
  5. ^ Gettys, James ; Karlton, Philip L.; McGregor, Scott (10 de diciembre de 1990). "El sistema X Window, versión 11" (PDF) . Digital Equipment Corporation y Silicon Graphics Computer Systems . pag. 36 . Consultado el 11 de julio de 2011 . X11 no permite volver a leer 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 X.org libXi 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. ^ Deshabilite las solicitudes XFree86-DGA excepto el movimiento relativo del mouse, hasta que Xinput 2 permita eliminarlo todo. X.Org Wiki - Lanzamientos/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 CÓMO . El proyecto de documentación de Linux . 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, Nueva York, Estados Unidos: John F. Moore . Consultado el 13 de julio de 2011 .
  3. Stevens, W. Richard (1994). "Sistema de ventanas 30,5 X" (PDF) . TCP/IP ilustrado (PDF) . Serie de informática profesional Addison-Wesley. vol. 1, Los Protocolos (1 ed.). Boston, MA, Estados Unidos: Addison-Wesley . Sistema de Ventana 30.5 X. ISBN 978-0-201-63346-7. OCLC  246049781 . Consultado el 13 de julio de 2011 .
  4. IBM Corporation, Centro Internacional de Soporte Técnico (julio de 1994). "1.2 X Conceptos" (PDF) . TCP/IP para MVS, VM, OS/2 y DOS: Guía del sistema X Window (PDF) . Libros rojos de IBM (Segunda ed.). Research Triangle Park, Carolina del Norte, Estados Unidos: IBM . X Conceptos . 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 del 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.

Otras lecturas

enlaces externos