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...
|