Glynn Clements glynn at
Wed Apr 8 03:58:45 PDT 2009

Patrick O'Donnell wrote:

> >> Someone offered up, which may be fine for X Window
> >> System developers, but is not what most application programmers would
> >> call documentation.
> >
> >Oh? Would you care to elaborate? Like, what is *actually* missing?
> The first thing to come to mind is a guide to what's even in that
> directory.  If you already know what all the abbreviations and
> initializms are, then you can probably find what you're looking for
> without too much trouble.  If not, it's pretty much hit-and-miss.


BDF	Bitmap Distribution Format

	Format of BDF bitmap font files

CTEXT	Compound Text Encoding

	ISO-2022-based encoding used for transferring multi-lingual
	text between applications. Corresponds to COMPOUND_TEXT type
	atom. Newer toolkits and applications often use UTF-8 instead.

FSProtocol	Font Server Protocol

	Communication between font servers and the X server.

ICCCM	Inter-Client Communication Conventions Manual

	Properties and messages used for communication between
	applications and the WM and other applications, including
	selections and clipboard.

ICE	Inter-Client Exchange Library

	Framework to simplify building inter-client protocols.

RX	Remote Execution

	Embedding X applications in a web browser.

SM	Session Management

	Save and restore desktop sessions

X11	Xlib Reference Manual

XDMCP	X Display Manager Control Protocol

	Managing a network of X terminals using a single display

XIM	X Input Method Protocol

	Communication between input method servers and clients

XKB	X Keyboard Extension

	Library and protocol for querying and configuring keyboard
	layout and behaviour.

XLFD	X Logical Font Description Conventions

	Structure of core font names and wildcards.

XPRINT	X Print Service Extension

	Library and protocol for printing

XProtocol	X Protocol

	The core X11 protocol

Xaw	Athena Widget Set

	Widget set for use with the X toolkit (Xt)

Xext	Miscellaneous Extensions

	Various extensions which are bundled into a single server
	module (extmod). Includes DPMS, shaped windows, shared-memory
	images, security.

Xi	X Input Device Extension

	Support for additional input devices beyond pointer and keyboard.

Xmu	X Miscellaneous Utilities

	Miscellaneous utility functions which don't fit anywhere else.

Xserver	X Server Internals

	X Server internals and implementation details

Xt	X Toolkit Intriniscs

	A GUI toolkit. Used in conjunction with the Athena (Xaw) and
	Motif (Xm) widget sets.

Xv	X Video Extension

	Video capture and playback. Supports the use of hardware video
	overlays using e.g. YUV-4:2:0 format.

i18n	Internationalisation

	Related to XIM (above)

man	Manual

	PostScript/PDF versions of X manual pages.

rstart	A Flexible Remote Execution Protocol Based on rsh

	Start X applications on a remote server for local display.

saver	X Screen Saver Extension

	For writing screen savers.

xfs	Font Server Implementation Overview

	xfs internals

xterm	XTerm Control Sequences

	Control and escape sequences supported by XTerm

xtrans	X Transport Interface

	Abstraction layer around various low-level transport layers (BSD
	sockets, TLI, etc).

The most important ones are Xlib and ICCCM. Several of the above are
legacy interfaces which aren't relevant to modern toolkits.

In theory, most of the above aren't relevant if you're using such
toolkits; you should only need to read the toolkit's documentation
(e.g. GTK+ applications are supposed to use GDK for rendering rather
than using Xlib directly).

If you're using Xt+Xaw/Xm, those toolkits rely upon many of the above. 
Some of it is hidden from the user, some of it is exposed.

Writing a GUI application using nothing but raw Xlib is a bad idea. 
It's analogous to writing an application without any libraries (even
libc), using nothing but home-grown functions and direct system calls.

> Also, something to glue all the pieces together -- to tell the
> application programmer where each piece fits in the whole puzzle,
> where to use it, when to use it, and equally important, when not to.
> Something like the old Xlib Programmer's Guide.  Reference information
> where you must infer the API from protocol specs is hard enough to
> grok.  Trying to put together a coherent big picture from the
> scattered bits takes a lot of time that someone trying to get a
> product out the door doesn't have.

Application programming documentation normally focuses on a specific
toolkit. The toolkit will hide most of the details, particularly if it
is cross-platform. The low-level documentation is of interest mainly
to authors of toolkits and/or low-level utilities.

Glynn Clements <glynn at>

More information about the xorg mailing list