Difference between revisions of "Start X at Login (Italiano)"

From ArchWiki
Jump to: navigation, search
m
m (Suggerimenti)
(44 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
[[Category:X Server (Italiano)]]
 
[[Category:X Server (Italiano)]]
 
[[Category:Boot process (Italiano)]]
 
[[Category:Boot process (Italiano)]]
{{i18n|Start X at Boot}}
+
[[en:Start X at Boot]]
 +
[[es:Start X at Boot]]
 +
[[fr:Startx]]
 +
[[hu:Start X at Boot]]
 +
[[ja:Start X at Login]]
 +
[[pt:Start X at Boot]]
 +
[[ru:Start X at Boot]]
 +
[[th:Start X at Boot]]
 +
[[zh-CN:Start X at Boot]]
 
{{Article summary start|Sommario}}
 
{{Article summary start|Sommario}}
{{Article summary text|Tratta i vari metodi per inizializzare un [[Xorg (Italiano)|X server]] durante la fase di boot.}}
+
{{Article summary text|Come avviare X automaticamente dopo il login su una tty.}}
 
{{Article summary heading|Articoli collegati}}
 
{{Article summary heading|Articoli collegati}}
 +
{{Article summary wiki|systemd/User (Italiano)}}
 +
{{Article summary wiki|Automatic login to virtual console (Italiano)}}
 
{{Article summary wiki|Display Manager (Italiano)}}
 
{{Article summary wiki|Display Manager (Italiano)}}
{{Article summary wiki|Automatically login some user to a virtual console on startup}}
+
{{Article summary wiki|Silent boot}}
 
{{Article summary wiki|xinitrc (Italiano)}}
 
{{Article summary wiki|xinitrc (Italiano)}}
 
{{Article summary end}}
 
{{Article summary end}}
  
=Introduzione=
+
Questo articolo spiega come avviare automaticamente il [[Xorg (Italiano)|Server X]] dopo il login in un terminale virtuale attraverso l'utilizzo del comando {{ic|startx}}, il cui comportamento può essere modificato come riportato nella pagina relativa a [[xinitrc (Italiano)|xinitrc]], ad esempio per scegliere quale [[Window Manager (Italiano)|window manager]] avviare.
Tipicamente, i comandi {{Filename|startx}} o {{Filename|xinit}} sono usati per avviare X in modo manuale. Entrambi eseguiranno il contenuto del file {{Filename|~/.xinitrc}}, che può essere personalizzato per avviare il window manager di vostra scelta, come descritto nell'articolo [[xinitrc (Italiano)|xinitrc]].
+
  
La maggior parte degli utenti che desiderano inizializzare un server X in fase di boot installano un gestore di login grafico: si veda  [[Display Manager (Italiano)|Display Manager]] per i dettagli.
+
In alternativa, è possibile utilizzare un [[Display Manager (Italiano)|display manager]] per avviare automaticamente X e fornire un login grafico.
  
Usando il [[#Metodo ~/.bash_profile]], X verrà avviato una volta che si è fatto il login ad una tty. Il [[#Metodo /etc/inittab]] consente di avviare X automaticamente, senza che venga richiesta una password.
+
==Avviare X automaticamente dopo il login in un terminale virtuale==
  
=Metodi=
+
{{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.}}
==Metodo {{Filename|~/.bash_profile}}==
+
{{Nota|Questo metodo può essere combinato con [[automatic login to virtual console]] di modo che si comporti in modo simile al metodo inittab, con la differenza che questo registrerà correttamente la vostra sessione e funzionerà con consolekit.}}
+
Una via alternativa all'utilizzo di un login manager è quella di aggiungere questo codice in fondo al vostro {{Filename|~/.bash_profile}} presente nella vostra home (se questo file non esiste, dovrete crearlo. Se si sta usando [[Zsh]] come shell predefinita, si aggiungano invece le righe seguenti al proprio {{Filename|~/.zprofile}}).
+
{{File
+
|name=~/.bash_profile
+
|content=<nowiki>
+
if [[ -z $DISPLAY ]] && [[ $(tty) = /dev/tty1 ]]; then
+
  exec startx
+
  # È possibile usare xinit invece di startx
+
  # exec xinit -- /usr/bin/X -nolisten tcp vt7
+
fi
+
</nowiki>}}
+
  
oppure, con controlli addizionali (se la tty1, accessibile con ctrl-alt-F1, riporta un messaggio d'errore):
+
* Se si usa [[Bash (Italiano)|Bash]], aggiungere il comando al proprio {{ic|~/.bash_profile}}.
 +
Se il file non esiste lo si copi da {{ic|/etc/skel/.bash_profile}}.
 +
* Se si usa [[Zsh|Zsh]] aggiungere il comando al file {{ic|~/.zprofile}}
  
{{File
+
{{bc|1=<nowiki>
|name=~/.bash_profile
+
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
|content=<nowiki>
+
if [[ -z $DISPLAY ]] && ! -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
+
  exec startx
+
fi
+
 
</nowiki>}}
 
</nowiki>}}
  
O con una richiesta esplicita:
+
{{Nota|
 +
* È possibile sostituire {{ic|-eq 1}} con {{ic|-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 {{ic|/etc/X11/xinit/xserverrc}}.}}
  
{{File
+
* Se si utilizza la [[Fish|Fish]] shell, è necessario aggiungere quanto segue in fondo al proprio {{ic|~/.config/fish/config.fish}}
|name=~/.bash_profile
+
 
|content=<nowiki>
+
{{bc|1=<nowiki>
+
# start X at login
if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]] && (( EUID )); then
+
if status --is-login
while true; do
+
    if test -z "$DISPLAY" -a $XDG_VTNR = 1
read -p 'Do you want to start X? (y/n): '
+
        exec startx
case $REPLY in
+
    end
  [Yy]) exec xinit -- /usr/bin/X -nolisten tcp vt7 ;;
+
end
  [Nn]) break ;;
+
  *) printf '%s\n' 'Please answer y or n.' ;;
+
esac
+
done
+
 
</nowiki>}}
 
</nowiki>}}
  
 +
==Suggerimenti==
  
Usando questo metodo, l'utente verrà automaticamente disconnesso quando X viene terminato. Per evitare questo comportamento, rimuovere il comando {{Codeline|exec}} dallo script.
+
* Il metodo appena presentato può essere combinato con [[Automatic login to virtual console (Italiano)|il login automatico da console virtuale]].
 
+
==Metodo {{Filename|/etc/inittab}}==
+
{{Attenzione|Questo metodo non userà /bin/login, né registrerà la sessione, percui essa non comparirà nell'output di comandi come `who` o `w`. Inoltre, la sessione non verrà autorizzata come "locale" da consolekit, perciò non sarete in grado di spegnere/riavviare il pc o montare/smontare i drives senza l'ausilio di sudo o su}}
+
Un altro metodo è quello di inizializzare direttamente X con il vostro DE\WM preferito, senza richiesta di nessun login, e lo si può fare editando con permessi di root, il file {{Filename|/etc/inittab}} in questo modo:
+
 
+
id:3:initdefault:
+
+
[...]
+
+
x:5:respawn:/usr/bin/xdm -nodaemon
+
 
+
in:
+
 
+
id:5:initdefault:
+
+
[...]
+
+
x:5:once:/bin/su - -- PREFERRED_USER -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
+
 
+
L'opzione - invoca una "shell di login" aggiungendo un trattino (-) al suo nome. Dal momento che è stato specificata l'esecuzione di un comando con lo switch -c, la shell sarà avviata in "modalità non interattiva". [[Bash (Italiano)|Bash]] non effettua il normale processo di login in modalità non interattiva a meno che non sia costretto a farlo con lo switch -l. L'opzione -- assicura che gli switch -l e -c siano passati alla shell, invece che a [[su]]. Questi workarounds sono necessari a causa della combinazione tra Gnu su e Bash; si veda a tal proposito [http://linux.derkeiler.com/Newsgroups/comp.os.linux.misc/2006-09/msg00666.html "su 5.2.1 does not invoke bash as a login shell"].
+
 
+
Lo standard input deve essere rediretto ({{Codeline|</dev/null 2>&1}}) se Getty o qualche altro programma è ancora in uso sulla console, altrimenti potrebbero verificarsi conflitti tra più programmi che si "rubano" a vicenda l'output della console.
+
 
+
È altresì possibile redirigere l'output a /dev/null per evitare che X scriva i suoi messaggi in console.
+
 
+
Il campo {{Codeline|once}}, può essere cambiato in {{Codeline|respawn}} per far sì che X venga riavviato dopo la sua chiusura.
+
 
+
Il comando {{Codeline|startx}} può essere modificato secondo le proprie necessità. Di seguito, alcuni esempi:
+
 
+
startx -- -nolisten tcp -br -deferglyphs 16
+
 
+
È possibile ripetere l'intera procedura per più utenti, usando runlevels differenti:
+
 
+
x1:4:once:/bin/su - -- PREFERRED_USER1 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
+
x2:5:once:/bin/su - -- PREFERRED_USER2 -l -c '/usr/bin/startx </dev/null >/dev/null 2>&1'
+
  
e inserire due voci nel menu.lst di GRUB:
+
{{Attenzione|1=Se si utilizza [[PulseAudio (Italiano)|PulseAudio]] ricordarsi di impostare in modo corretto le dipendenze per il servizio di autologin di systemd affinchè dbus sia avviato prima che {{ic|~/.xinitrc}} sia letto. (Si veda [https://bbs.archlinux.org/viewtopic.php?id=155416 BBS#155416]).}}
  
# (0) Arch Linux
+
* Se si desidera mantenere il login su TTY quando la sessione di X viene terminata, si rimuova {{ic|exec}}.
title  Arch Linux USER1
+
* Per redirigere l'output della sessione di X su un file, si crei un [[Bash (Italiano)#Alias|alias]]:
root  (hd0,0)
+
kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 4
+
initrd /initramfs-linux.img
+
  
# (1) Arch Linux
+
: {{bc|1=alias startx='startx & > ~/.xlog'}}
title  Arch Linux USER2
+
root  (hd0,0)
+
kernel /vmlinuz-linux root=/dev/disk/by-label/Arch ro 5
+
initrd /initramfs-linux.img
+
  
{{Nota|Se si hanno problemi con caratteri non-ASCII nell'X avviato in questo modo, rimuovere lo switch -l (si veda [http://bugs.gentoo.org/show_bug.cgi?id=339182#c4 qui]).}}
+
* Se si dispone di un file di configurazione del profilo ({{ic|~/.bash_profile}} o {{ic|~/.zprofile}}, ecc.) si inserisca il comando di cui sopra in questi files, in modo che venga eseguito solo se il login avviene correttamente

Revision as of 12:12, 8 August 2013

Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary wiki Template:Article summary end

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.

Avviare X automaticamente dopo il login in un terminale virtuale

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 ~/.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.
  • 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 = 1
        exec startx
    end
end

Suggerimenti

Attenzione: Se si utilizza PulseAudio ricordarsi di impostare in modo corretto le dipendenze per il servizio di autologin di systemd affinchè dbus sia avviato prima che ~/.xinitrc sia letto. (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'
  • Se si dispone di un file di configurazione del profilo (~/.bash_profile o ~/.zprofile, ecc.) si inserisca il comando di cui sopra in questi files, in modo che venga eseguito solo se il login avviene correttamente