Start X at login

From ArchWiki
Revision as of 18:23, 3 September 2012 by Thestinger (Talk | contribs) (shell profile: improve again)

Jump to: navigation, search

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.):

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

or to have it work at any console:


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

Or with a prompt:

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.' ;;

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.