FAQ sobre Linux para principiantes - es.comp.os.linux: X-windows / Entornos graficos

Next Previous Contents

## 6. X-windows / Entornos graficos

## 6.1 ¿Qué es X-windows?

El protocolo X-windows fue desarrollado a mediados de los años 80 como respuesta a la necesidad de un interfaz grafico transparente sobre todo para sistemas Unix.

X-windows es el encargado de visualizar la informacion de manera grafica y es totalmente independiente del sistema operativo (los sistemas Unix/Linux no necesitan de X-windows para funcionar, pudiendo trabajar en modo texto). La gran diferencia entre X-windows y la interfaz grafica de otros sistemas operativos es que X-windows distribuye el procesamiento de aplicaciones, especificando un enlace cliente-servidor. El cliente X especificara "Que hacer" al servidor X, que se encargara de "Como hacerlo".

Pero dejemonos de teoria y pasemos a un ejemplo practico. La gran ventaja de X-windows es que el servidor X de una aplicacion y el cliente X donde trabajamos no tienen porque estar en la misma maquina. Podemos estar utilizando X-windows en nuestra maquina, conectarnos a otra remota, ejecutar un programa en esta maquina remota y utilizar/ver este programa en nuestra maquina local. Todo esto independientemente de la plataforma/sistema operativo que el ordenanor remoto utilice. Como veis las posibilidades son muchas y potentes.

         Cliente X
            |
            |
           Xlib
            |
            |
        Servidor X
            |
            |
    Sistema operativo

## 6.2 ¿Cómo configuro las X-windows?

Para utilizar el sistema en modo grafico es necesario instalar X-windows en tu sistema. Existen servidores comerciales y bajo licencia GNU, en estos apartados nos basaremos en el X-windows bajo licencia GNU, XFree, ya que es el que se incluye en todas las distribuciones de Linux.

Una vez instaladas las X-windows tendremos que configurarlas para que funcionen en nuestro sistema. El fichero de configuracion del las X-windows se llama XF86Config y generalmente se encuentra en el directorio `/etc/X11/`.

Unos datos que teneis que saber antes de configurar X-windows son:

- Datos tecnicos de la tarjeta grafica que utiliceis, o por lo menos el nombre de la tarjeta. El programa `/usr/X11R6/bin/SuperProbe` os puede ayudar a obtener informacion sobre vuestra tarjeta.
- Datos tecnicos del monitor que teneis, resoluciones/frecuencias de refresco verticales/horizontales a la que puede trabajar. Este punto es importante para evitar problemas posteriores con vuestro monitor.

Antes de lanzar X-windows mediante el comando startx debemos asegurarnos de la correcta configuración de los diferentes parámetros del mismo (teclado, ratón, tarjeta de vídeo, etc.). Hay diferentes métodos para hacer esto.

En primer lugar tenemos los programas de configuración semi-automática. Según la distribución de Linux que utilicemos tendremos a nuestra disposición una serie de programas que nos permitirán realizar la configuración de XWindow de una manera más o menos sencilla:

- /usr/X11R6/bin/xf86config - Todas las distribuciones: Programa en modo texto.
- /usr/X11R6/bin/XF86Setup - SuSe, Redhat, Slackware: Programa en modo grafico, tiene que arrancarse en una consola texto.
- /usr/X11R6/bin/Xconfigurator Redhat: Programa semi-grafico con menus.

Estos programas nos preguntarán cosas básicas sobre el teclado, el monitor, la videomemoria o la tarjeta de vídeo instalada (lo harán cuando no sean capaces de detectarlas por sí mismos). Debemos responder siempre la opción más acertada y en cuanto a monitores, nunca especificar características superiores de las que disponemos. Un caso muy habitual en tarjetas muy nuevas es no encontrar un soporte exacto para los últimos chipsets, problema que se suele corregir acudiendo al soporte de framebuffer del kernel o esperando a que quienes trabajan en XFree86 obtengan por parte de los fabricantes (poco colaboradores) la información sobre cómo programar sus tarjetas.

En ciertos casos también se nos puede preguntar si deseamos que el sistema arranque directamente en XWindow o incluso testear los diferentes modos de vídeo para ver que si son correctamente soportados.

