X11 exactly

x11

I'm reading Wikipedia about X11 and it says that:

In its standard distribution it is a complete, albeit simple, display and interface solution which delivers a standard toolkit and protocol stack for building graphical user interfaces on most Unix-like operating systems…

But later it says that:

X primarily defines protocol and graphics primitives – it deliberately contains no specification for application user-interface design, such as button, menu, or window title-bar styles.

So, do X11 provide widgets like a button or a window panel/frame, etc or not? What is a graphic primitive? What does X11 provide exactly?

It is also stated that:

X does not mandate the user interface; individual client programs handle this. Programs may use X's graphical abilities with no user interface.

What does this mean?

Best Answer

Like many words, “X11” can have multiple meanings.

“X11” is, strictly speaking, a communication protocol. In the sentences “X primarily defines protocol and graphics primitives …” and “X does not mandate the user interface …”, that's what X refers to. X is a family of protocols, X11 is the 11th version and the only one that's been in use in the last 25 years or so.

The first sentence in your question refers to a software distribution which is the reference implementation of the X11 protocol. The full name of this software distribution is “the X Window System”. This distribution includes programs that act as servers in the X11 protocol, programs that act as clients in the X11 protocol, code libraries that contain code that makes use of the X11 protocol, associated documentation, resources such as fonts and keyboard layouts that can be used with the aforementioned programs and libraries, etc. Historically, this software distribution was made by MIT; today it is maintained by the X.Org Foundation.

The X11 protocol allows applications to create objects such as windows and use basic drawing primitives (e.g. fill a rectangle, display some text). Widgets like buttons, menus, etc. are made by client libraries. The X Window System includes a basic library (the Athena widget set) but most applications use fancier libraries such as GTK+, Qt, Motif, etc.

Some X11 programs don't have a graphical user interface at all, for example command line tools such as xset, xsel and xdotool, key binding programs such as xbindkeys, etc. Most X11 programs do of course have a GUI.

Related Question