Tema I Introducción a X-Window System (14 de marzo de 2011) Programación en Entornos Interactivos. 14 de marzo de 2011 Dpto. Lenguajes y Sistemas Informáticos Universidad de Alicante 1/1 Resumen Visión general de X-Window System. Uso de X-Window System. Configuración a varios niveles de X-Window System. Ejecución de aplicaciones en X-Window System. 2/1 Preliminares. • Desarrollado en el MIT con ayuda de DEC. • Las versiones más importantes: X10 y X11 • Adoptado como estándar por una serie de vendedores Hardware y Software. • Disponible en la mayorı́a de sistemas Unix. • No define un estilo de interfaz estándar. 3/1 Modelo Cliente-Servidor • La arquitectura de X-Window System se basa en el modelo Cliente-Servidor. • Existe un único proceso servidor que se encarga de gestionar todos los dispositivos de entrada y salida. • Cualquier aplicación que use las facilidades proporcionadas por el servidor X, se denomina cliente. • Los clientes se comunican con el servidor de manera ası́ncrona a través de una red. Esta comunicación puede ser N a N. • Esto permite que el servidor y un cliente puedan estar ejecutándose en distintas máquinas conectadas en red. • Lo primero que debe hacer un cliente es abrir una conexión con el servidor. Desde ese momento puede usar cualquier screen que sea controlada por el servidor. 4/1 Conceptos Display y Screen • Denominaremos display a un único proceso servidor de X. • Este display atiende, normalmente, a un ratón, un teclado y un monitor. • Denominaremos screen al monitor en el que se realiza la salida gráfica. • Un display X puede soportar diversos screens. • Antiguamente se solı́a usar los términos de display y screen intercambiadamente. 5/1 Peticiones -Requests• Cualquier petición de servicio que quiera llevar a cabo un cliente es solicitada por éste al servidor -crear y destruir ventanas, realizar salida gráfica, etc. . . -. • El Servidor X se ejecuta de manera ası́ncrona∗ respecto a los clientes, y éstos respecto al servidor. • Las peticiones no tienen porqué ser atendidas por el servidor en el orden en el que llegaron, tampoco de manera inmediata. Estas peticiones van a parar a una cola. 6/1 Ventanas (I) • Constituyen uno de los conceptos clave en X. Son un área rectangular de la pantalla. • No tienen tı́tulo, barras de desplazamiento (scroll) u otros adornos, solo un borde delimitador. • Se pueden combinar varias ventanas para crear tı́tulos, barras de scroll, etc. . . • Una ventana se crea a petición de un cliente, pero puede ser manipulada por peticiones de cualquier otro. • Las ventanas se organizan jerárquicamente (toda ventana tiene un ascendente), siendo la ventana principal la que se denomina ventana raı́z (root window), la cual no tiene ascendente. 7/1 Ventanas (II) • El servidor X crea una ventana raı́z por cada screen que controla. Esta ventana: • Ocupa toda la pantalla. • No puede ser movida o cambiar de tamaño • Las ventanas pueden solaparse. • Cada ventana tiene su propio sistema de coordenadas que comienza en la esquina superior izquierda. 8/1 Contenido de una Ventana • Una ventana no es visible, y tampoco sus contenidos, hasta que después de ser creada por el servidor, es ‘map-eada’. • Una ventana puede estar ‘mapeada’ y seguir sin ser visible por: • Estar oculta completamente por otras ventanas. • Algún ascendente no está mapeado. • La ventana está totalmente “recortada” por un ascendente. • El mantenimiento del contenido de una ventana puede ser responsabilidad del cliente o del servidor (expose, retained-raster, save-under). 9/1 Comunicación Cliente - Servidor • Ya hemos visto como el cliente se comunica con el servidor: enviándole peticiones. • El servidor se comunica con los clientes por medio de eventos, bien predefinidos, bien definidos por el propio cliente. • Los eventos se envı́an a los clientes colocándolos en una cola. • La mayorı́a de aplicaciones X son dirigidas por eventos –event-driven–. 10 / 1 Gestores de Ventanas • X no proporciona ningún gestor de ventanas –Window-manager – de forma estándar, pero sı́ facilidades para que el usuario utilice el que quiera. • Un gestor de ventanas es una aplicación “cliente X” como otro cualquiera. • Hay disponible una gran variedad de gestores de ventanas para X: • • • • MWM, TWM, VTWM OLVWM, FVWM, FVWM2, FVWM95 AWM, AfterStep, WindowMaker Kwm, sawfish, metacity (mutter), enlightenment , compiz , etc. . . • Un “cliente X” deberı́a poder funcionar de manera apropiada independientemente del gestor de ventanas usado, e incluso sin ninguno de ellos. 11 / 1 El API de X • El interface con X de más bajo nivel lo proporciona Xlib1 , y está disponible en C. • Por encima de Xlib/xcb existen los llamados Toolkits, más sencillos de utilizar (InterViews, Andrew, XForms, Qt, Gtk/Gtkmm, etc. . . ). • Existe un toolkit estándar: X-Toolkit, que consta de dos capas, Xt Intrinsics y una serie de componentes de interfaz de usuario que genéricamente se llaman Widgets: Aplicación Widget Set XtIntrinsics Qt Gtk+/Gtkmm Xlib / Xcb Conexión por red Servidor X 1 Xcb: xcb.freedesktop.org. 12 / 1 Uso de X-Window (I) • Debemos iniciar la sesión -poner en marcha el servidor X - con: startx, o openwin, o xinit. Incluso podrı́amos probar con X [-probeonly 2>err]. • Ejecución remota: variable export DISPLAY = host:display.screen. También disponible como opción “-display host:display.screen” o también con la opción -X de ssh. • Para gráficos remotos es necesario dar permisos a las máquinas que mostrarán gráficos en la nuestra: xhost + ó –. • Las siguientes combinaciones de teclas son especiales para el servidor X: • Control+Alt++ • Control+Alt+– • Control+Alt+BackSpace 13 / 1 Uso de X-Window (II) • Debemos elegir el gestor de ventanas —Window Manager— que queramos ejecutar en cada ocasión, ya que X no proporciona ninguno: fvwm, windowmaker, sawfish, twm, kwm, metacity, etc. . . • Existen los llamados gestores de ventanas virtuales, los cuales proporcionan un ‘escritorio virtual.’ 14 / 1 Trabajo con Ventanas (I) • Existe una ventana, antecesora de todas, llamada ventana raı́z —Root Window—. • La apariencia de una ventana (bordes, tı́tulo, botones, comportamiento, etc. . . ) depende del gestor de ventanas utilizado. • Gestores de ventanas basados en ‘embaldosado’ (tiling). 15 / 1 Trabajo con Ventanas (II) • Tenemos asociados menús a las ventanas, incluida la ventana root, la cual puede tener un menú asociado a cada botón del ratón. • Los xterm presentan 3 menús pulsando Control+botón del ratón: • Control+botón 1: main optios • Control+botón 2: VT options • Control+botón 3: VT Fonts. • Existen otros emuladores de terminal como kterm y gnome-terminal o ROXTerm. 16 / 1 Configuración de X-Window System (I) • La configuración más básica, relaciona hardware con software, la realizamos en el fichero xorg.conf 2 , el cual suele estar en ‘/etc/X11’. • La configuración de distintas opciones de las aplicaciones se realiza para cada usuario en el fichero .Xdefaults o .Xresources, y globalmente, en un fichero, por cada aplicación, situado en /usr/lib/X11/app-defaults. • El fichero .Xdefaults o .Xresources se lee por el servidor X al arrancar éste, y se puede releer con el comando “xrdb [-merge] /̃.Xdefaults” o “xrdb [-merge] /̃.Xresources”. 2 Llamado XF86Config en la implementación de XFree86. 17 / 1 Configuración de X-Window System (II) • En .xinitrc o .xsession indicamos lo que queremos ejecutar al arrancar el servidor X, incluido el manejador de ventanas. La versión general de éste fichero está en /usr/X11R6/lib/X11/xinit/xinitrc. • Fichero especı́fico del manejador de ventanas elegido -.fvwmrc, .fvwm2rc, .fvwm2rc95, etc. . . -. • Algunas órdenes de configuración: xset, xsetroot, xmodmap, xev, xlsfonts, xfontsel. 18 / 1 Ejecución de Aplicaciones en X-Window (I) • Existen dos tipos de aplicaciones: clientes -window smart- y no clientes -ejecutadas en un emulador de terminal-. • Las aplicaciones se pueden ejecutar desde el intérprete de órdenes o eligiendo una opción desde un menú. • Algunos clientes: xterm, rxvt, xclock, xload, xcalc, xkill, etc. . . • La mayorı́a de clientes aceptan una serie de opciones estándar al iniciarlos: -bg color, -fg color, -fn font (/usr/lib/X11/fonts). • La ejecución de no clientes debe hacerse desde un xterm : “xterm -e top”. 19 / 1 Ejecución de Aplicaciones en X-Window (II) • Paro ‘apropiado’ de clientes, a veces, mediante opción ‘close’ del menú local, o de la opción que tengan para ello. • Paro ‘apropiado’ de no clientes, de la opción que tengan para ello. • Otros modos de ‘paro’: Control+c, Control+d. • Paso a 2o plano: Control+z, y uso de los comandos: jobs ([1]+ Running xterm &), bg %num-trabajo, fg %num-trabajo. • Una mayorı́a de aplicaciones de X11 permiten la copia de información con el ratón. Pinchando y arrastrando con el botón 1 se copia a un portapapeles y con el 2 se pega, en la misma aplicación o en otra. 20 / 1