• No se han encontrado resultados

UNIX y X Window

N/A
N/A
Protected

Academic year: 2018

Share "UNIX y X Window"

Copied!
164
0
0

Texto completo

(1)

UNIVERSIDAD AUTONOMA

METROPOLITANA

Unidad Iztapalapa

Proyecto Terminal

División: CBI

Carrera: Licenciatura en Computación

Asesor:

Ing. Jorge Lozano Moreno

(2)

Constancia

de

finalización

de

Proyecto

Terminal

Por medio de este conducto hago de su conocimiento que Miguel Angel Uribe Becerra, alumno de la

Lic. en Computación en la Universidad Autónoma Metropolitana, finalizó bajo mi asesoría su Proyecto Terminal, requisito indispensable para la titulación, el cual consistió en lo siguiente:

Se diseñó una Herramienta CASE sobre plataforma UNIX y X Window System que permite diseñar el

“front end” para una aplicación. Una vez efectuado el diseño, la herramienta es capaz de generar su

código en lenguaje C. Esta herramienta CASE fue desarrollada sobre el administrador de ventanas

OSFhlotif, para el sistema operativo Solaris 2.3 en una estación de trabajo Sun SPARCStation 2.

La finalidad de la herramienta es brindar a los programadores un CASE que facilite la creación de sistemas bajo X1 l . El programador, dentro de una úrea de diseño, se encargará únicamente de colocar las ventanas, botones, menús, cuadros de texto, cuadros de dialogo, etc. a través de la barra de herramientas que proporciona el CASE y finalmente seleccionará la generación de código, con lo cual creará un archivo que contendrá el código fuente en C del “fiont end”, listo para ser modificado al gusto del

programador, o para enlazarlo a órdenes de manejo de bases de datos, comunicaciones, etc.

Considero de gran utilidad a esta herramienta, pues el programador deja de preocuparse del diseño de widgets dentro del desarrollo de sistemas, además de que la experiencia de desarrollo de este tipo de herramientas en México es casi inexistente, aun cuando en otros países es un recurso habitual para todo programador y desarrollador de sistemas.

El presente trabajo proporciona una herramienta con la cual los programadores podrán llagar a utilizar el

sistema X Window bajo plataformas UNIX para desarrollar interfases gráficas de usuario. Se introduce

con detalle la programación X Window, las herramientas Xt Intrinsics y la herramienta en propiedad OSF/Motif. Además, se proporciona los componentes y caracteristicas necesarios acerca del sistema operativo UNIX con la finalidad de apoyar al desarrollador en la construcción de interfases gráficas.

Sin más por el momento, me despido de usted, esperando le sea útil el presente trabajo.

Atentamente

(3)

Contenido

Contenido

Capítulo 1

.

Introducción al Sistema

El Sistema

X

Window ... 1 Historia y necesidad ... 2 Dispositivos fisicos (Hardware)

...

Software ...

Otros sistemas de ventanas ...

Arquitectura Cliente/Servidor

...

Historia

y

objetivos ...

Implementaciones ...

Analogías

y

diferencias

...

Puntos clave ... ¿ En qué consiste el sistema X Window ?

...

El sistema

X

Window

...

Hardware ...

Conexiones ...

Software ...

Interfases gráficas de usuario

...

Arquitectura Cliente/Servidor

...

Capítulo

2

.

El programa

“Hola Mundo

Funciones

X

Window ...

Examen del programa “Hola Mundo”

...

Inclusión de los archivos de cabecera

...

Declaraciones ...

Establecimiento de la conexión

...

Creación de una ventana

...

Notificación a las demás aplicaciones ... Creación de

un

contexto gráfico ...

Selección del tipo de suceso de entrada a procesar

...

Visualización de ventanas

...

Terminación del programa

...

Código fuente del programa “Hola Mundo”

...

Puntos clave ...

El

primer programa

...

Funciones de un programa X Window

...

Ejecución del bucle principal

...

Modificaciones posibles ...

Modificaciones posibles

...

(4)

Contenido

Capítulo

3

.

Conceptos básicos y terminología

El protocolo X ... 29

Peticiones y formato de petlclon

...

30

Respuestas y formato de respuestas

...

31

Formato de Suceso

...

32

Archivos de cabecera ... 33

Nomenclatura Xlib

y

convenios para los argumentos

...

34

Recursos

...

35

Contextos gráficos

...

36

Tipos de letra (Fonts) ... 37

Mapas de colores (Colormaps)

...

38

Sucesos ... 38

Tipos de sucesos ... 39

Estructura de sucesos

...

45

Máscaras de sucesos ... 46

Puntos clave ... 48

Protocolo X ... 48

. . .

Errores

y

formato de errores

...

31

Archivos de cabecera estándar

...

33

Ventanas ... 35

Cursores ... 37

Mapas de puntos (pixmap)

...

38

~ Peticiones ... Respuestas ... Errores ... Formato de sucesos ... Archivos de cabecera estándar

...

Recursos ... Ventanas ... Nomenclatura Xlib y convenios para los argumentos

...

48 48 48 48 48 49 49 49 Contextos gráficos ... 49

Tipos de letra ... 49

Cursores ... 49

Mapas de colores ... 49

Mapas de puntos ... 50

Tipos de Sucesos ... 50

Sucesos ... 50

Capítulo

4

.

Ventanas y técnicas de trabajo con ventanas

Conceptos básicos ...

51

Terminología básica ...

53

Características propias de las ventanas

...

60

Atributos de las ventanas

...

61

Ciclo de vida de las ventanas ... 64

Analogía del escritorio

...

52

Características de las ventanas ... 59

(5)

Contenido

(6)

Contenido

Ejemplo 2: Revisión del programa Hola Mundo

...

93

Paso 2: Incluir un archivo de cabecera público

...

93

Paso 3: Inicializar el programa y la caja de herramientas

...

93

Paso 5: Regisbar llamadas de retorno. acciones y gestores de sucesos

...

94

InicializaciÓn de la caja de herramientas y h c i o n e s relacionadas ... 95

Inicializaclon por omlslón ... 95

InicializaciÓn de 10s elementos internos de la caja de herramientas

...

96

Manejo de la visualización ... 97

Creación del widget Shell (de interfaz) inicial

...

98

Salida de las aplicaciones ... 99

Widgets ... 99

Ciclo de vida del widget ... 100

Recursos ... 103

Orden de especificación de recursos ... 103

Convenios de nomenclatura de los recursos ... 104

Caracteres comodines en la especificación de recursos

...

104

. .

. .

Los widgets Shell ... 103

Archivos de recursos ... 106

Recursos del widget Core (núcleo) ... 106

Llamadas de retorno ... 109

Recursos de 10s widgets Composite (compuestos)

...

108

Codificación de los procedimientos de llamadas de retorno

...

109

Adición y eliminación de llamadas de retorno ... 109

Ejemplo 3: Un programa que utiliza el widget RowColumn ... 111

Ejemplo 4: Un programa que utiliza varios widgets

...

113

Ejemplo 5 : Programa con menú de ayuda dinámico

...

116

puntos clave ... 122

Programadores de la caja de herramientas ... 122

Arbol de widgets ... 122

Widgets dinámicos (popus) ... 115

Especificación de recursos de todos los ejemplos

...

120

El papel de la caja de herramientas

...

122

Clases de widgets ... 122

Las aplicaciones Motif ... 122

Recursos ... 123

Ciclo de vida de los widgets ... 122

Llamadas de retorno ... 123

Widgets dinámicos ... 123

Capítulo 6

.

Introducción al sistema UNIX

Diferentes versiones de Unix ... 124

Conceptos elementales sobre sistemas operativos

...

124

Sistemas de un solo usuario ... 124