Además para que estos programas realicen una correcta configuración el sistema debe estar ya correctamente configurado en cuanto a modo texto se refiere. Por ejemplo, Xconfigurator no activará el teclado en castellano para XWindow si no hemos especificado que el idioma en que queremos usar nuestro Linux es este mismo, mediante la orden

      export LANG=es_ES

bien en la línea de comandos, o en el fichero `/etc/profile`. Cuando `Xconfigurator` detecta esta variable de entorno ya sabe qué lenguaje utiliza el usuario y por tanto configurará XWindow para el correcto uso del teclado en este lenguaje. Otras variables indican el tipo de ratón, etc. y suelen ser correctamente especificadas por el programa de instalación. En el caso de `XF86Setup` la configuración permite una mayor participación por parte del usuario, ya que en lugar de realizar una configuración automática proporciona una lista de opciones para cada apartado, de modo que si conocemos nuestro hardware es la mejor manera de configurar el sistema. Además, a la hora de elegir resoluciones de vídeo, este programa permite especificar cual es la resolución por defecto deseada mientras que `Xconfigurator` deja marcada la menor de ellas como "por defecto" (o la primera que seleccionemos).

El programa de configuración `xf86config` es el más antiguo de todos, y realiza la configuración mediante preguntas que se responderán con teclado. Nos preguntará la tarjeta de vídeo, monitor, rango de frecuencias del monitor, videomemoria y resoluciones de trabajo deseadas, así como el mapa del teclado a utilizar (es 102 = España 102 teclas).

Como siempre, el método más eficaz de configurar XWindow es directamente editando los ficheros de configuración.Y es que otro método de configuración básico es sencillamente editar el fichero `/etc/X11/XF86Config`, que es en realidad lo que hacen todos los programas comentados anteriormente. En este fichero la configuración está dividida en secciones y mediante cualquier editor de texto llano es posible cambiar cualquier parámetro de XWindow.

Este fichero se divide en varias categorías o secciones (todas ellas con más subopciones muy bien comentadas en dicho fichero de configuración):

- Sección Files: Indica los caminos hacia las fuentes o ficheros de colores.

        RgbPath "/usr/X11R6/lib/X11/rgb"
        FontPath   "/usr/X11R6/lib/X11/fonts/75dpi:unscaled"
        (etc.)

- Sección ServerFlags: Opciones varias sobre el servidor.
- Sección KeyBoard:Configuración del teclado. Para teclados en castellano las opciones son similares a las siguientes:

        Protocol       "Standard"
        LeftAlt         Meta
        RightAlt        Meta
        ScrollLock      Compose
        RightCtl        Control
        XkbKeycodes     "xfree86"
        XkbTypes        "default"
        XkbCompat       "default"
        XkbSymbols      "us(pc101)"
        XkbGeometry     "pc"
        XkbRules        "xfree86"
        XkbModel        "pc101"
        XkbLayout       "es"

- Sección Pointer: Configuración del ratón:

        # Para un ratón microsoft mouse o un genius:
        Protocol    "Microsoft"
        Device      "/dev/mouse"

- Sección Monitor: Datos sobre el monitor (frecuencias).
- Sección Device: Indica el servidor X a utilizar: Por ejemplo para una tarjeta con chipset Mach64:

        Section "Device"
            Identifier  "Mach64 GB"
            VendorName  "ATI"
            BoardName   "ATI 3d Rage II"
            VideoRam    8192
        EndSection

- Sección Screen: Modos de vídeo seleccionados: Por ejemplo para activar 320x200, 640x480, 800x600 y 1024x768 tanto a 8 como a 16 bpp de color, siendo usado por defecto el modo 1024x768x16 (el primero que aparezca en la lista):

        Section "Screen"
           Driver      "accel"
           Device      "Mach64 GB"
           Monitor     "My Monitor"
           DefaultColorDepth 16
           Subsection "Display"
               Depth       16
               Modes       "1024x768" "800x600" "640x480" "320x200"
               ViewPort    0 0
               Virtual     1024 768
           EndSubsection
           Subsection "Display"
               Depth       8
               Modes       "1024x768" "800x600" "640x480" "320x200"
               ViewPort    0 0
               Virtual     1024 768
           EndSubsection
        EndSection

Una vez creado este fichero, entramos en XWindow mediante el comando startx.

Del entorno XWindow se puede salir en cualquier momento mediante la combinación de teclas `Ctrl+Alt+Borrar`, o bien seleccionando LOGOUT en el menú del gestor de ventanas que utilicemos.

