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
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:
/usr/X11R6/bin/SuperProbe
os puede ayudar a obtener informacion sobre vuestra tarjeta.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:
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_ESbien 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):
RgbPath "/usr/X11R6/lib/X11/rgb" FontPath "/usr/X11R6/lib/X11/fonts/75dpi:unscaled" (etc.)
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"
# Para un ratón microsoft mouse o un genius: Protocol "Microsoft" Device "/dev/mouse"
Section "Device" Identifier "Mach64 GB" VendorName "ATI" BoardName "ATI 3d Rage II" VideoRam 8192 EndSection
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
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.
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..
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íxelesUn ejemplo:
Virtual 1024 768Hay 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.
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_utilizarUn ejemplo:
DefaultColorDepth 16Un 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.
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 -nodaemonPara gdm:
x:5:respawn:/etc/X11/prefdm -nodaemonEstas 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.
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 operativoAl 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.
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:
/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.
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_ventanasAdemás podemos utilizar líneas de comentarios que comiencen por el carácter '#' y que XWindow ignorará:
Ejemplos de ficheros .xinitrc
:
# utilizar afterstep exec afterstepotro ejemplo podría ser lanzar kde:
# utilizar KDE exec startkdeAsí, dependiendo del ejecutable que lancemos (startkde, gnome-session, icewm, wmaker, ctwm, fvwm2, wmaker, blackbox, etc.) podremos arrancar el WM deseado.
Muchas distribuciones incluyen en sus CDes una serie de gestores de ventanas. Tambien os lo podeis bajar de sus respectivos servidores web: