Appendix A. Configuration .xinitrc/.xsession

Contribution de Verin

L'utilité de .xinit

Vous devez comprendre qu'un gestionnaire de fenêtres n'est qu'une autre application pour X comme netscape ou gimp ou xterm. De nombreuses personnes novices à X pensent que X exécute un gestionnaire de fenêtres et que le gestionnaire de fenêtres exécute les programmes. Mais cela est faux. Si la configuration est bonne, vous pouvez exécuter toutes vos application sous X, tuer le gestionnaire de fenêtres et redémarrer un nouveau gestionnaire de fenêtres.

Le véritable programme que X exécute, et qui exécute d'autres programmes, est votre script .xinitrc ou .xsession. Quand X est démarré, votre script .xinitrc ou .xsession est exécuté, et quand le script est fait, X se termine. Laissez moi répéter cela car c'est important: quand .xinitrc est fini, cela signifie que X se termine. Ce n'est pas quand vous sortez de votre gestionnaire de fenêtres.

Syntaxe du script

Bien, premièrement vous devez savoir quelque chose que vous connaissez sans doute déjà. Quand vous tapez une commande dans un shell, vous ne pouvez pas faire autre chose jusqu'à ce que la commande soit finie. Votre script .xinitrc ou .xsession se comporte de la même manière. Quand ce script démarre, si il comporte un programme qui prend du temps pour s'exécuter (comme la plupart de programmes X), il s'arrète jusqu'à ce que ce programme soit terminé.

Idéalement, vous devez avoir un seul endroit ou le script "bloque". Et couramment, vous désirez que cela arrive à la fin du script. Ainsi, si vous avez des programmes que vous voulez exécuter sous X avant d'avoir ce "blocage", vous devez les mettre en fond. Vous mettez un & à la fin de la ligne. Ainsi, si vous voulez que xclock s'exécute en addition à d'autres choses, ajoutez cette ligne avant le "blocage" :

	xclock &

Maintenant, la prochaine commande que nous verrons est exec, qui est recommandé par de nombreuses source pour ajouter votre gestionnaire de fenêtres à votre script. Mais honnêtement, cela n'est pas réellement nécessaire, car si vous mettez votre gestionnaire de fenêtres à la dernière ligne de votre script, il se bloquera sans l'utilisation de exec.

Alors à quoi sert exec ? Et bien, admettons que vous voulez ajouter de nombreuses lignes de démarrage de gestionnaire de fenêtres dans votre script mais que vous ne voulez en faire marcher qu'un seul. Avec exec vous pouvez mettre la ligne de démarrage de votre choix au début. Car exec signifie:

"Quand ce programme est fini, finis le script à cet endroit"

Ainsi si vous écrivez la ligne exec wmaker au dessus d'une ligne exec enlightenment, quand wmaker se termine, alors le script également et il n'ira jamais à la prochaine ligne.

Ainsi vous pourrez rajouter autant de lignes pour les gestionnaires de fenêtres que vous voudrez, cela ne modifiera rien.

Une autre manière de réaliser cela

Comme alternative, vous pouvez démarrer votre gestionnaire de fenêtres EN PREMIER et stocker l'id du process dans une variable d'environnement :

        wmaker & wmpid=$!

cela le placera en fond (&) et mettra l'id du process ($!) dans une variable (wmpid). Ainsi, pour réaliser le point de blocage, vous pouvez utiliser wait:

        wait $wmpid

ou vous pouvez bloquer un programme que vous voulez toujours utiliser, comme peut être gkrellm, en ne le mettant pas en fond.

Désormais, j'utilise la méthode wait, car j'aime régler mon gestionnaire de fenêtres avant de lancer mes dockapps. Ainsi, avant de faire quoique ce soit d'autre, j'aime modifier les réglages de mon serveur X, comme le dpms, l'écran de veille, et même ajouter des répertoires au path des fontes (des fontes que je ne veux pas installer universellement). Et après avoir tout fait, j'aime nettoyer mon path de fontes, principalement car si j'exécute un gestionnaire de fenêtres, il n'est pas bon d'annuler le path des fontes tout le temps.

Example A-1. .xinitrc

    # désactiver la mise en veille et activer les options energy star
    xset s off
    xset dpms 600 60 60

    # ajouter mon path des fontes optionnel au path des fontes
    xset +fp "$X_FONTPATH"
    xset fp rehash

    # exporter l'environnement courant, au cas ou il nécessite d'être débuggé
    env > ~/.xenv

    # gestionnaire de fenêtres
    fluxbox & wmpid=$!

    bbrun &
    wmCalClock &
    wmnet -x 70000 -d 300000 -L cablemodem -w &
    wmxmms &

    # POINT de BLOCAGE - attend la sortie du gestionnaire de fenêtres
    wait $wmpid

    # rétablit le path des fontes de x
    xset fp default