Para volver a las consolas de texto bastará con utilizar la combinación de teclas `Ctrl+Alt+F1`, +F2, etc (hasta F6 en las instalaciones por defecto). Para volver al terminal gráfico se utiliza de F7 en adelante (`Ctrl+Alt+F7`, +F8, etc.).

Si durante la instalación (o en la línea apropiada del fichero `XF86Config`) seleccionamos varias resoluciones de vídeo, es posible cambiar entre ellas mediante las teclas `Ctrl+Alt+'+'` y `Ctrl+Alt+'-'` (los signos del teclado numérico).

Además, si por defecto marcamos 8bpp (o 16 bpp) en las opciones, nada nos impide lanzar posteriormente XWindow en la profundidad de color deseada:

      [sromero@localhost]# startx -- -bpp 8
      [sromero@localhost]# startx -- -bpp 16
      etc.

También es posible establecer la profundidad de color por defecto mediante una línea DefaultColorDepth = 16 en el fichero de configuración XF86Config, sección Screen.

Por último, saber que podemos lanzar más de una sesión de XWindow simultáneamente (en las consolas accesibles desde `Ctrl+Alt+F8`, +F9, etc.), mediante:

      [sromero@localhost]# startx -- :1
      [sromero@localhost]# startx -- :2
      etc.

## 6.3 ¿Cómo cambio la resolucion por defecto?

En el fichero `/etc/X11/XF86Config` en la sección screen correspondiente al servidor que se está utilizando actualmente, en la subsección Display correspondiente a la Depth en que estemos trabajando, buscamos la linea:

      Modes "resolución_1" "resolución_2"...

Un ejemplo:

      Modes       "1024x768" "800x600" "640x480" "320x200"

Entonces ponemos la resolución que queramos que sea por defecto de primera. Estas resoluciones puestas aquí son entre las que podremos cambiar si queremos al pulsar `Ctrl+ Alt+ '+'` ó `Ctrl+Alt+'-'`, una vez arrancado X-windows..

## 6.4 ¿Cómo cambio el escritorio virtual?

En el fichero `/etc/X11/XF86Config`, en la sección screen correspondiente al servidor que se está utilizando actualmente, en la subsection Display correspondiente a la Depth en que estemos trabajando, añadimos la línea:

      Virtual tamaño_x tamaño_y  #en píxeles

Un ejemplo:

      Virtual     1024 768

Hay que puntualizar que si existe una resolucion definida de `Modes` mayor que el escritorio virtual, esta no se podra utilizar. Resumiendo, no se puede tener una resolucion de trabajo mayor que el escritorio virtual.

## 6.5 ¿Cómo cambio el numero de colores por defecto?

Hay dos maneras:

Mediante la línea de comandos:

      [user@localhost]# startx --bpp resolución  (dónde resolución es 8, 16,24 ó 32)

Mediante el fichero de configuración:

En el fichero `/etc/X11/XF86Config`, en la sección screen correspondiente al servidor que se está utilizando actualmente, añadimos la línea:

      DefaultColorDepth depth_que_queramos_utilizar

Un ejemplo:

      DefaultColorDepth 16

Un Depth con valor 8 significa que trabajaremos a 256 colores, uno con valor 32 truecolor. No todas las tarjetas graficas podran utilizar todos los Depth disponibles en todas las resoluciones, todo dependera de la tarjeta grafica y de la memoria que esta tenga.

## 6.6 ¿Cómo arranco directamente en X-windows?

En Linux es perfectamente posible pedir que el arranque del sistema se haga en modo gráfico, y que el login y password se introduzcan directamente en una ventana XWindow para la posterior carga del gestor de ventanas habitual que use dicho usuario.

Es decir, podremos identificarnos y aparecer directamente bajo X sin necesidad de ejecutar `startx`.

Para arrancar directamente en X Window (o no hacerlo) todo el proceso de configuración gira en torno a cambiar el runlevel (o nivel de ejecución en que arranca Linux).

