The startx script is a front end to xinit that provides a somewhat nicer user interface for running a single session of the X Window System. It is typically run with no arguments.
To determine the client to run, startx first looks for a file called .xinitrc in the user's home directory. If that is not found, it uses the file xinitrc in the xinit library directory. If command line client options are given, they override this behavior. To determine the server to run, startx first looks for a file called .xserverrc in the user's home directory. If that is not found, it uses the file xserverrc in the xinit library directory. If command line server options are given, they override this behavior. Users rarely need to provide a .xserverrc file. See the xinit(1) manual page for more details on the arguments.
The .xinitrc is typically a shell script which starts many clients according to the user's preference. When this shell script exits, startx kills the server and performs any other session shutdown needed. Most of the clients started by .xinitrc should be run in the background. The last client should run in the foreground; when it exits, the session will exit. People often choose a session manager, window manager, or xterm as the ``magic'' client.
Below is a sample .xinitrc that starts several applications and leaves the window manager running as the ``last'' application. Assuming that the window manager has been configured properly, the user then chooses the ``Exit'' menu item to shut down X.
xrdb -load $HOME/.Xresources xsetroot -solid gray & xbiff -geometry -430+5 & oclock -geometry 75x75-0-0 & xload -geometry -80-0 & xterm -geometry +0+60 -ls & xterm -geometry +0-100 & xconsole -geometry -0+0 -fn 5x7 & exec twm