Sistemas de varios usuarios ... 125

Sistemas de multiproceso ... 125

Capitulo 7. Principios

básicos

Sistema de almacenamiento ... 126

Órdenes ... 126

Archivos temporales ... 127

(7)

Contenido

...

Usuarios 128

Administración ... 128

Dispositivos ... 130

Otros directorios y archivos ... 130

Capítulo 8

.

Encendido y apagado del sistema

Encendido ... 131

Apagado ... 132

Capítulo

9

.

Conexión desconexión de usuarios

Conexión (logging-in) ... 134

Desconexión (logging-out) ... 135

Capítulo IO

.

Shell

Shell ... 136

Capítulo

II

.

Control de usuarios en el sistema

Creación de un usuario ... 137

Eliminación de un usuario ... 137

Grupos ... 138

Capítulo

I2

.

Dispositivos

Agregar un dispositivo a Unix ... 139

Dispositivos estructurados por bloques (sistemas de archivos)

...

140

Dispositivos crudos y estructurados por bloques

...

140

Dispositivos de caracteres ... 140

Capítulo

I3

.

Sistemas de archivos y

su

mantenimiento

Respaldo y recuperación de discos ... 142

Las órdenes dump y resto ... 142

La orden tar ... 143

La orden dd ... 143

Transferencia de archivos entre sistemas

...

143

La orden du ... 144

La orden quot ... 144

La orden df ... 144

El bit SUID (super user id) ... 144

El bit pegajoso (sticky bit) ... 145

Sistema de archivos ... 145

Estructura del disco ... 145

Directorios ... 145

Ocupación y uso del sistema de almacenamiento

...

144

Bits especiales de acceso a los archivos ... 144

(8)

Contenido

Dispositivos de disco por bloques y crudos

...

146

Otras órdenes de mantenimiento del sistema de archivos

...

146

Las órdenes mount y m o u n t ... 146

... Banco de buffers 146

Capitulo 14

.

Consideraciones de rendimiento

Órdenes estándares ... 148

Orden iostat ... 148

Orden sa ... 148

Orden ac ... 149

Consideraciones generales del rendimiento del disco ... 149

Capítulo

15

.

Seguridad

en los

sistemas Unix

Permisos sobre archivos ... 150

Acceso a los dispositivos ... 150

Otros puntos ... 151

Capitulo 16

.

Algunas órdenes importantes para

los

administradores

Orden make ... 152

Sistema de control de código fuente ... 152

awk ... 153

(9)

Introducción

Introducción

X Window crea ventanas. Se trata de la herramienta de software para el desarrollo de interfases gráficas

de usuario (GUIs) sobre estaciones de trabajo. X Window es para los sistemas UNM lo que es Windows

para los sistemas MS-DOS, pero con una diferencia importante: los sistemas X Window son un estándar

aceptado por la industria para los sistemas de ventanas en UNE. Esta estandarización tiene

consecuencias de gran alcance: las interfases gráficas de usuario desarrolladas para una computadora se pueden ejecutar en computadoras completamente diferentes. Los sistemas X Window proporcionan una salida común para estaciones de trabajo, grandes computadoras, minicomputadoras y microcomputadoras conectadas en red.

La bajada continua en los precios de las microcomputadoras ha colocado a los sistemas X Window al

alcance de literalmente millones de usuarios de computadoras. Todos los programas que aparecen en este

trabajo se han desarrollado y probado en una estación de trabajo Sun SPARCStation. El sistema operativo

usado, basado en el UNESystem V, y desarrollado por el líder de la industria UNIX sobre computadoras

personales, fue el SCO Open Desktop personal System, con el sistema de desarrollo Open Desktop Development System. El software de desarrollo incluye X Window, con la herramienta OSFMotif y el lenguaje de programación C. El uso de sistemas de desarrollo alternativos como el recientemente lanzado entorno multitarea DESQviewK de Quarterdeck Office System puede reducir los requisitos de hardware.

Las aplicaciones X Window se pueden ejecutar en PC con procesadores 486 y superiores.

Este trabajo está dividido en dos secciones. En la primera sección, compuesta por cinco capítulos, se introduce con detalle la programación X Window, las herramientas Xt Intrinsics y la herramienta en

propiedad OSFMotif. Se incluyen varios programas que son detalladamente analizados.

La segunda sección incluye 11 capítulos que están dedicados al Sistema Operativo. El sistema UNEha

(10)

Introduccidn al Sistema X Window

Capítulo 1

Introducción

al

sistema X

Window

Bienvenidos al sistema X Window (también llamado X Window y en otras ocasiones, aunque

erróneamente X Windows). En los últimos años este sistema se ha convertido en un estándar para el desarrollo de interfases gráficas de usuario en estaciones de trabajo (graphics user interfaces on

workstations). Una interfaz gráfka de usuario (GUI) se puede definir brevemente como una interfaz computadordusúario que se ejecuta en modo gráfico. Las estaciones de trabajo son computadoras de

sobremesa con capacidades gráficas y de computación más potentes que las microcomputadoras de gama

alta.

Debido a la independencia de dispositivo de X Window, las interfases gráficas de usuario desarrolladas

sobre una computadora, se pueden ejecutar en distintas computadoras. Los sistemas X Window

fi-ecuentemente proporcionan una salida común para estaciones de trabajo, grandes sistemas

(mainffames), minicomputadoras y microcomputadoras conectados en red. Antes de examinar

atentamente los sistemas X Window, consideremos la necesidad de los sistemas de ventanas y de las interfases gráficas de usuario (GUls, abreviatura de Graphical User Interface).

Cada avance apreciable en el hardware de las computadoras ha significado un progreso significativo en la forma en la que los usuarios finales y los especialistas interactúan con las computadoras, redundando todo

ello en una forma de trabajo más cómoda y productiva.

Algunas personas aún recuerdan los años de las tarjetas perforadas, años cincuenta, sesenta y principios de los setenta. En aquella época, la mayor parte de las personas no cualificadas se veían forzadas a elegir entre dos opciones poco satisfactorias: usar solamente unos pocos programas de computadora o depender

de especialistas que les ayudasen a acceder a los datos que necesitaban. Los programadores se

consideraban afortunados si podían probar un programa tres o cuatro veces al día. Las salidas estándar constaban de líneas variadas en las que tan sólo había números y letras, todas en mayúscula.

Gradualmente, los terminales de rayos catódicos (CRT) reemplazaron a las tarjetas perforadas y a las lectoras de tarjetas. Grupos cada vez mayores de usuarios utilizaban los terminales para visualizar la información contenida en las grandes computadoras centrales situadas en la habitación contigua o en cualquier punto del continente. Los programadores podían desarrollar programas y probarlos de forma

interactiva, dialogando con la computadora. Las utilidades de salida avanzaron también. El poder

visualizar los resultados no seguía significando el tener que ir hasta la impresora. La mayoría de los terminales ofiecían nuevas posibilidades como, por ejemplo, las letras minúsculas. Pero como decía Henry Ford, con un terminal CRT estándar se puede tener cualquier tipo de letra siempre y cuando sea de "Computadoraf'. Incluso hoy en día, muchos de los terminales conectados a grandes computadoras no pueden generar graficos.

Los efectos de la revolución de las microcomputadoras nos rodean. ¿Quién no ha visto deslumbrantes pantallas y llamativos folletos impresos con computadoras relativamente baratas? Los éxitos de esta revolución han creado nuevos problemas. Durante mucho tiempo los usuarios de las microcomputadoras compatibles IBM sufrieron la dificultad de la transferencia de archivos de un formato a otro. Los conocimientos adquiridos en el manejo de la función de impresión de las hojas de cálculo han sido, hasta

(11)

Introduccidn al Sistema X Window

