Cuando inicia X, Debian ejecuta algunos guiones de intérprete de órdenes que inician el gestor de ventanas y otros clientes de X. Por defecto, se inician un gestor de ventanas, una xconsole, y una xterm.
Para configurar el inicio de sus X, el fichero /etc/X11/config debe contener la línea allow-user-xsession. Si no la contiene, inicie una sesión como root, y añádale esa línea ahora. Luego vuelva a la sesión con su usuario, y continúe la lección.
Puede ver cómo funciona el inicio de X de Debian en el fichero /etc/X11/Xsession. Tenga en cuenta que puede cambiar el comportamiento de /etc/X11/Xsession modificando el fichero /etc/X11/config que especifica unas pocas preferencias globales del sistema.
Para ejecutar los clientes de su elección cuando arranque X, debe crear un guión de intérprete de órdenes (shell script) ejecutable, llamado .xsession en su directorio personal.
Una vez que ha creado el .xsession, necesitará editarlo con su editor de texto favorito para que haga cosas útiles. Puede escribir lo que quiera en este guión. Sin embargo, cuando acabe de procesarse el guión, X también terminará.
En términos prácticos, quiere decir que a menudo acabará el guión con una llamada a exec. Cualquier programa que usted ejecute con exec reemplazará el proceso del guión por sí mismo, de manera que se ignorarán las órdenes que haya después del exec. El programa que usted ejecute se convierte en el nuevo dueño del proceso del guión, lo que significa que las X terminarán cuando acabe el proceso de este nuevo programa.
Supongamos que termina su .xsession con la línea exec fvwm. Ello quiere decir que se ejecutará el gestor de ventanas fvwm cuando se inicien las X. Cuando salga de fvwm, terminará la sesión de las X, junto con todos los demás clientes. No tiene que utilizar aquí el gestor de ventanas; podría escribir exec xterm, y en el caso de que escribiese exit en esa xterm en particular, causaría el final de toda la sesión X.
Si desea ejecutar otras órdenes antes de utilizar el exec, necesitará ponerlas en segundo plano. En cualquier otro caso, .xsession hará una pausa hasta que cada cliente salga antes de continuar con la siguiente línea. Mire la sección anterior al respecto de ejecutar tareas en segundo plano (básicamente se trata de poner un & tras la orden).
Puede aprovecharse de este comportamiento. Si desea ejecutar órdenes al final de la sesión X, puede utilizar el .xsession para ejecutar el gestor de ventanas que desee, y esperar a que termine. Es decir, eliminar el exec y el &; y escribir sencillamente fvwm. Escriba después las órdenes que quiere que se ejecuten tras el gestor de ventanas.
Posiblemente le ayude echar un vistazo a unos ficheros .xsession de ejemplo. En todos los ejemplos, reemplace fvwm con el gestor de ventanas que haya escogido.
El .xsession más sencillo, se limita a ejecutar un gestor de ventanas:
Un .xsession ejecutaría unos pocos clientes antes de iniciar el gestor de ventanas. Por ejemplo, puede que desee ejecutar algunas xterm y un xclock cuando inicie X. No hay problema; escriba sencillamente xterm & xterm & xclock& exec fvwm. Se ejecutará en segundo plano dos xterm y un xclock, y después se ejecutará el gestor de ventanas. Cuando salga del gestor de ventanas, también saldrá de X.
Puede intentar hacerlo sin pasar los programas a segundo plano, y ver lo que pasa. Introduzca esta orden: xterm xclock exec fvwm. se lanzará xterm, y esperará a que salga de ella. Entonces aparecerá el xclock; y tendrá que salir de él antes de que se inicie fvwm. Las órdenes se ejecutan por orden, ya que el guión espera a que cada una acabe antes terminar.
Puede utilizar esta ejecución secuencial a su favor. Quizá desee controlar el momento en que deja de trabajar todos los días:
Para acabar, también puede hacer que sean otros programas los que determinen el fin de X, en lugar del gestor de ventanas:
La mejor manera de aprender a utilizar .xsession es probar algunas de estas cosas. De nuevo, asegúrese de que utiliza chmod para hacerlo ejecutable; es un error bastante común olvidarse de hacerlo.