Difference between revisions of "Start X at login"

From ArchWiki
Jump to: navigation, search
(shell profile: improve again)
(starting at any VT is bad, it prevents login if X can't start)
Line 29: Line 29:
 
(( vt == 1 )) && exec startx -- vt$vt
 
(( vt == 1 )) && exec startx -- vt$vt
 
unset vt
 
unset vt
</nowiki>}}
 
 
or to have it work at any console:
 
 
{{hc|~/.bash_profile|<nowiki>
 
 
if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]]; then
 
  exec startx -- vt$(fgconsole)
 
fi
 
</nowiki>}}
 
 
Or with a prompt:
 
 
{{hc|~/.bash_profile|<nowiki>
 
if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]]; then
 
  while true; do
 
    read -p 'Do you want to start X? (y/n): '
 
    case $REPLY in
 
      [Yy]) exec xinit -- -nolisten tcp vt7 ;;
 
      [Nn]) break ;;
 
      *) printf '%s\n' 'Please answer y or n.' ;;
 
    esac
 
  done
 
fi
 
 
</nowiki>}}
 
</nowiki>}}
  

Revision as of 18:26, 3 September 2012

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 end

A display manager can be used to provide a login screen and start the X server. This article explains how this can be done automatically without using a display manager.

To manually start X, startx or xinit are used. Both will execute ~/.xinitrc, which may be customized to start the window manager of choice as described in the xinitrc article.

shell profile

An alternative to a login manager is to add the following to the bottom of your ~/.bash_profile (if ~/.bash_profile does not yet exist, copy a skeleton version from /etc/skel/.bash_profile. If you use zsh as your preferred shell, add the following lines to your ~/.zprofile instead.):

~/.bash_profile
vt=$(fgconsole 2>/dev/null)
(( vt == 1 )) && exec startx -- vt$vt
unset vt

The user will be logged out when X is killed. In order to avoid this, remove the exec part from the script.

Note: This method can be combined with automatic login to virtual console and act similar to the inittab method, but it will properly register your session and works with ConsoleKit.