En realidad, cambiar de procesador de texto significaba tener que aprender de nuevo los modos de impresión.

Los diseñadores de software también han sufrido las consecuencias de los problemas de compatibilidad. El software gráfico es dificil de escribir y de depurar. Un programa que dibuje una línea en la pantalla debe manejar dos dispositivos separados pero relacionados: el controlador de video y el monitor. Un programa escrito para un estándar gráfico compatible IBM, no funcionará correctamente si se usan otros estándares gráficos en la misma computadora. Transformar programas gráficos para ejecutarlos en un Macintosh, una estación de trabajo o una gran computadora, genera más problemas que resultados.

Las microcomputadoras compatibles IBM más antiguas usan gráficos Hércules (monocromo) o CGA

(color). En 1987, IBM introdujo la línea de computadoras Psi2 equipadas con gráficos VGA, que en gran medida han ido reemplazando a Hércules, CGA y a otro estándar gráfico de IBM llamado EGA. Desde principios de los noventa VGA se ha convertido en el estándar gráfico de base para los compatibles IBM.

La mayor resolución disponible con VGA es de 640 x 480, una pantalla se divide en 640 líneas horizontales de 480 puntos cada una, dando a un punto direccionable el nombre depixel. Son comunes los

sistemas gráficos capaces de manejar una resolución de 800

x

600 puntos, siendo conocidos

fi-ecuentemente como Super VGA, o VGA Extendida (Extended VGA) pero ni la nomenclatura ni las

especificaciones técnicas son estándar. Existen dos estándares distintos para los sistemas gráficos de 1024

x 768 puntos, usados normalmente en el diseño asistido por computadora y en los sistemas de

autoedición. Al escribir esto existe una barrera en el precio para una resolución superior a la de 1024 x 768. Los sistemas con mayor resolución son relativamente caros y no son estándar. Por otro lado, la

resolución típica en una estación de trabajo es de 1 152 x 900, siendo normales resoluciones mayores.

Los diseñadores de los programas gráficos tradicionales están siempre contando puntos (pixels), miles de puntos, y además deben estar familiarizados con códigos arbitrarios para los patrones y colores. Transportar una aplicación gráfica de una computadora a otra puede durar meses. Lo mismo que el sistema de video Beta perdió su participación en el mercado frente al sistema VHS tecnológicamente inferior, las microcomputadoras Rainbow de Digital Equipment Corporation y las Professional de Texas Instruments no pudieron competir con los compatibles IBM, en buena parte debido a los diferentes estándares gráficos. El sistema X Window se dirige hacia la resolución de estos problemas.

El sistema X Window

El sistema X Window se ha convertido en un estándar de los sistemas de ventanas independiente del hardware y de los sistemas operativos. Es una utilidad para desarrollar sistemas gráficos de alta

resolución tanto en monocromo como en color. En la Figura 1-1 se muestra un esquema de este sistema.

Historia y necesidad

En 1984, el Laboratory for Computer Science del Instituto Tecnológico de Massachusetts (MIT) en Cambridge, Massachusetts, inició el proyecto Athena encabezado por Robert Scheifer y Jim Gettys. Como otras muchas organizaciones, tanto mercantiles como publicas, el MIT utiliza gran variedad de CPUs, terminales, y sistemas operativos. El proyecto Athena tenia una meta muy concreta, los programas deberían estar disponibles interactivamente para los usuarios sobre cualquier estación, en cualquier lugar del campus. El punto de partida fue el sistema de ventanas de la Universidad de Stanford denominado W.

Inicialmente el sistema X Window estuvo disponible para los diseñadores en el año 1986, con la versión 10.4. Los grandes fabricantes de computadoras. incluyendo a Digital Equipment Corporation (DEC),

International Busiess Machines (IBM), American Telephone and Telegraph (AT&T), Sun Microsystems,

(12)

Introducción al Sistema X Window

Window se ha actualizado continuamente, y en este momento la versión más reciente es la

x1

1R5 (Versión 11 edición 5).

sistema en

tower

( U C P , disco

Cinta)

Ventam LOGIN

Estacmn de trabajo &&a

I

R3tIj.n

I

-

Teclado

E-

l

I

1

I

computadora

x

Computadora Y Conputadora Z computadora

w

Figura 1-1. Sistema X Window

Dispositivos fisicos

(Hardware)

Los sistemas X Window pueden ejecutarse sobre distintos dispositivos fisicos. La unidad de salida es una pantalla gráfica, cuya resolución al menos es la de VGA. Los dispositivos de entrada más comunes son el teclado y el ratón. Otras unidades de entrada son la bola de tracción, la tableta digitalizadora y la pantalla táctil.

Estaciones de trabajo

La inmensa mayoría de los fabricantes de estaciones de trabajo soportan los sistemas X Window. La

importancia de este mercado es tal que hasta diciembre de 1991 una sola compaiGa, Sun Microsystem,

había vendido casi medio millón de estaciones de trabajo. La continua bajada de los precios de las estaciones de trabajo y el aumento de las necesidades de computación de los grupos y de los individuos significó una ampliación del ámbito de uso de las estaciones de trabajo y, por consiguiente, de los

sistemas X Window.

Terminales X

La mayoría de las organizaciones no pueden permitirse el lujo de gastar 5.000 dólares o más en equipar cada despacho con una estación de trabajo completa. Una alternativa cada vez más utilizada es un Terminal X, que es un terminal gráfico s i n disco en el que se ejecuta un Único programa, el programa

(13)

Introducción al Sistema X Window

La rápida expansión del mercado X Window ha permitido el desarrollo de una amplia variedad de Terminales X, algunos de los cuales compiten con las estaciones de trabajo en memoria y CPU. Como estos Terminales X no tienen disco, son más baratos que las estaciones de trabajo equivalentes.

Otras de las ventajas de los Terminales X es el reducido mantenimiento del hardware y del software

comparado con el de las estaciones de trabajo en las que se ejecutan sistemas X Window. Los Terminales

X ofiecen un mayor control por parte del departamento de informática y permiten aprovechar la inversión realizada en grandes computadoras (mainframes).

Los Terminales X tienen potenciales desventajas, no pueden procesar datos donde y cuando son generados, y los modelos inferiores tienden a ser muy lentos. Bajo un punto de vista critico, los Terminales X representan un paso atrás hacia el mundo del tiempo compartido (Time Sharing).

Microcornputadoras

La cuestión estriba en: “Si los sistemas X Window son tan potentes, ¿podremos usarlos en nuestras microcomputadoras?”. La respuesta es “depende”.

Un requisito claro es la alta resolución gráfica, de forma que es preferible Super VGA a VGA o Hercules.

Las necesidades de procesamiento pueden hacer demasiado baja la resolución de 1024 x 768. El color es

una cuestión opcional, pero si lo elegimos, debemos asegurarnos que los colores sean atractivos y variados. (Los usuarios actuales tienden a considerar los 16 colores un poco aburridos.)

El procesador mínimo es un 80486 o su equivalente (por ejemplo un 68030). (Los usuarios de AT pacientes pueden encontrar el tiempo de espera aceptable para gráficos simples.) Es absolutamente necesario disponer de un disco fijo grande y rápido. El sistema X Window no es como el DOS, no se haga la idea de poder confinarlo en un rincón de su disco fijo de 40 megabytes (Mb). Al menos hemos de

dedicar un disco fijo de 500 Mb al sistema X Window y su entorno, UNEincluido. Estudie sus manuales

para determinar la configuración necesaria para su implementación del sistema X Window y las utilidades que necesite.

Como se trata detalladamente en este capítulo, los sistemas X Window incluyen dos tareas: ejecutar la aplicación de usuario y manejar gráficos. A menos de que disponga de un auténtico sistema operativo multitarea, su microcomputadora no podrá atender a la aplicación de usuario y a los gráficos. Una

