Difference between revisions of "Start X at login"

From ArchWiki
Jump to: navigation, search
(Tips)
(Rewrote shell config to make it simpler and to avoid requiring $DISPLAY be empty. Also general neatness rewrite.)
(One intermediate revision by the same user not shown)
Line 24: Line 24:
 
To manually start X, {{ic|startx}} is used, which will execute {{ic|~/.xinitrc}}, which may be customized to start the window manager of choice as described in the [[xinitrc]] article.
 
To manually start X, {{ic|startx}} is used, which will execute {{ic|~/.xinitrc}}, which may be customized to start the window manager of choice as described in the [[xinitrc]] article.
  
== Shell profile file ==
+
== Shell RCConfig File ==
  
{{Note|This runs X on the same tty used to login, which is required in order to maintain the login session.}}
+
To easily accomplish this, add to your shell's rc config:
 +
* Bash - {{ic|~/.bashrc}}
 +
* Zsh - {{ic|~/.zshrc}}
 +
* Csh - {{ic|~/.cshrc}}
 +
* Ksh - {{ic|~/.kshrc}}
  
* For [[Bash]], add the following to the bottom of {{ic|~/.bash_profile}}. If the file does not exist, copy a skeleton version from {{ic|/etc/skel/.bash_profile}}.
+
The following:
 
 
* For [[Zsh]], add it to {{ic|~/.zprofile}} instead.
 
 
{{bc|1=<nowiki>
 
{{bc|1=<nowiki>
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
+
[[ $TTY == "/dev/tty1" ]] && exec startx
 
</nowiki>}}
 
</nowiki>}}
 
{{Note|You can replace the {{ic|-eq 1}} comparison with one like {{ic|-le 3}} (for vt1 to vt3) if you want to use graphical logins on more than one VT.}}
 
 
{{Note|X must always be run on the same tty where the login occurred, to preserve the logind session. This is handled by the default {{ic|/etc/X11/xinit/xserverrc}}.}}
 
  
 
== Tips ==
 
== Tips ==
  
* This method can be combined with [[automatic login to virtual console]]. When doing this you have to set correct dependencies for the autologin systemd service to ensure that dbus is started before {{ic|~/.xinitrc}} is read and hence pulseaudio started (see: [https://bbs.archlinux.org/viewtopic.php?id=155416 BBS#155416])
+
*This method can be combined with [[automatic login to virtual console]].
 +
{{Warning|1=When doing so, if you use [[PulseAudio]] remember to set correct dependencies for the autologin systemd service to ensure that dbus is started before {{ic|~/.xinitrc}} is read (see: [https://bbs.archlinux.org/viewtopic.php?id=155416 BBS#155416])}}
 
* If you would like to remain logged in when the X session ends, remove {{ic|exec}}.
 
* If you would like to remain logged in when the X session ends, remove {{ic|exec}}.
 
* To redirect the output of the X session to a file, create an [[alias]]:
 
* To redirect the output of the X session to a file, create an [[alias]]:
 
: {{bc|1=alias startx='startx &> ~/.xlog'}}
 
: {{bc|1=alias startx='startx &> ~/.xlog'}}
 +
* If you have a profile config ({{ic|~/.bash_profile}}, {{ic|~/.zprofile}}, etc...) place it in there instead to only run on successful logins.

Revision as of 00:45, 16 May 2013

zh-CN:Start X at Login 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

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

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

Shell RCConfig File

To easily accomplish this, add to your shell's rc config:

  • Bash - ~/.bashrc
  • Zsh - ~/.zshrc
  • Csh - ~/.cshrc
  • Ksh - ~/.kshrc

The following:

[[ $TTY == "/dev/tty1" ]] && exec startx

Tips

Warning: When doing so, if you use PulseAudio remember to set correct dependencies for the autologin systemd service to ensure that dbus is started before ~/.xinitrc is read (see: BBS#155416)
  • If you would like to remain logged in when the X session ends, remove exec.
  • To redirect the output of the X session to a file, create an alias:
alias startx='startx &> ~/.xlog'
  • If you have a profile config (~/.bash_profile, ~/.zprofile, etc...) place it in there instead to only run on successful logins.