El runlevel es, dicho de una manera sencilla, el modo en que arranca Linux. Por defecto el runlevel suele ser el 2 ó el 3, es decir, arranque en modo texto o consola. Para cada distribución suele haber una lista de runleves y sus significados, aunque casi se puede decir que son similares para todas ellas. Para Redhat, por ejemplo, la lista es la siguiente:

      # Porción del fichero /etc/inittab
      # Default runlevel. The runlevels used by RHS are:
      #   0 - halt (Do NOT set initdefault to this)
      #   1 - Single user mode
      #   2 - Multiuser, without NFS (The same as 3)
      #   3 - Full multiuser mode
      #   4 - unused
      #   5 - X11
      #   6 - reboot (Do NOT set initdefault to this)

Como puede verse, el arranque normal por defecto para que puedan acceder usuarios a Linux es 2 (si no tenemos red) o 3 si queremos usar servicios de red, siendo normalmente este el runlevel por defecto. Como puede verse, X11 tiene asignado el runlevel al 5. Si cambiamos el runlevel por defecto para que arranque en el 5, nos aparecerán directamente X Window.

Para cambiar este runlevel por defecto hay que editar el fichero `/etc/inittab`, y acudir a la siguiente línea:

      id:3:initdefault:

El valor numerico antes de initdefault indica el runlevel de arranque por defecto. Si lo cambiamos de 3 a 5, la próxima vez que arranquemos Linux arrancará en X Window:

      id:5:initdefault:

Para que el proceso se ejecute correctamente debe tener instalado un gestor de arranque en runlevel 5, que es el programa encargado de pedir el login+passwd y arrancar el gestor de ventanas adecuado. Puede elegir entre xdm (el que viene por defecto con XWindow), kdm (version de kde del mismo) y gdm (versión aportada por gnome). Cada una de ellas dispone de ciertos ficheros de configuración o ejecutables para cambiar el fondo del login, el lenguaje, gestor de ventanas, etc. Consulte los ficheros en los paquetes relacionados.

Haga "man runlevel" para mas información sobre runlevels.

En las últimas versiones de Redhat, el programa `Xconfigurator` le permite elegir si desea o no arrancar directamente en XWindow (él mismo modifica el runlevel por defecto) mediante una simple pregunta a la que usted debe responder SI (Si desea arrancar en runlevel 5) o no (si desea arrancar en runlevel 3). Esta pregunta se le suele realizar al finalizar la selección de resoluciones y antes de salir de Xconfigurator.

Una vez arranque en XWindow, puede volver a cualquier consola de texto mediante las teclas `Ctrl+Alt+F1, Ctrl+Alt+F2, etc`. (por defecto entre F1 y F6 tendrás 6 consolas de texto), y volver a XWindow en cualquier momento mediante `Ctrl+Alt+F7` en adelante.

En algunas distribuciones puede ser necesario indicarle a inittab dónde está el gestor de runlevel 5 que debe arrancar:

Para xdm:

      #Run xdm in runlevel 5
      x:5:respawn:/usr/X11R6/bin/wdm -nodaemon

Para gdm:

      x:5:respawn:/etc/X11/prefdm -nodaemon

Estas líneas suelen ser automáticamente incluidas en el fichero por los rpm/deb instaladores de xdm, kdm y gdm. Consulte en la ayuda de dichos programas para más información.

## 6.7 ¿Qué es un gestor de ventanas?

Un gestor de ventanas no es otra cosa que el conjunto de programas, ventanas, funcionalidades, .... que hacen posible que el usuario pueda interactuar con el sistema de forma grafica y no en modo texto.

Para usar un gestor de ventanas, hay que tener configurado un servidor X. Tambien hay que decir que el gestor de ventanas utilizado es totalmente independiente del servidor X utilizado.

      Gestor de ventanas
            |
            |
         Cliente X
            |
            |
           Xlib
            |
            |
        Servidor X
            |
            |
    Sistema operativo

Al contrario que en otros sistemas operativos, en Linux no es necesario utilizar un servidor X - gestor de ventanas para usar el sistema. El sistema operativo y el conjunto servidor X - gestor de ventanas usado, son cosas totalmente diferentes, independientes entre si. Es mas, existen usuarios que trabajan en modo texto sin ningun problema y sin usar un interfaz grafico.

Existen numerosos y variados gestores de ventanas para Linux, unos mejores y otros mas desarrollados y estables. Es el usuario el que tiene que decidir que gestor satisface mejor sus necesidades, pudiendo incluso tener mas de uno instalado. Para aclarar un poco las cosas, podriamos decir que, si un ordenador es usado por varios usuarios, todos utilizaran el mismo servidor X pero no necesariamente el mismo gestor de ventanas.