microcomputadora aislada con sistema operativo DOS tan sólo puede gestionar una de estas dos tareas,

pero no ambas.

UNIX y otros sistemas operativos multitarea con fiecuencia controlan grandes microcomputadoras. Por ejemplo, el Open Desktop de Santa Cruz Operation, mostrado en la Figura 1-2, se ha convertido en el

sistema operativo UNE estándar de las microcomputadoras de gama alta. Este paquete proporciona por

completo todas las capacidades X Window. Podemos contar con que en el futuro muchos paquetes para

grandes microcomputadoras soportarán parcial o totalmente X Window.

Todos los ejemplos que se darán más adelante, se han desarrollado sobre una microcomputadora

compatible IBM 586066 MHz con un monitor color gráfico de 1024 x 768, ejecutando el SCO Open

Desktop Personal System Versión 2 con el Open Desktop Development System. El software utilizado

incluía UNIX System V, X Window versión 11.4, con la utilidad OSFMotif y el lenguaje de

programación C. No se preocupe, ya que el uso de un equipo o una implementación de X Window

(14)

Introducción al Sistema X Window

Arquitectura Cliente/Servidor

El corazón de la filosofía X Window es la arquitectura clientehervidor. Esta arquitectura es el modelo del sistema X Window, mediante la que los clientes, o programas de aplicación, comunican con los

servidores, o unidades de visualización a través de una red local. En la Figura 1-3 se muestra la

arquitectura clientehewidor. En esta sección se examinan detalladamente los componentes de la

arquitectura cliente/servidor de X Window y se compara esta arquitectura con el modelo clientehervidor para otros sistemas informáticos.

Figura 1-2. Las ventanas de SCO Open Desktop

f

_ _ ~ ~

Estación de trabaj o g r á f b como servidor X

I I

aora con cnemes A I

(15)

Introducción al Sistema X Window

Cliente

Básicamente el cliente es el programa de aplicación. A diferencia de los programas gráficos tradicionales, los clientes X Window no se comunican directamente con el usuario. El cliente obtiene una entrada de usuario como, por ejemplo, la pulsación de una tecla o de un botón del ratón desde el servidor que es la otra parte de la arquitectura clientehervidor. El cliente ejecuta las órdenes X Window que requiere el servidor para dibujar gráficos. Varios clientes pueden estar conectados a un único servidor.

Servidor

En términos simples, podemos decir que el servidor es la unidad de visualización, que a su vez puede estar compuesta por varias pantallas fisicas. El servidor ejecuta diversas funciones relacionadas entre sí:

Pasa la entrada de usuario a los clientes a los que está conectado. Ejemplos comunes de entradas de usuario son: el pulsar una tecla, o un botón del ratón, y el modificar la posición del puntero. Esta entrada es imprevisible, cualquier tipo de entrada puede ocurrir en cualquier orden.

Decodifica los mensajes de los clientes, como las peticiones de información o el movimiento de una o más ventanas. Estos requerimientos se expresan en un lenguaje formal X Window.

Mantienen las estructuras de datos complejas. El manejo de estas estructuras de datos por el servidor reduce las necesidades de almacenamiento y de procesamiento del cliente, y disminuye la cantidad de datos a transmitir a través de la red.

Conexión

Una parte esencial del sistema X Window es el enlace fisico entre el cliente (programa de aplicación) y el servidor (unidad de visualización). Los protocolos de red describen el formato y el orden de los datos, y

controlan los bytes que componen un mensaje enviado desde un punto a otro de la red. Los

programadores de X Window no necesitan conocer el protocolo de la red que se está usando.

Normalmente se utilizan tres protocolos para la transferencia de datos entre el servidor y los clientes. Estos son: el TCP/IP desarrollado por la Universidad de California, DECNet desarrollado por Digital Equipment Corporation, y STREAMS desarrollado por AT&T. X Window se escribió de forma que el uso de éstos y otros protocolos fueran transparentes para el usuario.

Ethernet es una tecnología de comunicaciones de redes de área local muy usada. Suministra el canal de comunicación fisico necesario entre los clientes y el servidor. Transmite datos a un promedio de 1 millón de bits por segundo. Compare esta velocidad con la normalmente utilizada en la conexión entre un terminal gráfico y una computadora central que es de 19.200 bits por segundo. El enlace X Window puede transferir datos unas 50 veces más rápido (siempre que el número de colisiones, que disminuye la velocidad de transmisión, sea bajo en la red Ethernet).

Relación con los sistemas tradicionales Cliente/Servidor

Muchas personas están familiarizadas con los términos "cliente" y "servidor", asociándolos con otros tipos de sistemas de computadoras. Por ejemplo, una red de área local almacena los archivos en un servidor de archivos, el cual centraliza la gestión de las operaciones de archivo de los usuarios (clientes). Un servidor de impresión encola las peticiones de impresión de los usuarios. En estos casos, el servidor se

localiza sobre una computadora remota cargada con muchas tareas, y el cliente es el usuario. Los sistemas

(16)

Introducción a l Sistema X Window

tradicionales sistemas clientehervidor como los sistemas X Window aplican el principio de división del trabajo al centralizar las tareas claves en el servidor, facilitando que el cliente se centre en su aplicación.

Software

Para enviar los datos adecuados y los bytes de control desde el cliente al servidor y viceversa, se necesita un software especial. En el Capítulo 2, "El programa Hola Mundo", se muestra la complejidad de la visualización de una simple ventana en la pantalla del usuario. El primer programa ejemplo tiene un tamaño de dos paginas. La flexibilidad de X Window tiene su precio.

Este texto muestra cómo programar sistemas X Windows. Se introducen los tres niveles de programación,

que van desde llamadas en lenguaje C que acceden directamente al protocolo X de la red, a paquetes comerciales parecidos a la interfaz gráfica de usuario Windows de Microsoft. En la Figura 1-4 se ilustran estos tres niveles de programación. ¿Cuál de estos tres niveles es el que deberíamos usar?. La respuesta es simple: un típico programa X Window debe usar en distinto grado los tres niveles, dependiendo de l a

naturaleza exacta de la tarea a realizar.

Aplicacinn Herramienta X

Xt htrinsics

A I I

I

Xt Intrinsics

I

I I -

I I C

Figura 1-4. Niveles de programación.

Funciones Xlib

La comunicación clientehervidor del sistema X Window se efectúa a través de un protocolo de red

denominado protocolo X (X protocol). Este protocolo X define el número exacto de bytes que se

necesitan para realizar todas las operaciones X Window, incluyendo el dibujo y movimiento de una ventana, o la reacción cuando se pulsa un botón del ratón. La programación con el protocolo X es en extremo ardua, este lenguaje de base no ofi-ece facilidades que ayuden al programador.

El protocolo X es similar al lenguaje máquina que normalmente se asocia a un determinado procesador. Pocas personas escriben programas en este lenguaje o en protocolo X, no es necesario hacerlo De la

misma manera que el lenguaje ensamblador proporciona la potencia del lenguaje máquina con mucho

(17)

Introducción al Sistema X Window

Xlib es una biblioteca de funciones que proporciona unas 300 funciones en lenguaje C usadas para generar protocolo X.

Un ejemplo de una función Xlib es XCreateSimpleWindow. A pesar de su nombre esta fimción no es

especialmente simple. Cuando utilizamos esta función en un programa X Window, el programador debe suministrarle nueve parámetros específicos que manejan valores como el tamaño de la ventana, su posición, y la anchura del borde. Las funciones Xlib son el punto inicial para aprender cómo trabaja X

Window. En el Capítulo 2 se presenta un programa X Window compuesto por funciones Xlib. Aunque es

