Contributed by Seth Kingsley.
The X Display Manager (XDM) is an optional part of the X
Window System that is used for login session management. This is useful for several types
of situations, including minimal “X Terminals”, desktops, and large network
display servers. Since the X Window System is network and protocol independent, there are
a wide variety of possible configurations for running X clients and servers on different
machines connected by a network. XDM provides a graphical
interface for choosing which display server to connect to, and entering authorization
information such as a login and password combination.
Think of XDM as providing the same functionality to the
user as the getty(8) utility (see
Section 24.3.2 for details). That is, it performs
system logins to the display being connected to and then runs a session manager on behalf
of the user (usually an X window manager). XDM then waits for
this program to exit, signaling that the user is done and should be logged out of the
display. At this point, XDM can display the login and display
chooser screens for the next user to login.
The XDM daemon program is located in /usr/local/bin/xdm. This program can be run at any time as root and it will start managing the X display on the local machine.
If XDM is to be run every time the machine boots up, a
convenient way to do this is by adding an entry to /etc/ttys.
For more information about the format and usage of this file, see Section 24.3.2.1. There is a line in the default /etc/ttys file for running the XDM
daemon on a virtual terminal:
ttyv8 "/usr/local/bin/xdm -nodaemon" xterm off secure
By default this entry is disabled; in order to enable it change field 5 from off to on and restart init(8) using the
directions in Section 24.3.2.2. The first field, the
name of the terminal this program will manage, is ttyv8. This
means that XDM will start running on the 9th virtual
terminal.
The XDM configuration directory is located in /usr/local/lib/X11/xdm. In this directory there are several files
used to change the behavior and appearance of XDM. Typically
these files will be found:
Also in this directory are a few scripts and programs used to set up the desktop when
XDM is running. The purpose of each of these files will be
briefly described. The exact syntax and usage of all of these files is described in
xdm(1).
The default configuration is a simple rectangular login window with the hostname of
the machine displayed at the top in a large font and “Login:” and
“Password:” prompts below. This is a good starting point for changing the
look and feel of XDM screens.
The protocol for connecting to XDM-controlled displays is
called the X Display Manager Connection Protocol (XDMCP). This file is a ruleset for
controlling XDMCP connections from remote machines. It is ignored unless the xdm-config is changed to listen for remote connections. By default,
it does not allow any clients to connect.
This is an application-defaults file for the display chooser and login screens. In it,
the appearance of the login program can be modified. The format is identical to the
app-defaults file described in the X11 documentation.
This is a list of the remote displays the chooser should provide as choices.
This is the default session script for XDM to run after a
user has logged in. Normally each user will have a customized session script in ~/.xsession that overrides this script.
These will be run automatically before displaying the chooser or login interfaces.
There is a script for each display being used, named Xsetup_
followed by the local display number (for instance Xsetup_0).
Typically these scripts will run one or two programs in the background such as xconsole.
This contains settings in the form of app-defaults that are applicable to every
display that this installation manages.
This contains the output of the X servers that XDM is
trying to run. If a display that XDM is trying to start hangs
for some reason, this is a good place to look for error messages. These messages are also
written to the user's ~/.xsession-errors file on a per-session
basis.
In order for other clients to connect to the display server, you must edit the access
control rules and enable the connection listener. By default these are set to
conservative values. To make XDM listen for connections, first
comment out a line in the xdm-config file:
! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0
and then restart XDM. Remember that comments in
app-defaults files begin with a “!” character, not the usual “#”.
More strict access controls may be desired -- look at the example entries in Xaccess, and refer to the
xdm(1) manual
page for further information.
Several replacements for the default XDM program exist. One
of them, kdm (bundled with KDE) is
described later in this chapter. The kdm display manager
offers many visual improvements and cosmetic frills, as well as the functionality to
allow users to choose their window manager of choice at login time.