Una propiedad permite asociar información con una ventana. Sirven como mecanismo de comunicación entre clientes. Los clientes pueden almacenar un valor (XChangeProperty) y leerlo (XGetWindowProperty). Los datos almacenados en una propiedad permanecen hasta que se destruye la ventana asociada o se borran explicitamente.
Cada propiedad queda identificada de forma unívoca por un nombre y una ventana. Sin embargo, para acceder a una propiedad no se usa el nombre sino un identificador entero llamado átomo. Mediante XInternAtom el cliente pide al servidor que asigne un átomo a un nombre. Si el nombre ya tiene asociado un átomo por una llamada anterior, XInternAtom devuelve dicho valor. La asociación entre nombres y átomos es permanente.
Existen propiedades predefinidas destinadas a la comunicación con el gestor de ventanas. Los valores de los átomos para estas propiedades son conocidos (definidos en <X11/Xatom.h>) por lo que se usan directamente. Cada propiedad tiene un tipo que es a su vez un átomo. Hay algunos tipos predefinidos como XA_INTEGER.
Cuando una propiedad cambia de valor o se destruye, el servidor manda el evento PropertyNotify a todos los clientes que lo hayan seleccionado.
Método de comunicación basado en propiedades y eventos. Orientado principalmente a la implementación de mecanismos de copy-and-paste de texto o gráficos entre aplicaciones. Permite que en la transferencia el remitente transforme los datos según ha especificado el destinatario. Hay dos papeles en esta comunicación:
Los pasos típicos de una comunicación usando selecciones son:
Existen dos selecciones predefinidas: XA_PRIMARY (la que se usa normalmente) y XA_SECONDARY.
Modo sencillo de comunicación basado en propiedades orientado también al mecanismo de copy-and-paste. Es más limitado que las selecciones, aunque bastante adecuado para editores ya que permite manejar una pila de buffers para mantener una "historia" de los datos seleccionados.
Los cut buffers son 8 propiedades de la ventana raíz (desde XA_CUT_BUFFER0 a XA_CUT_BUFFER7). Un cliente puede leer de un buffer (XFetchBuffer), escribir en un buffer (XStoreBuffer) y rotar los buffers (XRotateWindowProperties). Para usar adecuadamente este mecanismo los clientes tienen que estar de acuerdo en el formato de los datos.
El gestor de ventanas selecciona la máscara SubstructureRedirectMask sobre la ventana raíz. De esta forma todas las peticiones sobre las ventanas hijas de la raíz (excepto aquéllas con override_redirect) que sean de interés para el gestor son interpretadas por éste.
Existe un conjunto de propiedades predefinidas que permiten a un cliente expresar sus preferencias al gestor de ventanas. Algunas de las más usadas son:
Existen funciones de conveniencia (por ejemplo, XSetWMName) para cargar valores en estas propiedades.
Volver al índice ; Próximo: Usuario de X ; Previo: Recursos