Appendix A. Configurare .xinitrc/.xsession

Contributo di Verin.

The place of xinit in things

Un window manager non solo che un'altra applicazione per X11, come netscape o gimp o xterm. Molte persone nuove con X11 possono pensare che X esegue il window manager e quest'ultimo esegue a sua volta i programmi. Ma questo non vero. Se giustamente configurato, puoi lanciare tutte le tue applicazioni sotto X11, uccidere il window manager ed eseguirne un'altro.

Il vero programma che X11 esegue, il quale a sua volta esegue poi gli altri programmi, il tuo script .xinitrc o .xsession. Quando X11 avviato, lo script .xinitrc o .xsession viene eseguito, e quando completato, X11 termina. Lasciatemi ripeterlo, che importante: quando .xinitrc finito, il momento in cui termina X. Non quando uscite dal vostro window manager.

Script layout

Bene, prima realizza qualcosa che gi conosci. Quando digiti un comando in una shell, non puoi fare nient'altro finch quel comando non terminato, quando esce. Il tuo script .xinitrc o .xsession la stesa cosa. Quando viene lanciato, esegue i programmi che contiene e se incontra un programma che impiega un lungo tempo per essere eseguito (come la maggior parte dei programmi di X11), si ferma l fino a che questo programma non termina.

Idealmente, dovresti avere solo un posto dove lo script si pianta. E normalmente alla fine. Cos, se vuoi eseguire un qualunqe programma sotto X11 prima di arrivare al punto dove si ferma, dovresti eseguirlo in background. Metti un & alla fine della linea. Cos, diciamo che vuoi eseguire xclock in aggiunta ad altre cose, metti questa linea prima del tuo punto di 'hangs':

    xclock &

Ora, la prossima cosa il comando exec, che molte fonti raccomandano di aggiungere per lanciare il tuo window managewr nello script. Ma onestamente, non realmente necessario se metti il comando per lanciare il tuo window manager sull'ultima riga dello script, il tutto si fermer giustamente qui anche senza il comando exec.

Perch il comando exec? Ammettiamo che tu voglia mettere molti comandi per far partire differenti window manager, e vuoi per farne partire realmente uno solo. Bene, col comando exec puoi mettere la tua linea di lancio all'inizio. Perch il comando exec significa:

"Rimpiazzami con questo programma, per esempio lancialo e terminami immediatamente quando finisce."

Cosi se metti una linea col comando exec wmaker all'inizio della linea exec enlightenment, quando wmaker terminato, lo anche lo script, che non eseguir mai la linea successiva.

Ti sembra che sia non necessario?Puoi anche mettere diverse linee commentate con differenti window manager e funzioner nello stesso modo.

Un altro modo di fare le cose

Come alternativa, puoi far partire il tuo window manager prima, e memorizzare il process ID in una variabile d'ambiente:

        wmaker & wmpid=$!

questo lo pone in background (&) e mette il process ID ($!) nella variabile (wmpid). Quindi, per avere il punto di 'hang', puoi usare il comando wait:

    wait $wmpid

oppure puoi fermarti su un programma che vuoi sempre usare, come forse le gkrellm, non mettendole in background. Ma ricorda che terminando questo programma, termine anche la sessione di X11.

Ora, io uso il metodo col wait, perch mi piace lanciare il mio window manager prima delle dockapps e varie. Inoltre, prima di fare ogni altra cosa, mi piace modificare i parametri del server X11, come il dpms, il salvaschermo ed aggiungere alcune directory al percorso dei miei fonts (perch sono fonts che non voglio installare per tutto il sistema). E dopo che tutto stato fatto, mi piace ripulire il percorso dei fonts (font path), principalmente perch se lanciavo un display manager, non una cosa buona resettare il font path tutte le volte.

Example A-1. .xinitrc

    # disattiva lo screen blanking e attiva le opzioni energy star 
    xset s off
    xset dpms 600 60 60

    # aggiunge i miei fonts supplementari ai fonts di sistema
    xset +fp "$X_FONTPATH"
    xset fp rehash

    # esporta l'ambiente corrente, in caso necessiti di essere debuggato
    env > ~/.xenv

    # window manager
    fluxbox & wmpid=$!

    bbrun &
    wmCalClock &
    wmxmms &

    # HANG POINT - aspetta il window manager per uscire
    wait $wmpid

    # resetta il font path di X
    xset fp default