esencial dominar las funciones Xlib para saber cómo trabaja el sistema X Window, normalmente deseará

programar con órdenes de mayor nivel usando Xt Intrinsics o ciertas herramientas (conjunto de

utilidades) en propiedad.

Xt Intrinsics

El X Toolkit Intrinsics, también conocido como Xt Intrinsics, permite a los programadores crear y usar

bloques de pantalla estándar llamados Widgets, como por ejemplo menús, barras de desplazamiento,

botones y cuadros de diálogo. Un uso cuidadoso de los widgets simplifica el proceso de programación con X Window. Quizá lo más importante es que da a la aplicación una apariencia estándar de fácil interpretación (ver y entender) y por tanto la hace más fácil de usar. Las funciones Xt Intrinsics

comienzan con la mayúscula X seguida de la minúscula t. Por ejemplo, la función XtWindow(w)

devuelve la ID (identificación) de la ventana asociada con el widget w. No adelante conclusiones al

comparar la función Xlib XCreateSimpleWindow con la función Xt Intrinsic XtWidow(w), ya que no

realizan las mismas acciones.

Herramientas en propiedad

El nivel más alto de programación para sistemas X Window es propietario. Las casas de software desarrollan sus propias utilidades como extensiones de la utilidad Xt Intrinsics. Las herramientas en propiedad incluyen características de personalización que prometen atractivas salidas, facilidad de uso, y un rápido desarrollo de aplicaciones. Un gestor de ventanas (Window manager) es un cliente especial

responsable de manipular las ventanas en la pantalla. El sistema X Window incorpora dos gestores de

ventanas: uwm y twn. Las herramientas en propiedad utilizan sus propios sistemas que son mucho más

sofisticados. En el Capítulo 4, "Ventanas y técnicas de trabajo con ventanas", se tratarán con mayor detalle los gestores de ventanas.

Cada herramienta en propiedad produce un modelo de interfaz gráfica de usuario, que permite a los diseñadores crear una serie de aplicaciones con una apariencia estándar. Se hace necesario un aviso: es necesaria una considerable destreza para producir un interfaz realmente amigable, si lo es para una única aplicación, mucho más para una serie de aplicaciones. No importa la potencia de la herramienta o utilidad, la mala programación sigue siendo mala.

El dominio de la programación X Window requiere aprender el uso de tres productos interrelacionados: Xlib, Xt Intrinsics y la herramienta en propiedad seleccionada. Igualmente importante es que el programador sepa cuándo usar cada uno de estos productos.

OSFD4otg La Open Software Foundation (OSF) es un consorcio formado en 1988 por los mayores

(18)

Introducción al Sistema X Window

Las funciones Motif comienzan con una letra mayúscula X seguida por una minúscula m. Por ejemplo, la

función XmCreateMenu sitúa un menú desplegable (temporal) en la pantalla en la posición indicada por

otra función Motif.

En este texto se presentan exclusivamente las utilidades OSFMotif. Sin embargo, es importante

familiarizarse con el software de la competencia. El proceso de selección del producto es largo y supone

importantes consecuencias para los programadores con X Window.

Open Look. El mayor competidor de OSFMotif es el interfaz gráfico de usuario Open Look, distribuido

por la American Telephone & Telegraph (AT&T) y por Sun Microsystem. La versión de Sun incluye

funciones que facilitan la conversión de aplicaciones anteriores de Sun al sistema X Window. En la Figura 1-6 se muestran ejemplos de ventanas creadas con el interfaz gráfico de usuario Open Look. En la

Tabla 1-1 se muestran los fabricantes y otras compañías que soportan las utilidades Motif y Open Look.

Otras implementaciones. Quarterdeck Office Systems, el distribuidor del más vendido programa de

gestión de memoria para MS-DOS y MS-Windows, ha presentado el DESQviewR. Este paquete está destinado a dar a las microcomputadoras de gama alta una filosofía cliente/servidor X Window para aplicaciones de red. En el mercado se encuentran disponibles potentes productos para microcornputadoras.

(19)

Introducción al Sistema X Window

Figura 1-6. Típica interfaz gráfica de usuario de Open Look. Tabla 1-1. Disponibilidad de Motif y Open Look.

Fabricante Motif IBM

Digital Equipment Corp. Hewlett Packard UNISYS

Sun Microsystem Solboume Compaq Dell Prime Data General Silicon Graphics MIPS

NCR AT&T Wang

NEC

Hitachi Commodore

V V V V T V V V V V V V V V V V V

Otros

sistemas de ventanas

OpenLoock

T T T

V V

V

V

(20)

Introducción al Sistema X Window

Historia y objetivos

Tanto los usuarios finales como los especialistas en computadoras encontraban dificil trabajar con los

primeros sistemas, Durante años multitud de empresas y organizaciones de investigación han aplicado los

desarrollos tecnológicos con el propósito de hacer las computadoras más fáciles de usar. Muchas de las utilidades y técnicas de las modernas computadoras se basan en trabajos anteriores a los años ochenta. Entre los ejemplos clave se incluyen la programación orientada a objetos, el Apple Macintosh, y las interfases gráficas de usuario con el ratón. Veamos a continuación los componentes básicos de los GUIs y después los compararemos con las implementaciones actuales de los sistemas X Window. Las interfases gráficas de usuario deberían proporcionar las siguientes posibilidades:

Uso extensivo de elementos de control visual estándares, como los iconos (icons) y las barras de desplazamiento (scroll bars). Los iconos son representaciones gráficas de objetos, por ejemplo un cubo de basura puede significar borrado de un archivo, Las barras de desplazamiento permiten al usuario desplazar los datos que aparecen en una ventana.

Manipulación directa de los elementos que hay en la pantalla. Por ejemplo, presionar un botón del ratón para modificar el margen de un documento hasta obtener el ancho deseado, en lugar de introducir un valor previamente calculado.

Consistencia a través de aplicaciones y plataformas. Los usuarios aprenden una sola vez la forma de

imprimir. Cuando conocen cómo imprimir un documento, va saben como imprimir otros,

independientemente de la aplicación y de la computadora utilizada.

Aplicaciones múltiples simultáneas. Por ejemplo, un usuario puede editar un documento y al mismo tiempo volver a calcular una hoja de cálculo. Conforme la computadora recalcarla la hoja de cálculo, la versión actualizada aparece automáticamente en el documento.

Con un sistema atractivo y fácil de usar. Un usuario contento es más productivo. Idealmente los usuarios deberían poder personalizar su GUI para adaptarla mejor a su trabajo, en lugar de tener que acomodarse a la forma de hacer las cosas de la interfaz gráfica de usuario (GUI).

Implementaciones

Ninguna de las interfases gráficas de usuario existentes actualmente cumplen todos los objetivos

indicados anteriormente. Sin embargo varios de los GUls más usuales cumplen muchas de ellas.

Macintosh Finder

(21)

Introducción al Sistema X Window

Microsoft Windows

Microsoft Windows o MS-Windows, se ha convertido en el estándar GUI de los sistemas compatibles IBM. Habiendo aparecido el mes de noviembre de 1985, las ventas de este producto se dispararon con la versión 3.0 lanzada en mayo de 1990. Cientos de las populares aplicaciones DOS se ejecutan actualmente sobre este entorno. La configuración recomendada para trabajar en este entorno consiste en una

computadora con un microprocesador 486, O preferiblemente un 586 , con al menos 8 Mb de memoria

RAM

para los usuarios que ejecutan un solo programa a la vez, y de 16 Mb para multitarea, y un monitor

gráfico SVGA. En la Figura 1-7 se muestra Microsoft Windows.

Figura 1-7. Típica interfaz gráfica de Microsoft Windows

