Home Index Search Links About Us
[LinuxFocus Image]
[Navegation Bar]
  Noticias   Archivos   Compañías   Consejos  

Configurando X:

¿Para qué sirven todos esos ficheros?

por Joel McCarty


Introducción

.xinitrc

.Xclients

.Xresources

Introducción

Este artículo está pensado para nuevos administradores de sistemas y para usuarios particulares que se preguntan cómo obtener mayor flexibilidad al configurar sesiones de X para sí mismos y para sus usuarios.

Antes de nada, en este artículo asumimos que el X Window System ya está instalado y que se arranca con el comando startx (configurar X para múltiples usuarios vía XDM será, esperemos, el tema de un próximo artículo). Ahora veamos los ficheros básicos que explicaremos y una breve sinopsis de lo que hacen...

xinitrc
xinitrc es un shell script que se pasa a xinit mediante el comando startx. Este script normalmente inicializa algunos recursos globales (configuración del salvapantallas, definiciones del teclado, etc). Es el fichero que une todos los procesos de inicio de X.

Xclients
Es un fichero oculto (tipo .*) en el directorio home del usuario que inicia clientes específicos del usuario, al contrario de los iniciados por xinitrc.

Xresources
Es un fichero que contiene definiciones de widgets que se superponen a las definiciones por defecto de los programas. Se usa normalmente para especificar tamaños de fuentes, colores y configuraciones del aspecto de los programas, pero se puede usar también para conseguir algunos efectos gráficos espectaculares.

Ahora que hemos visto los ficheros básicos involucrados, veamos cómo se utilizan..

.xinitrc

Después de lanzar el comando startx, xinit (que es el responsable del proceso de inicio de X) evalúa o /etc/X11/xinit/xinitrc (global) o, si existe, ~/.xinitrc (local). Si ninguno de estos ficheros existe la elección de la configuración se deja al proceso xinit (no recomendable). El fichero xinitrc (con precedencia del fichero local sobre el global) es un shell script que inicia varios clientes X y a continuación usa exec para iniciar el controlador de ventanas especificado.

El fichero xinitrc más sencillo será algo así como...

        # /etc/X11/xinit/xinitrc
        #!/bin/sh
                
        exec /usr/X11R6/bin/fvwm2
Este fichero no hace nada más que ejecutar el controlador de ventanas fvwm2 (Feeble Virtual Window Manager 2) y ningún cliente. No muy útil, pero interesante si quieres crear una configuración para un nuevo controlador de ventanas en un momento. Las cosas se ponen más interesantes cuando añadimos algo de configuración e iniciamos algunos clientes que queremos tener cada vez que se inicia X...
        #/etc/X11/xinit/xinitrc
        #!/bin/sh

        # arreglar el molesto problema de la tecla de borrado     
        xmodmap -e "keycode 22=BackSpace"

        # poner el fondo
        xsetroot -solid LightSlateGrey

        # salvapantallas en cinco minutos
        xset s 300

        # a continuacion, los clientes X que se iniciaran siempre

        xterm -g 80x20+150+8 &        # iniciar una ventana con una terminal
        xterm -g 80x20+150+325 &      # iniciar otra ventana bajo la primera
        xload -g +4+0 &               # iniciar un medidor de carga de la cpu
        xclock -g +815+0 -digital &   # iniciar un reloj digital             

        # Iniciar el Controlador de Ventanas
        exec fvwm2

Captura de la sesión X usando esta configuración

Ahora tenemos un fichero que arregla el molesto problema de la tecla de borrado (casi siempre), activa nuestro numlock, quita el fondo moire tan pesado y arranca un par de programas cada vez que iniciamos X.

Unas cosillas para recordar, un fichero local en el directorio del usuario se usará siempre que exista (ignorando totalmente la configuración global del sistema). Recordar también la opción -g en la mayoría de comandos, es la opción de la geometría que está disponible en muchos programas X. Cuando se usa, especifica el tamaño y posición de un programa como...

Anchura x Altura + Coordenada X + Coordenada Y

