Session Configuration Files

xinitrc and ~/.xinitrc

xinit(1) is the program that actually starts X; it is called by startx(1), so you may not have noticed it (and probably don't really need to). Its configuration file, however, determines which programs (including and especially the window manager) are run when X starts up. xinit first checks your home directory for a .xinitrc file. If the file is found, it gets run; otherwise, /var/X11R6/lib/xinit/xinitrc (the systemwide default) is used. Here's a simple xinitrc file:

   #!/bin/sh
   # $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $

   userresources=$HOME/.Xresources
   usermodmap=$HOME/.Xmodmap
   sysresources=/usr/X11R6/lib/X11/xinit/.Xresources
   sysmodmap=/usr/X11R6/lib/X11/xinit/.Xmodmap

   # merge in defaults and keymaps

   if [ -f $sysresources ]; then
       xrdb -merge $sysresources
   fi

   if [ -f $sysmodmap ]; then
       xmodmap $sysmodmap
   fi

   if [ -f $userresources ]; then
       xrdb -merge $userresources
   fi

   if [ -f $usermodmap ]; then
       xmodmap $usermodmap
   fi

   # start some nice programs

   twm &
   xclock -geometry 50x50-1+1 &
   xterm -geometry 80x50+494+51 &
   xterm -geometry 80x20+494-0 &
   exec xterm -geometry 80x66+0+0 -name login

All of those “if” blocks are there to merge in various configuration settings from other files. We'll get to .Xresources in just a moment, but .Xmodmap we're going to leave alone. The interesting part of the file is toward the end, where various programs are run. This X session will begin with the twm(1) window manager, a clock, and three terminals. Note the exec before the last xterm. What that does is replace the currently running shell (the one that's executing this xinitrc script) with that xterm(1) command. When the user quits that xterm, the X session will end.

To customize your X startup, copy the default /var/X11R6/lib/xinit/xinitrc to ~/.xinitrc and edit it, replacing those program lines with whatever you like. The end of mine is simply:

   # Start the window manager:
   exec startkde

Note that there are several xinitrc.* files in /var/X11R6/lib/xinit that correspond to various window managers and GUIs. You can use any of those, if you like.

.Xresources and .Xdefaults

Many X programs use a system called the X Resource Database to get various user preferences (fonts, colours, etc.) This database is maintained via the xrdb(1) program, which you will likely never need to run directly. Instead, it is run in Slackware from the xinitrc. The file that xinitrc tells xrdb to source for options is ~/.Xresources. xrdb will also load ~/.Xdefaults, so either of these filenames will work. A minimal .Xresources file looks like this:

   xterm*background: black
   xterm*foreground: gray
   xterm*scrollBar: true
   xterm*font: -*-lucidatypewriter-*-r-*-*-15-*-*-*-*-*-*-*

These four lines specify configuration information for the xterm program. An X resource is listed as follows:

program*option: setting/value

Thus, the sample .Xresources above should be fairly self-explanatory. Don't be thrown off by the “font” line; X fonts are always specified that way.