Appendix A. Configurando .xinitrc/.xsession

Contribuido por Verin

El lugar de xinit

Un administrador de ventanas es solo otra aplicación para X11, como netscape o gimp o xterm. Muchas personas nuevas a X11 creen que X11 ejecuta el administrador de ventanas y el administrador de ventanas ejecuta las aplicaciones. Pero eso no es correcto. Si se configura apropiadamente, usted podra ejecutar todas las aplicaciones bajo X11, matar el administrador de ventanas, y ejecutar otro administrador de ventanas.

El verdadero programa que X11 carga, que ejecuta todos los otros programas, es su script .xinitrc o .xsession. Cuando X11 arranca, su script .xinitrc o .xsession es ejecutado, y cuando el script finaliza, es cuando X11 es cerrado. Dejeme repetir esto, es importante: cuando .xinitrc ha finalizado, es cuando X termina su ejecución. No es cuando su administrador de ventanas termina.

Diseño del Script

Bien, primero dese cuenta de algo que ya sabe. Cuando tipea un comando en el shell, no puede hacer nada hasta que el comando ha terminado. Su script .xinitrc o .xsession hace lo mismo. Cuando comienza su ejecución, si ejecuta algun programa que se demora mucho tiempo (como casi todos los programas de X11), parara en ese punto hasta que ese programa ha terminado.

Idealmente, deberia tener solo un lugar donde el script se "cuelga". Y usualmente este punto esta ubicado al final. Entonces, si tiene algun programa que quiera ejecutar en X11 antes de llegar al punto de "cuelgue", deberia ejecutar el programa en segundo plano. Ponga un & al final de la linea. Entonces, si usted quiere ejecutar xclock ademas de otras aplicaciones, ponga esta linea antes del punto de "cuelgue":

    xclock &

Ahora, el siguiente paso es el parametro exec, donde muchas fuentes recomiendan como agregar el administrador de ventanas a su script. Pero honestamente, no es necesario, si pone a su administrador de ventanas en la ultima linea de su script, se colgara en el lugar correcto sin necesidad de usar exec.

Entonces por que el comando exec? Bien, digamos que usted quiere poner muchos administradores de ventanas en su script, y quiere que solo uno funcione. Bien, con exec usted puede poner su elección de inicio en la parte superior. Por que esto es lo que exec significa:

"Me reemplazare con este programa, o sea, se inicia el programa y luego me cerrare inmediatamente cuando se termine."

Entonces si pone una linea exec wmaker encima de una linea exec enlightenment, cuando wmaker haya terminado, tambien ha terminado el script, nunca llega a la siguiente linea.

Ve que quiero decir con innecesaria? Podria solo poner un monton de lineas comentadas con los administradores de ventanas, y funcionaria de la misma manera.

Otra manera de hacer las cosas

Como una alternativa, podria iniciar el administrador de ventanas primero, y guardar el ID del proceso en una variable de ambiente:

        wmaker & wmpid=$!

eso pone el programa en segundo plano (&) y pone el Id del proceso ($!) en una variable (wmpid). Luego, para hacer el punto de cuelgue, puede usar wait:

    wait $wmpid

o podria colgarse de un programa que siempre usa, como tal vez gkrellm, con solo no ponerlo en segundo plano. Pero recuerde que en cuanto lo termine, tambien se terminará la sesión X11.

Ahora, yo uso el metodo wait, porque me gusta seleccionar mi administrador de ventanas antes de ejecutar mis aplicaciones dock y el resto de los programas. También, antes de hacer algo más, me gusta cambiar las configuraciones en mi servidor X11, como dpms, el protector de pantallas, e incluso agregar algunos directorios a mi path de fuentes (fuentes que no quiero instalar universalmente). Y entonces despues de que todo esta hecho, me gusta limpear mi path de fuentes, principalmente por que ejecuto un administrador de ventanas, no es bueno reiniciar el path de fuentes todo el tiempo.

Example A-1. .xinitrc

    # deshabilitar la opción de pantalla negra y activar las características de energia
    xset s off
    xset dpms 600 60 60

    # Agregar mis fuentes opcionales a mi path de fuentes 
    xset +fp "$X_FONTPATH"
    xset fp rehash

    # exportar en ambiente actual, en caso de que sea necesario depurar 
    env > ~/.xenv

    # Administrador de ventanas 
    fluxbox & wmpid=$!

    bbrun &
    wmCalClock &
    wmxmms &

    # PUNTO DE CUELGUE - espera que el administrador de ventanas se cierre
    wait $wmpid

    # restaura el path de fuentes de X
    xset fp default