Lo que hay que vigilar aquí es que xterm (y la mayoría de programas de terminal) especifican la anchura y altura en número de caracteres, la mayor parte de los otros programas utilizan pixels para estos valores (así que si no tienes cuidado acabarás con unas bonitas ventanas enanas!) Finalmente presta atención al símbolo & añadido al final de cada programa (excepto del controlador de ventanas). Este símbolo le dice a los programas que se ejecuten en segundo plano (sinó el siguiente programa no se iniciaría hasta que el anterior se cancele, que no es lo que queremos). Así pues, SOLO el Controlador de Ventanas se inicia en primer plano y elimina a todos los programas iniciados vía xinitrc cuando se sale de X.

Ya tenemos un script funcional que se puede usaar globalmente y poner en el directorio de un usuario si queremos configurar algunos clientes para algunos usuarios particulares (por ejemplo, podríamos querer escribir scripts específicos para cada departamento para que un usuario de un departamento de ingeniería obtenga un inicio diferente de X del que obtiene un usuario de contabilidad). A pesar de que hay interesantes posibilidades aquí hemos infrautilizado muchas de sus capacidades. Fijaros que es un shell script, por lo que podemos llamar cualquier comando normal que normalmente usamos. Veamos ahora un último ejemplo que usa xmodmap y xrdb para unir una configuración personal de un usuario con la configuración global de sistema del fichero xinitrc, liberándonos de la tarea de pelearnos con el fichero xinitrc de los usuarios que utilicen configuraciones personalizadas (nota: el uso específico de Xclients y Xresources se explicará en las próximas secciones):

        #/etc/X11/xinit/xinitrc
        #!/bin/sh

        # define las ubicaciones de los recursos globales y locales
        userclients=$HOME/.Xclients
        userresources=$HOME/.Xresources
        usermodmap=$HOME/.Xmodmap
        sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
        sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

        # mezcla Xdefaults y mapas de teclado de usuario y de sistema 
                if [ -f $sysresources ];  then xrdb -merge $sysresources; fi
                if [ -f $sysmodmap ];     then xmodmap $sysmodmap; fi
                if [ -f $userresources ]; then xrdb -merge $userresources; fi
                if [ -f $usermodmap ];    then xmodmap $usermodmap; fi

        # arreglar el molesto problema de la tecla de borrado
        xmodmap -e "keycode 22=BackSpace"

        # poner el fondo
        xsetroot -solid LightSlateGrey

        # salvapantallas en cinco minutos
        xset s 300

        # busca ~/.Xclients y lo ejecuta y sino ejecuta los clientes
        # por defecto del sistema ( no mezcla locales y globales)
                if [ -f $userclients ]; then 
                        exec $userclients
                else
                
                # inicia algunos clientes                
                xterm -g 80x20+150+8 &
                xterm -g 80x20+150+325 &
                xload -g +4+0 &             
                xclock -g +815+0 -digital &                 
                # inicia el controlador de ventanas
                fvwm2
                
                fi
 

Captura de la sesión X usando esta configuración

Lo primero que hemos hecho es cargar todos los mapas de teclado de sistema y las configuraciones por defecto de los programas también de sistema (definidas en .Xmodmap y .Xresources) y después cargar todas las configuraciones específicas del usuario (situadas en su directorio). A continuación añadimos los ajustes adicionales que queremos cargar incluso aunque no existan en la configuración del sistema o el usuario (por ejemplo, el arreglo de la tecla de borrado). Luego miramos si el usuario tiene el fichero Xclients en su directorio (y lo cargamos) o sino iniciamos alguna configuración global del sistema (fíjate que al contrario que los defaults y recursos de antes, estas dos lineas no se mezclan). Una cosa a reseñar es que si el usuario no tiene un Xclients, su inicio de X será como nuestra   foto de pantalla original  al contrario que  la de arriba; así pues, tenemos la posibilidad de tener simultáneamente un look and feel de sistema y un entorno muy personalizado en el mismo xinitrc. Finalmente, comprobamos si nuestro(s) controlador(es) de ventanas preferido(s) está(n) presente(s), sinó usaremos el viejo fvwm2 (si no está instalado el sistema cargará twm como último recurso). Ahora tenemos un setup que nos permite personalizar el sistema a gran escala simplemente modificando ficheros locales y globalmente modificando ficheros globales sin tener que tocar nuestro fichero script de nuevo.

 Veamos ahora algunos de los ficheros que hemos mencionado...