OS12 Presentation Manager

En abril de 1987, IBM lanzó la serie de microcomputadoras PS/2, muchas de las cuales corren bajo el sistema operativo OS!2. Presentation Manager (PM) fue el GUI estándar de las primeras versiones del OS/2. Su apariencia es bastante similar a la del MS-Windows. La influencia futura de OS/2 y el PM no esta clara, debido en parte a las cambiantes relaciones entre I BM y Microsoft.

El sistema DESQview

(22)

Introducción al Sistema X Window

ventanas como multitarea, e incluso ejecuta MS-Windows. La anunciada versión DESQviewR promete

ejecutar sistemas X Window en compatibles IBM.

NeXTstep

La computadora NeXT diseñada por Steve Jobs, uno de los dos creadores del Apple, alardea de disponer de un sofisticado sistema de ventanas llamado NeXTstep. Este sistema contiene varias características interesantes, tales como visualización PostScript, una interfaz MIDI para la generación de música, y un inmenso disco óptico, valiosísimo para las aplicaciones multimedia. Todos los programas que se incluyen

en los siguientes capítulos, se probaron en una computadora NeXT basada en. el microprocesador 68040.

Analogías

y

diferencias

Los sistemas X Window y las interfases gráficas de usuario (GUls) para microcomputadoras, tienen el mismo objetivo básico: facilitar el uso de la computadora. Todos proporcionan elementos gráficos, por ejemplo iconos y barras de desplazamiento, para comunicarse con el usuario. Herramientas en propiedad como OSFMotif que modifican los sistemas X Window en GUls. De hecho, los widgets de OSFMotif se

han diseñado para parecerse a MS-Windows.

Existen importantes diferencias entre los sistemas X Window y las GUls basados en microcomputadoras. Los diseñadores de sistemas X Window que se limitan a utilizar las librerías Xlib y Xt Intrinsics pueden crear una interfaz con una apariencia propia, en lugar de trabajar con la idea que otra persona tiene de una

interfaz ideal. Los sistemas X Window normalmente funcionan sobre estaciones de trabajo para

Ingeniería y científicos, más potentes que las microcomputadoras de gama alta. Se pueden usar con

terminales X y computadoras de todos los tamaños, desde los compatibles AT a las supercomputadoras.

(23)

Introducción al Sistema X Window

Puntos clave

2

En qué consiste el sistema X Window

?

El “sistema X Window” (también llamado X Window y en otras ocasiones, aunque erróneamente X

Windows), se ha convertido en la herramienta software estándar utilizada para el desarrollo de interfases gráficas de usuario (GUIs) sobre estaciones de trabajo. Debido a la independencia de dispositivo, las interfases gráficas de usuario desarrolladas en una computadora, pueden ser ejecutadas sin problemas en otras distintas.

El sistema X Window

El sistema

x

Window se ha convertido en un sistema de ventanas estándar independiente del hardware y

del sistema operativo. Se trata de una utilidad desarrollada para sistemas gráficos de alta resolución tanto en color como en monocromo.

Hardware

Los sistemas X Window se pueden ejecutar en gran variedad de dispositivos hardware. La unidad de salida es una pantalla gráfica, con una resolución VGA como mínimo. Los dispositivos de entrada comúnmente utilizados son el teclado y el ratón. La gran mayoría de los fabricantes de estaciones de trabajo soportan los sistemas X Window. Una alternativa que se está popularizando cada vez más son los terminales X, un terminal gráfico sin disco que ejecuta un Único programa, el servidor X Window. También hay disponibles sistemas X Window en las microcomputadoras de gama alta. El Open Desktop de Santa Cruz Operation System se ha convertido en el estándar para las microcomputadoras con sistema operativo UNIX. Este paquete proporciona todas las características de X Window.

Arquitectura Cliente/Servidor

El núcleo de la filosofía X Window es la arquitectura cliente/servidor. Esta arquitectura es el modelo del sistema X Window mediante el cual los clientes, o programas de aplicación, se comunican con los servidores, o unidades de visualización a través de la red.

A diferencia de los programas gráficos tradicionales, los clientes X Window no se comunican

directamente con el usuario. El cliente recibe la entrada del usuario, normalmente la pulsación de una tecla o la presión sobre el ratón mediante el servidor, la otra mitad de la arquitectura clientekervidor. El cliente ejecuta las órdenes X Window que necesita el servidor para dibujar gráficos. Varios clientes pueden estar conectados a un Único servidor.

(24)

Introducción al Sistema X Window

Conexiones

Una parte esencial de los sistemas X Window es el enlace fisico entre el cliente (programa de aplicación)

y el servidor (monitor). Los protocolos de red describen el formato y orden de los datos, y los bytes de

control que componen un mensaje enviado desde un punto a otro de la red. Los programadores X Window no necesitan conocer el protocolo de red que se está usando. Los tres protocolos de

comunicación de datos más comunes son: TCPAP, DECNet y STREAMS.

Soflware

Para enviar de forma correcta datos e información de control desde el cliente al servidor y viceversa se necesitan programas especiales. La comunicación clientehervidor en un sistema X Window se realiza a

través del protocolo de red, denominado protocolo X. Los expertos en programación X Window deben

conocer tres productos interrelacionados: Xlib, Xt Intrinsics y la herramienta en propiedad que hayan elegido. De la misma importancia es saber cuando utilizarlos.

Xlib es una biblioteca de unas 300 funciones escritas en lenguaje C usadas para generar el código que cumple el protocolo X, el cual impone un complejo conjunto de requisitos. Xlib reduce en gran medida la dificultad de la programación X.

Xt Intrinsics es una utilidad que proporciona X Window que permite construir bloques, como por ejemplo menús, barras de desplazamiento y cuadros de dialogo, ayudando a conseguir interfases de aplicación más consistentes.

De otro lado las herramientas en propiedad generadas por terceras partes proporcionan sus propias extensiones a las utilidades X incluyendo normalmente sus propios gestores de ventanas. La herramienta

más usada es OSF/”otif, de la Open Software Foundation (OSF), un consorcio creado en 1988 por los

grandes fabricantes de hardware, entre ellos IBM. DEC y Hewlett Packard.

El mayor competidor de OSFMotif es la interfaz gráfica de usuario Open Look, distribuida por AT&T y Sun Microsystems.

Interfases grápcas de usuario

Las interfases gráficas de usuario proporcionan una alternativa gráfica fácil de usar frente a las molestas interfases de texto que hacían dificil el uso de los primeros sistemas con computadoras. Una interfaz gráfica de usuario debería proporcionar las siguientes posibilidades:

0 Uso extensivo de elementos de control visual estándar, como por ejemplo iconos y barras de

desplazamiento.

o Manipulación directa de los elementos que están en la pantalla.

0 Consistencia a través de aplicaciones y plataformas.

0 Aplicaciones múltiples simultáneas.

(25)

Introducción al Sistema X Window

(26)

El programa “Hola Mundo

Capítulo 2

El

programa

YHola Mundo”

Tradicionalmente, el primer programa que se estudia cuando se aprende el lenguaje C, se llama “Hola Mundo” (“Hello World”). Este sencillo programa llama a una función C que imprime la cadena de caracteres “Hola. Mundo” en la salida estándar de la computadora (un terminal, a menos que se especifique otro destino).

main0

