OpenBSD FAQ - The X Window System [FAQ Index]

Introduction to X

The X Window System (sometimes just called "X") is the environment which provides graphics services to OpenBSD and other Unix-like systems. By itself, X provides very little, since one also must have a window manager to present a user interface. OpenBSD ships with the cwm(1), fvwm(1) and twm(1) window managers, although many others are available as packages.

It is possible to run X clients on a system without any graphical support. For example, one could have an application (the X client) running on an ARM system, displaying its output on an amd64's graphical display (the X server). Since X is a well-defined, cross-platform protocol, it is even possible to have an X application running on, for example, a Linux machine use an OpenBSD machine for its display. The client and server can also be running on the same machine, and for most of this section, that will be the assumption.

Configuring X

For the majority of hardware on the most common platforms, X requires no configuration at all.

The details of manual X configuration vary considerably from platform to platform.

Starting X

The recommended way to run X is with the xenodm(1) display manager. It offers some important security benefits over the traditional startx(1) command.

If xenodm(1) wasn't enabled during installation, it can be done so later like any other system daemon:

# rcctl enable xenodm
# rcctl start xenodm
On some platforms, you will need to disable the console getty(8) to use it. This is not needed on amd64, i386 or macppc.

Customizing X

OpenBSD's default X environment is fully functional, but you may wish to customize it. When an X session is started, shell scripts in the user's home directory can be used to start as many programs as desired. Most of the programs in these scripts should run in the background, but the last one (typically the window manager) should run in the foreground. When the window manager exits, the script will also exit, and X will return to the xenodm(1) login prompt.

After the user logs in from xenodm(1), the /etc/X11/xenodm/Xsession script checks whether there is a $HOME/.xsession script. In the simplest case, the user's ~/.xsession script will contain only one line specifying the preferred window manager to launch. It can contain any number of other commands, however:

export ENV=$HOME/.kshrc
xsetroot -solid grey &
xterm -bg black -fg white +sb &
Note that the window manager cwm(1) is not being run in the background. This means that X will stay running until it exits.