arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
52 lines (34 loc) • 2.96 kB
Markdown
Related articles
* [systemd/User](/index.php/Systemd/User "Systemd/User")
* [Automatic login to virtual console](/index.php/Automatic_login_to_virtual_console "Automatic login to virtual console")
* [Display manager](/index.php/Display_manager "Display manager")
* [Silent boot](/index.php/Silent_boot "Silent boot")
* [Xinitrc](/index.php/Xinitrc "Xinitrc")
This article explains how to have the [X server](/index.php/X_server "X server") start automatically right after logging in at a virtual terminal. This is achieved by running the *startx* command, whose behaviour can be customized as described in the [xinitrc](/index.php/Xinitrc "Xinitrc") article, for example for choosing what [window manager](/index.php/Window_manager "Window manager") to launch. Alternatively, a [display manager](/index.php/Display_manager "Display manager") can be used to start X automatically and provide a graphical login screen.
## Shell profile files
**Note:** These solutions run X on the same tty used to login, which is required in order to maintain the login session.
For [Bash](/index.php/Bash "Bash"), add the following to the bottom of `~/.bash_profile`. If the file does not exist, copy a skeleton version from `/etc/skel/.bash_profile`. For [Zsh](/index.php/Zsh "Zsh"), add it to `~/.zlogin` (or `~/.zprofile`) instead.
```
[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx
```
**Note:**
* You can replace the `-eq 1` comparison with one like `-le 3` (for vt1 to vt3) if you want to use graphical logins on more than one VT.
* X must always be run on the same tty where the login occurred, to preserve the logind session. This is handled by the default `/etc/X11/xinit/xserverrc`.
* `xinit` may be faster than `startx`, but needs additional parameter such as `-nolisten tcp`.
For [Fish](/index.php/Fish "Fish"), add the following to the bottom of your `~/.config/fish/config.fish`.
```
# start X at login
if status --is-login
if test -z "$DISPLAY" -a $XDG_VTNR = 1
exec startx
end
end
```
## Tips and tricks
* This method can be combined with [automatic login to virtual console](/index.php/Automatic_login_to_virtual_console "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 `~/.xinitrc` is read and hence pulseaudio started (see: [BBS#155416](https://bbs.archlinux.org/viewtopic.php?id=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](/index.php/Alias "Alias"):
`alias startx='startx &> ~/.xlog'`
**Note:** Redirecting stderr (`startx &>`) breaks rootless startup, see [Xorg#Rootless Xorg (v1.16)](/index.php/Xorg#Rootless_Xorg_.28v1.16.29 "Xorg").
## See also
[Start X after automatic login](http://unix.stackexchange.com/questions/62722/start-x-after-automatic-login)