{

I printf(“\n Hola Mundo”);

En este capítulo se presenta un programa similar, escrito para sistemas X Window. Al principio parece algo complicado para ser un programa de iniciación, pero esto es inevitable, ya que X Window tiene mucho que hacer. El programador de X Window debe especificar detalladamente muchos pasos que los

programadores de lenguaje C o de cualquier otro lenguaje de alto nivel darían por dados. El resultado es

un programa claramente diferente, que no necesita ser modificado cada vez que cambie la computadora. Puede que ahora no lo comprenda todo. No se preocupe, ya que en los próximos capítulos veremos todos los puntos importantes en detalle. Puede escribir el programa, y a continuación compilarlo y enlazarlo mediante un archivo make (makefile) como el que se encuentra al final de este capítulo. Una vez que haya conseguido que se ejecute el programa pruebe a hacer modificaciones simples, y vera como van encajando las piezas.

Funciones X Window

En el programa “Hola Mando” que viene al final de este capítulo se incluyen las funciones X Window que son necesarias como mínimo para generar una salida a través de la pantalla. Por supuesto, los programas

realmente útiles serán mucho más complicados. Este programa contiene únicamente funciones Xlib, y no

hace referencia ni a Xt Intrinsics, ni a ninguna herramienta como OSF/Motif. El programa “Hola

Mundo” realiza las siguientes operaciones (algunas de ellas necesitan más de una línea de código):

0 Establece una conexión con la estación de trabajo. Con este paso se establece un enlace entre el

programa de aplicación (cliente) y la unidad de visualización (servidor).

o Crea una ventana en la pantalla. La función XCreateSimpleWindow utiliza nueve parámetros para

indicarle a X Window cómo y dónde debe colocar la ventana. Esta función genera un identificador de ventana único que el usuario debe grabar por si se hacen más adelante referencias a é1 dentro del programa.

0 Notifica a las otras aplicaciones de la estación de trabajo la creación de la nueva ventana. Recuerde

(27)

El programa “Hola Mundo”

Crea un contexto gráfico (graphics context) para la ventana. Un contexto gráfico es una estructura que contiene información acerca de los colores, los tipos de letra y anchura de las líneas.

Selecciona el tipo de suceso de entrada a procesar. Un suceso (event) es una estructura que envía el servidor y que describe un hecho que acaba de ocurrir, debiendo la aplicación seleccionar si

procesarlo o no. Los sucesos son un concepto hdamental en sistemas X Window.

Visualiza la ventana. Visualizar la ventana (mapping a window) significa hacer visible la ventana en la pantalla. Esta actividad está separada y se realiza a continuación de la creación de la ventana.

Ejecuta el bucle principal. El núcleo de un programa X Window es un bucle que lee y procesa sucesos, generando salidas cuando se requiere. Esta parte del programa realiza el verdadero trabajo de la aplicación. Los programas X Window deben estar preparados para procesar cualquier suceso

(cuyo tipo haya sido previamente seleccionado) procedente de cualquier cliente en cualquier

momento. No se extrañe de que los programas X Window sean complicados.

Finaliza el programa. En este punto, el programa deja de ejecutarse y devuelve los recursos al sistema.

Examen del programa “Hola Mundo

En esta sección describimos una versión lo más simple posible del programa “Hola Mundo” escrita con funciones Xlib. Para hacerlo más legible las llamadas a las funciones Xlib se escriben en negrita. Al final del capítulo se muestra el listado completo del programa.

Inclusión de los archivos de cabecera

En la programación en lenguaje C se utiliza la directiva #include para acceder a un conjunto de declaraciones y constantes predefinidas situadas en unos archivos llamados cabeceras (headers). El preprocesador une la cabecera (#include) al código del programa fuente. X Window usa sus propios archivos de cabecera, como los que se muestran a continuación:

#include <XllIXlib.h> #include <Xll/xutil.h>

Declaraciones

Con el lenguaje de programación C se utiliza la directiva #define para asociar un nombre significativo y definido por el programador a una construcción del lenguaje C. Esta directiva genera programas más fáciles de comprender. En el siguiente ejemplo definimos el valor 1 como TRUE (VERDADERO) y el valor O como FALSE (FALSO).

#define TRUE 1 #define FALSE O

(28)

El programa “Hola Mundo”

char hellow[] = “Hola-mundo”; char theiconname[] = “Helloi”; char thewindowname[] = “hola”;

El lenguaje de programación C requiere una h i c a función main que indique cuál es la primera función ejecutable del programa El parámetro argc señala al número de argumentos de la línea de ordenes. El parámetro argv se corresponde con un puntero a una lista de cadenas de caracteres que contiene los argumentos de la línea de órdenes.

main (argc, argv) int argc; char *argv[J;

{

Las instrucciones siguientes son propias de los programas X Window.. Declaran el monitor a abrir y la ventana que aparece en él. El identificador *thedisplay es un puntero a una estructura de datos que gestiona la conexión con la estación de trabajo. El elemento thewindow identifica el recurso ventana, y el elemento thegc identifica el contexto gráfico. Las estructuras de datos asociadas con thewindow y thegc deben ser accesibles durante toda la aplicación. El elemento theevent se corresponde con una compleja estructura de datos que contiene información asociada con cada uno de los sucesos de entrada de datos detectado por el servidor. El elemento thekey identifica la tecla pulsada cuando ocurre un suceso asociado al teclado. El elemento thehint se corresponde con la estructura de datos mediante la que el programa informa a las demás aplicaciones acerca de esta ventana.

Display “thedisplay; Window thewindow;

GC thegc;

XEvent theevent; KeySym thekey; XSizeHints thehint;

Con las instrucciones siguientes se declaran las variables C usadas en la implementación X Window:

int thescreen;

unsigned long theforeground, thebackground; char thebuffer[S];

int keycount; int finished;

Establecimiento de la conexión

La primera función Xlib que aparece con cualquier programa es

thedisplay = XOpenDisplay(“ “);

(29)

El programa “Hola Mundo

Creación de una ventana

La línea

thescreen = DefaultScreen(thedisp1ay);

identifica la pantalla por omisión de la unidad de visualización. X Window puede usarse con unidades de visualización que consten de varias pantallas físicas. Por ejemplo, una pantalla color y otra monocromática.

thebackground = Whitepixel (thedisplay, thescreen); theforeground = BlackPixel (thedisplay, thescreen);

Este par de macros C identifica los valores de los puntos (pixels) asociados con el color del fondo y del primer plano (background and foreground) de la pantalla. El fondo no tiene porque ser blanco, y el primer plano no tiene porque ser negro. La estructura de datos a la que apunta thedisplay incluye estos valores de los puntos (pixels). Si cambiamos el monitor de la estación de trabajo el programa toma en cuenta automáticamente los nuevos valores para los puntos, manteniendo la compatibilidad.

Los campos de la estructura de datos de la variable thehint (que es del tipo XSizeHints) contienen los valores que describen la ventana al gestor de ventanas, como sigue:

thehint.x = 100; thehint.y = 150; thehint.width = 275; thehint.height = 120;

thehint.flags = PPosition

I

PSize;

Los elementos thehintx y thehint.y muestran la posición de la esquina superior izquierda de la ventana: 100 puntos a la derecha (valor x) y 150 puntos hacia abajo (valor y), respecto de la esquina superior izquierda de la pantalla.

Como estos dos elementos están íntimamente relacionados, pueden colocarse en la misma línea de

programa. Los elementos thehintwidth y thehintheight indican la anchura y la altura de la ventana,

medida en puntos. El elemento thehint.Jags indica la posición y el tamaño preferidos para la ventana. Las

siguientes fimciones Xlib solicitan al servidor la creación de la ventana. thewindow = XCreateSimpleWindow (thedisplay,

DefaultRootWindow (thedisplay), thehint.x, thehint.y, thehint.width, thehintheigth, 7, theforeground, thebackground);

La fimción XCreateSimpleWindow devuelve el identificador de la ventana dada mediante la variable

thewindow. Esta fimción incluye nueve parámetros, que deben escribirse ordenados: el identificador de ventana, la ventana padre (en este caso, la ventana raíz, que ocupa la pantalla completa), la posición x e y de la ventana, la anchura y altura de la ventana, la anchura del borde en puntos, el color del borde o del primer plano, y el color dei fondo.

Nota. Todos los parámetros se han definido antes de llamar a la fimción.

Notificación a las demás aplicaciones

(30)

El programa “Hola Mundo”

XSetStandardProperties(thedisplay, thewindow, thewindowname, theiconname, None, argv ,argc,

&thehint);

permite a una aplicación informar al gestor de ventanas de sus preferencias (&thehint), incluyendo los argumentos de la línea de órdenes (urgc y urgv). La función hace referencia al nombre de la ventana previamente d e f ~ d o (thewindownume).

Creación de un contexto

gráico

La función Xlib

thegc = XCreateGC (thedisplay, thewindow, O, O);

crea un contexto gráfico con los valores por omisión.

Las dos funciones siguientes establecen los valores para el fondo y para el primer plano del contexto gráfico.

XSetBackground (thedisplay, thegc, thebackground); XSetForeground (thedisplay, thegc, theforeground);

Selección del tipo de suceso de entrada a procesar

Con la función Xlib

XSelectInput (thedisplay, thewindow, (keyPressMask

I

ExposureMask));

se le pide al servidor que informe a la aplicación cuando se pulse una tecla mientras el cursor está en su ventana. La aplicación también realizará sucesos Expose (Exposición), que informan al cliente de que su ventana ha Sufi-ido un cambio. Por ejemplo, si la ventana A está oculta por la B, y desaparece la ventana

B, se produce un suceso Expose, de forma que la aplicación deberá volver a dibujar parcial o totalmente

la ventana A, como se explica detalladamente en el Capítulo 4, “Ventanas y técnicas de trabajo con ventanas”.

Visualización de ventanas

La función Xlib

XMapRaised (thedispLay, thewindow);

visualiza la ventana en la pantalla, encima de todas las ventanas existentes. Esta función envía un suceso Expose al programa para que redibuje la ventana cada vez que deja de estar cubierta. Por ejemplo, cuando desplazamos una ventana que la tapaba. Para aceptar tales sucesos Expose se incluye la función

XSelectInput.

Ejecución del bucle principal

A la variable 1ÓgicaJinished (final) se le da inicialmente el valor FALSE (FALSO) de forma que el bucle

(31)

El programa “Hola Mundo”

procesamiento del programa. Solicita un suceso, visualiza la cadena “hola-mundo” en la ventana, y acepta una entrada desde el teclado si el ratón está en el área de la ventana o si se presiona el botón izquierdo del ratón. El programa termina si el usuario pulsa la tecla “q”. Inicialmente se le asigna a la variable finished. FALSE, con la siguiente línea se hace que el bucle se repita mientrasfinished sea igual a FALSE. El bucle al menos se ejecuta una vez.

finished = FALSE;

while (finished = FALSE) {

La función XNextEvent espera hasta que el servidor detecte un suceso de un tipo ya seleccionado con la

función XSelectlnput.

Nota. Esta y las líneas que vienen a continuación se encuentran indentadas, indicando de esta forma su inclusión en la sentencia while.

XNextEvent (thedisplay, &theevent);

La sentencia switch dirige los sucesos seleccionados a la sección apropiada del programa.

switch (theeventtype) (

Procesamiento de los sucesos Expose

El código que existe entre las líneas case Expose y break se ejecuta solamente cuando se producen

sucesos Expose. Los demás sucesos son procesados por las siguientes instrucciones case. Un valor cero en

la variable theevent.xexpose.count se da en dos casos: o se produce un ímico suceso Expose, o se produjo el último de una serie de sucesos Expose asociados. El programa “Hola Mundo” ignora todos los sucesos Expose anteriores al último suceso de un grupo dado.

La función XDrawlmageString incluye siete parámetros. El programador debe especificar

ordenadamente: la pantalla, la ventana, el contexto gráfico, el desplazamiento horizontal y vertical (medidos en puntos) del primer carácter del texto, el identificador de la cadena de caracteres a dibujar, y la longitud de esta cadena de caracteres. Cada vez que se produce un suceso Expose se vuelve a dibujar esta cadena.

case Expose:

if (theevent.xexpose.count == O )

XDrawImageString (theevent.xexpose.display,

theevent, xexpose.window, thegc,

205,65, hellow, strlen(hel1ow);

Procesamiento de cambios en la configuración del

teclado

Aunque no se han seleccionado explícitamente sucesos relacionados con la configuración del teclado, este

(32)

El programa “Hola Mundo”

case MappingNotify; break;

XRefreshKeyboardMappin(&theeveut);

Procesamiento de las entradas de teclado

El código que a continuación se muestra, se ejecuta cuando los usuarios pulsan cualquier tecla. La función XLookupString obtiene de las teclas pulsadas una cadena de caracteres y calcula su longitud, que frecuentemente, aunque no siempre, es l. Si el primer carácter de la cadena es una letra “q! minúscula, se le asigna a la VariableJinished el valor TRUE (VERDADERO), acabando así el bucle y el programa. Esto es lo que hace el siguiente programa.

case Keypress:

keycount = XLooknpString (&theevent, thebuffer, 8, &thekey, O); if ((keycount = 1) && (thebuffer[O] = ’9‘))

finished = TRUE; break;

Terminación del programa

Las dos llaves de cierre

(1)

del segmento de código que se muestra a continuación se corresponden con las dos llaves de apertura que aparecen anteriormente en el programa. Observemos el uso de comentarios encerrados entre los símbolos f* y *f. Es conveniente escribir comentarios en los programas sobretodo cuando se programa con X Window.

} /* switch (theeventkype) */ } I* while (finished = FALSE) */

Las tres funciones siguientes eliminan el área de contexto gráfico y la ventana, cancelan la conexión entre el servidor y el cliente, y por último detienen el programa.

XFreeGC (thedisplay, thegc);

XDestroyWindow (thedisplay, thewindow); XCloseDisplay (thedisplay);

} I* main *I

Al final del capítulo se ofrece el programa “Hola Mundo” completo.

Modificaciones posibles

Aunque parezca largo, este programa es tan sólo el comienzo de la programación X Window. Ahora que

conocemos lo que contiene el programa, vamos a considerar algunos de los elementos que faltan. Para

Figure

Figura 1-1.  Sistema  X  Window
Figura  1-2.  Las  ventanas  de SCO Open  Desktop
Figura  1-4. Niveles de programación.
Figura  1-5.  Típica  interfaz  gráfica de usuario  con  Motif.
+7

Referencias

Documento similar

&#34;No porque las dos, que vinieron de Valencia, no merecieran ese favor, pues eran entrambas de tan grande espíritu […] La razón porque no vió Coronas para ellas, sería

Cedulario se inicia a mediados del siglo XVIL, por sus propias cédulas puede advertirse que no estaba totalmente conquistada la Nueva Gali- cia, ya que a fines del siglo xvn y en

En estos últimos años, he tenido el privilegio, durante varias prolongadas visitas al extranjero, de hacer investigaciones sobre el teatro, y muchas veces he tenido la ocasión

que hasta que llegue el tiempo en que su regia planta ; | pise el hispano suelo... que hasta que el

Esto viene a corroborar el hecho de que perviva aún hoy en el leonés occidental este diptongo, apesardel gran empuje sufrido porparte de /ue/ que empezó a desplazar a /uo/ a

En junio de 1980, el Departamento de Literatura Española de la Universi- dad de Sevilla, tras consultar con diversos estudiosos del poeta, decidió propo- ner al Claustro de la

[r]

SVP, EXECUTIVE CREATIVE DIRECTOR JACK MORTON