## 6.8 ¿Cómo elijo el Gestor de ventanas que quiero arrancar?

Una vez configurado X se hace necesario decirle a XWindow qué gestor de ventanas debe arrancar. Dicho de una manera sencilla, XWindow es la conjunción de 3 componentes:

- El entorno de ventanas X Window: Es quien implementa las llamadas internas de XWindow, el protocolo X, etc., es decir, el sistema de comunicaciones entre aplicaciones.

- El servidor gráfico X. Es un programa (un fichero ejecutable) encargado de responder a las órdenes gráficas encargadas por el entorno de ventanas. Es el encargado de dibujar rectángulos, puntos de color o pixels, rellenar zonas, dibujar imágenes, etc. La manera de decirle a XWindow qué ejecutable es el que deseamos usar es crear un enlace simbólico llamado `/usr/X11R6/bin/X` que apunte al servidor que usemos:

        Ej: ln -s /usr/X11R6/bin/XF86-S3 /usr/X11R6/bin/X
        (le diría que utilice el servidor de las S3).

  Este enlace es creado por el programa de configuración cuando seleccionamos la tarjeta en la lista que nos presenta.

- El gestor de ventanas es el módulo encargado de decidir que aspecto, forma, funcionalidades, atajos de teclado, opciones y menúes debe tener XWindow.

Así, al dividir XWindow en estos 3 módulos se nos permite cambiar cualquiera de ellos para dotar a XWindow del aspecto o funcionalidades que deseemos. El entorno de ventanas no suele cambiarse nunca (es XFree86), y el servidor X tampoco, ya que éste último es siempre el ejecutable apropiado para manejar nuestra tarjeta gráfica (XFree86-SVGA, XFree86-S3, etc.), pero el último es totalmente seleccionable entre multitud de opciones y es lo que nos permite cambiar radicalmente el aspecto de XWindow. Cambiando el gestor de ventanas (o Window Manager) podemos cambiar prácticamente el funcionamiento completo de XWindow.

Gestores de ventanas hay muchos: kde, afterstep, gnome, WindowMaker, icewm, etc, y todos tienen sus respectivos ejecutables: startkde, afterstep, gnome-session, wmaker, icewm, etc. Toda esta explicación se ha dado por un motivo muy sencillo: la posibilidad de elegir el Gestor de Ventanas deseado es parte de la configuración activa de XWindow, y vamos a ver la manera de decirle a XWindow qué gestor deseamos utilizar.

Para ello, simplemente debemos ir al directorio HOME del usuario en cuestion (`/home/usuario`) o de root (`/root`) y editar (creándolo si no existe) el fichero de texto .xinitrc . En este fichero pondremos una línea que indicará el Gestor de Ventanas que deseamos utilizar, en el formato:

      exec ejecutable_del_gestor_de_ventanas

Además podemos utilizar líneas de comentarios que comiencen por el carácter '#' y que XWindow ignorará:

Ejemplos de ficheros `.xinitrc`:

      # utilizar afterstep
      exec afterstep

otro ejemplo podría ser lanzar kde:

      # utilizar KDE
      exec startkde

Así, dependiendo del ejecutable que lancemos (startkde, gnome-session, icewm, wmaker, ctwm, fvwm2, wmaker, blackbox, etc.) podremos arrancar el WM deseado.

## 6.9 ¿Dónde consigo un nuevo gestor de ventanas?

Muchas distribuciones incluyen en sus CDes una serie de gestores de ventanas. Tambien os lo podeis bajar de sus respectivos servidores web:

- AfterStep: http://www.afterstep.org
- Gnome: http://www.gnome.org/
- KDE: http://www.kde.org
- FVWM: http://www.hpc.uh.edu/fvwm/
- Enlightenment: http://www.rasterman.com/
- WindowMaker: http://www.windowmaker.org/
- mlvwm: http://www.bioele.nuee.nagoya-u.ac.jp/member/tak/mlvwm.html
- TkDesk: http://people.mainz.netsurf.de/~bolik/tkdesk/
- eXode: http://www.simplicity.net/exode/
- wm2: http://www.all-day-breakfast.com/wm2/
- icewm: http://www.kiss.uni-lj.si/~k4fr0235/icewm/

Next Previous Contents