# xinit (Italiano)

From ArchWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Articoli correlati

- Display Manager (Italiano)
- Start X at Login (Italiano)
- Xorg (Italiano)
- xprofile

Il file `~/.xinitrc` è uno shell script letto da `xinit` e `startx`. Viene tipicamente utilizzato per eseguire i window manager e altri programmi all'avvio di X, ad esempio demoni e configurazioni delle variabili d'ambiente. Il programma `xinit` viene utilizzato per avviare l'X Window System e funziona come un primo programma client su sistemi che non possono avviare direttamente X da `/etc/init`, o in ambienti che usano vari window manager.

Una delle funzioni principali di `~/.xinitrc` è quello di dettare quale client per il sistema X Window sarà invocato da `/usr/bin/startx` e/o il programma `/usr/bin/xinit` a utente singolo. Ci sono molte altre configurazioni e comandi che possono essere aggiunti a `~/.xinitrc` al fine di personalizzare ulteriormente il proprio sistema.

## Per iniziare

`/etc/skel/` contiene i file e le directory necessari a fornire valori predefiniti per gli account appena creati. (Il nome skel è derivato dalla parola skeleton, perché i file contenuti costituiscono la struttura di base per le home directory degli utenti.) Il pacchetto xorg-xinit provvederà a salvare in `/etc/skel` uno `.xinitrc` di esempio.

Nota: `~/.xinitrc` è un cosiddetto "dot" (.) file. Nei sistemi *nix, i file che sono preceduti da un punto (.) sono "nascosti" e non compaiono con un normale comando `ls`, di solito allo scopo di tenere ordinate le directory. I file nascosti possono essere visualizzati con `ls -a`. Il suffisso "rc" significa Run Commands e indica semplicemente che è un file di configurazione. Dal momento che controlla il modo in cui un programma viene eseguito, può inoltre (anche se storicamente inesatto) essere interpretato come "Run Control".

Copiare il file d'esempio `/etc/skel/.xinitrc` nella home directory:

    $ cp /etc/skel/.xinitrc ~

