Start X at Login (Italiano)

From ArchWiki
(Redirected from Far partire X al boot)
Jump to: navigation, search

Questo articolo spiega come avviare automaticamente il Server X dopo il login in un terminale virtuale attraverso l'utilizzo del comando startx, il cui comportamento può essere modificato come riportato nella pagina relativa a xinitrc, ad esempio per scegliere quale window manager avviare.

In alternativa, è possibile utilizzare un display manager per avviare automaticamente X e fornire un login grafico.

File di configurazione delle shell

Nota: Il comando di cui sotto avvia X nella stessa tty dal quale si effettua il login, condizione necessaria per mantenere la sessione di login.

Se si usa Bash, aggiungere il comando al proprio ~/.bash_profile. Se il file non esiste lo si copi da /etc/skel/.bash_profile. Se si usa Zsh aggiungere il comando al file ~/.zlogin o ~/.zprofile.

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
Nota:
  • È possibile sostituire -eq 1 con -le 3 (per i vt dal 1 al 3) se si desidera avvalersi del login grafico su più di un terminale virtuale.
  • X deve essere sempre avviato dalla stessa tty dove si è effettuato il login, in modo che la sessione di logind venga mantenuta. Questo comportamento è garantito dal file /etc/X11/xinit/xserverrc.
  • xinit è generalmente più veloce di startx, ma è necessario specificare manualmente dei parametri aggiuntivi come -nolisten tcp.

Se si utilizza la Fish shell, è necessario aggiungere quanto segue in fondo al proprio ~/.config/fish/config.fish

# start X at login
if status --is-login
    if test -z "$DISPLAY" -a $XDG_VTNR -eq 1
        exec startx -- -keeptty
    end
end
Nota: startx richiede il parametro -keeptty quando si utilizza fish. Si veda questo bug report.

Utilizzando systemd

Si crei un file .service (ad esempio /etc/systemd/system/xinit@.service):

[Unit]
Description=startx for user %i
After=x@vt7.service systemd-user-sessions.service
Wants=x@vt7.service
Conflicts=getty@tty7.service

[Service]
User=%i
TTYPath=/dev/tty7
PAMName=login
Environment=DISPLAY=:0
WorkingDirectory=/home/%I
Nice=0
ExecStart=/bin/bash -l -c "cd; startx >/dev/null 2>&1"

[Install]
WantedBy=graphical.target

Assicurarsi che ~.xinitrc esista e sia configurato in modo corretto.

Si abiliti ed attivi quindi il servizio.

Suggerimento: Rimuovere >/dev/null 2>&1 per effettuare il debug.

Suggerimenti

  • Il metodo appena presentato può essere combinato con il login automatico da console virtuale. Quando si utilizza questo metodo sarà necessario modificare il servizio di systemd per l'autologin in modo che DBus venga avviato prima della lettura di ~/.xinitrc, per permettere così l'avvio di PulseAudio. (si veda BBS#155416)
  • Se si desidera mantenere il login su TTY quando la sessione di X viene terminata, si rimuova exec.
  • Per redirigere l'output della sessione di X su un file, si crei un alias:
alias startx='startx & > ~/.xlog'
Nota: la ridirezione dello stderr (startx &>) crea problemi all'avvio di X da utente normale. Si veda a tal proposito Xorg#Rootless Xorg (v1.16).

Riferimenti

Avvio di X dopo l'autologin