.Xclients

El fichero ~/.Xclients contiene clientes específicos del usuario para ser leídos y ejecutados al inicio de la sesión de X. La sintaxis del fichero es como la del fichero xinitrc. A continuación está el fichero ~/.Xclients cargado vía xinitrc usado en las fotos de pantalla anteriores.

  

        xv -rmode -noresetroot -quit /usr/local/backgrounds/slate.xpm &
        kfm &
        kcontrol -init &
        kbgndwm &
        krootwm &
        kpanel &
        kvt &
        kwm
Como puedes ver en la foto de pantalla anterior, se puede usar Xclients para desarrollar entornos personalizados a la vez que mantenemos un fichero xinitrc centralizado. Una cosa a reseñar, en el .xinitrc anterior no se inicia ningún cliente desde este fichero si ~/.Xclients está presente. Yo uso esta configuración para que cada usuario pueda iniciar su controlador de ventanas favorito vía Xclients. Si necesitas clientes específicos de sistema que se carguen universalmente, cárgalos antes de ejecutar el Xclients del usuario (si ~/.Xclients contiene una llamada a un controlador de ventanas). Para aquellos de vosostros interesados en la configuración de mi escritorio usada en el último ejemplo, mirad en la  KDE's home page. La versión 3.0 Beta acaba de salir y contiene muchas herramientas de configuración GUI.
 
 

.Xresources

Los recursos en X definen ajustes de los programas localmente (~/.Xresources) o globalmente (/usr/X11R6/lib/X11/xinit/.Xresources). Los programas X están hechos de widgets. Los widgets son elementos de control, esto es, hay widgets para las fuentes, las barras de desplazamiento y los ajustes del fondo. Casi todo en un programa de X es un widget (y por lo tanto es configurable).

Los widgets están organizados normalmente de manera jerárquica, i.e. dentro de un widget de marco para un menú pueden haber varios widgets para los botones individuales. Para especificar completamente los cambios para un widget específico se debe expresar como un path hasta el componente individual, este path es el nombre del widget en la jerarquía. Como ejemplo, os muestro líneas de mi fichero ~/.Xdefaults que estandarizan todas mis ventanas de terminal.

XTerm*Font:             -misc-fixed-bold-r-normal-15-140-75-75-c-90-iso8859-1
XTerm*Background:       black
XTerm*Foreground:       cyan
XTerm*scrollBar:        true
XTerm*saveLines:        500
Xterm*VT100.geometry:   80x24
Los caracteres comodín están permitidos en este fichero...

*Foreground: cyan
*Background: black

define un aspecto estándar para todos los programas que no tengan ajustes explícitos en el Xdefault. Si eres como yo y quieres más flexibilidad que la que te ofrecen los caracteres comodín pero no puedes recordar toda la jerarquía de widgets... usa nuestro editres! editres es una herramienta de configuración con interfase gráfica que te permitirá generar ajustes totalmente personalizados sin tener que escribir un fichero .Xdefaults. Mira esto:   foto de editres en acción  ! De momento te habrás dado cuenta de que Xdefaults te ofrece muchas oportunidades de crear un aspecto común a la vez que clientes altamente personalizados. Mira lo que Xdefaults le ha hecho a esta  xcalc. Si quieres un tutorial paso a paso para aprovechar totalmente todas las posibilidades de editres, visita   Isolation's X tips page.

Bueno, esto es todo por este mes. Espero que de momento ya veas que X puede estar tan estandarizado o personalizado como quieras sin tener que pasar horas reescribiendo scripts para cada nuevo usuario. En el próximo número veremos cómo tener múltiples logons de X en la misma estación de trabajo usando el X Display Manager. Si tienes alguna pregunta o comentario, no dudes en escribirme. Hasta la próxima...
 


Traducido por Hugo Lastras

Para más información:
  • Lee las páginas del manual (manpages) de xinit y X.


© 1998 Joel McCarty
Páginas web mantenidas por Miguel A Sepulveda.