Quindi editare `~/.xinitrc` e decommentare la riga corrispondente al proprio ambiente desktop. Per esempio, se si utilizza Xterm, sarà simile a questo:

    #!/bin/sh
    #
    # ~/.xinitrc
    #
    # Executed by startx (run your window manager from here)

    if [ -d /etc/X11/xinit/xinitrc.d ]; then
      for f in /etc/X11/xinit/xinitrc.d/*; do
        [ -x "$f" ] && . "$f"
      done
      unset f
    fi

    # exec gnome-session
    # exec startkde
    # exec startxfce4
    # exec wmaker
    # exec icewm
    # exec blackbox
    # exec fluxbox
    # exec openbox-session
    # ...or the Window Manager of your choice
    exec xterm

Nota: Assicurarsi di aver decommentato solo una riga `exec` in `~/.xinitrc`.

Dopo aver editato `.xinitrc` si è pronti a lanciare X. Avviarlo da utente normale, non-root con:

    $ startx
    $ xinit
    $ xinit -- :1

Nota: `xinit` non può avviare sessioni multiple. Per questo può essere necessario l'uso di `-- :<session_no>`. In pratica questo è necessario se si ha già un'altra sessione di X aperta sul proprio sistema.

Il DE o WM scelto dovrebbe essersi avviato. È possibile provare la tastiera e la sua configurazione. Provare a spostare il mouse intorno per verificarne il funzionamento.

### Effettuare la scelta fra i DE/WM

Se non si usa un display manager e non si vuole usarne uno, `~/.xinitrc` è di fondamentale importanza. Questo è un esempio di `xinitrc` pronto per lanciare sessioni diversi in base agli argomenti che gli vengono forniti sulla riga di comando.

    #!/bin/sh
    #
    # ~/.xinitrc
    #
    # Executed by startx (run your window manager from here)

    if [ -d /etc/X11/xinit/xinitrc.d ]; then
      for f in /etc/X11/xinit/xinitrc.d/*; do
        [ -x "$f" ] && . "$f"
      done
      unset f
    fi

    # XFCE in questo caso è il default
    case $1 in
        gnome) exec gnome-session;;
        kde) exec startkde;;
        xfce);;
        *) exec startxfce4;;
    esac

Ora, `~/.xinitrc` può essere invocato in questo modo.

    $ xinit
    $ xinit gnome
    $ xinit kde
    $ xinit xfce -- :1

### Preservare la sessione

X deve essere avviato nella stessa tty in cui viene effettuato il login per preservare la sessione di `logind`. Questo aspetto è gestito di default da `/etc/X11/xinit/xserverrc`. Vedere anche General troubleshooting#Session permissions per i relativi problemi

## File d'esempio

Quello che segue è un semplice file `~/.xinitrc` d'esempio, compresi alcuni programmi in avvio automatico:

    ~/.xinitrc

    #!/bin/sh

    if [ -d /etc/X11/xinit/xinitrc.d ]; then
      for f in /etc/X11/xinit/xinitrc.d/*; do
        [ -x "$f" ] && . "$f"
      done
      unset f
    fi

    xrdb -merge ~/.Xresources         # aggiorna x resources db

    xscreensaver -no-splash &         # avvia il demone di xscreensaver
    xsetroot -cursor_name left_ptr &  # setta il cursore di X
    sh ~/.fehbg &                     # setta lo sfondo con feh

    exec openbox-session              # avvia il window manager

Anteporre `exec` è raccomandato in quanto sostituisce il processo corrente con il gestore, in tal modo nessun processo viene forkato in background.

## Configurazione del file

Quando non viene utilizzato un display manager, è importante ricordare che la vita della sessione di X inizia e finisce con lo script `.xinitrc`. Ciò significa che una volta terminato lo script, X termina indipendentemente dai programmi che stanno ancora girando (compreso il gestore delle finestre). È importante perciò che la chiusura del gestore delle finestre e di X coincidano. Ciò può essere facilmente realizzato lanciando il gestore finestre come ultimo programma nello script.

Si noti che nel primo esempio di cui sopra, programmi come `cairo-compmgr`, `xscreensaver`, `xsetroot` e `sh` vengono eseguiti in background (con aggiunto il suffisso `&`). Altrimenti, lo script potrebbe fermarsi e attendere che ogni programma e demone termini prima di eseguire `openbox-session`. Notare inotre che `openbox-session` non è in background. Questo garantisce che lo script non si chiuderà prima di openbox stesso.

Nelle sezioni seguenti verrà spiegato come configurare `~/.xinitrc` per De e WM multipli.

### Dalla riga di comando

Se si dispone di un `~/.xinitrc` funzionante, ma si desidera provare altri WM/DE, è possibile farlo mediante l'esecuzione di `xinit` seguito dal percorso del window manager:

    xinit /full/path/to/window-manager

Si noti che il percorso completo è richiesto. Opzionalmente, è possibile passare delle opzioni al server X con l'aggiunta di `--`, ad es.:

    xinit /usr/bin/enlightenment -- -br +bs -dpi 96

Il file `~/.xinitrc` seguente, mostra come avviare un particolare window manager con un argomento:

    ~/.xinitrc

    #!/bin/sh
    #
    # ~/.xinitrc
    #
    # Executed by startx (run your window manager from here)

    if [ -d /etc/X11/xinit/xinitrc.d ]; then
      for f in /etc/X11/xinit/xinitrc.d/*; do
        [ -x "$f" ] && . "$f"
      done
      unset f
    fi

    if [[ $1 == "fluxbox" ]]
    then
      exec startfluxbox
    elif [[ $1 == "spectrwm" ]]
    then
      exec spectrwm
    else
      echo "Choose a window manager"
    fi

Utilizzando questo esempio è possibile avviare fluxbox o spectrwm con il comando `xinit fluxbox` o `xinit spectrwm`.

### All'avvio

Vedere Avviare X al Login

Categories:

- Desktop environments (Italiano)
- X server (Italiano)