Start X at boot
From ArchWiki
| i18n |
|---|
| English |
| 简体中文 |
| Русский |
| Português do Brasil |
| ไทย |
Contents |
[edit] Method 1: /etc/inittab
This is the main configuration file for the init program. Edit your /etc/inittab
The first uncommented line should be:
id:3:initdefault:
This indicates default runlevel 3, multi-user mode. Changing it to:
id:5:initdefault:
Will change default runlevel to 5; X11.
You may also want to change the last line of the /etc/inittab to start kdm or gdm instead of xdm.
[edit] Method 2: /etc/rc.conf
Another way to achieve the same result is to start a display manager, (kdm, gdm, xdm, or slim) as a daemon. Edit the DAEMONS array in /etc/rc.conf e.g.:
DAEMONS=(syslog-ng network hal fam gdm)
[edit] Method 3: ~/.bash_profile
An alternative is to add something like the following to the bottom of your ~/.bash_profile (if ~/.bash_profile doesn't exist, you can create it):
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/vc/1 ]]; then startx logout fi
or
if [[ -z "$DISPLAY" ]] && [[ $(tty) = /dev/vc/1 ]]; then xinit logout fi
Utilizing this method, X is automatically started when logging into the shell. Furthermore your user will be logged out when you kill X using ctrl+alt+backspace. next time you log in, X will start again automatically, and if you followed the mingetty instructions in Automatically_login_some_user_to_a_virtual_console_on_startup you will be able to have X automatically respawn with a fresh environment and everything ready to go.
Along the lines of the above, as described by neocephas here, you can instead add:
[ -f ~/.bash_login ] && . ~/.bash_login
to the bottom of your ~/.bash_profile. Then, in your ~/.bash_login (if ~/.bash_login doesn't exist, you can create it), add:
startx
Of particular note, ~/.bash_login can be used to run more than just "startx" upon logging in to your boot console (for example, if using smbnetfs to mount Windows shares, you can add "smbnetfs /your/mount/location/").
[edit] Starting X as preferred user without logging in
A way of circumventing display managers and boot straight into preferred window manager or desktop environment is the following.
In /etc/inittab change:
id:3:initdefault: [...] x:5:respawn:/usr/X11R6/bin/xdm -nodaemon
to
id:5:initdefault: [...] x:5:once:/bin/su PREFERED_USER -l -c "/bin/bash --login -c startx >/dev/null 2>&1"
where PREFERED_USER is the user of your choice.
Instead of startx, you can of course have any program or self-written script you wish to execute. Myself, I have startx -- -nolisten tcp -br -deferglyphs 16 instead of just startx
you can then choose window manager by editing ~/.xinitrc.
Putting startxfce4 (or xinit, and putting to /.xinitrc for example icewm, and copying ~/.icewm to /.icewm) in /etc/rc.local is also an option, but note that both X and xfce (or the WM/DE of your choice) will start as super-user, which is generally not recommended. Of course you could use the same trick as above and execute your desktop with a /bin/su.