Difference between revisions of "Start X at login"

From ArchWiki
Jump to: navigation, search
m (Thestinger moved page Start X at Boot to Start X at Login: more accurate title)
(more concise wording)
Line 23: Line 23:
 
== shell profile ==
 
== shell profile ==
  
An alternative to a login manager is to add the following to the bottom of your {{ic|~/.bash_profile}} (if {{ic|~/.bash_profile}} does not yet exist, you can copy a skeleton version from {{ic|/etc/skel/.bash_profile}}. If you use [[zsh]] as your preferred shell, add the following lines to your {{ic|~/.zprofile}} instead.):
+
An alternative to a login manager is to add the following to the bottom of your {{ic|~/.bash_profile}} (if {{ic|~/.bash_profile}} does not yet exist, copy a skeleton version from {{ic|/etc/skel/.bash_profile}}. If you use [[zsh]] as your preferred shell, add the following lines to your {{ic|~/.zprofile}} instead.):
  
 
{{hc|~/.bash_profile|<nowiki>
 
{{hc|~/.bash_profile|<nowiki>

Revision as of 18:14, 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
if [[ -z $DISPLAY && $(tty) = /dev/tty1 ]]; then
  exec startx -- vt$(fgconsole)
fi

or to have it work at any console:

~/.bash_profile
if [[ -z $DISPLAY && ! -e /tmp/.X11-unix/X0 ]]; then
  exec startx -- vt$(fgconsole)
fi

Or with a prompt:

~/.bash_profile
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

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.