The X Window system was originally designed to run exactly three programs: xterm, xclock, and xload. Originally these were meant to be started in the .xinitrc file, using manually set location and geometry settings. Any additional instances of those programs were to be started also using manually-set location and geometry via your xterm.

As an afterthought, the developers thought they'd throw in a window manager to let people move things around. They produced the Tab Window Manager, twm. It's still included with the base X distribution on any Unix machine. Try running it sometime, it's pretty sad.

The reason X sucks so much at being a GUI is because it was not actually designed to do anything but run a few minor graphical hacks that were hardly better than ASCII graphics (read: xload, xmh), and to allow people to run two terminals side by side. It doesn't support innate drag and drop. It doesn't have any OS-level human interface conventions. It doesn't even have an active desktop without the aid of programs which run cheap hacks to give it one.

This is why X-Windows is so user-hostile compared to MacOS...and even Microsoft Windows. Funny that I should have such opinions, when my own nick is a play on the naming convention of X applications...

The following can be found in the default xinitrc file (/usr/X11R6/xinit/xinitrc), dated August 22nd, 1991... (note: this is still included in current distribution of XFree86 3.x)

# start some nice programs

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login

Try creating a new user account. Log in with that, and rm -f ~/.xinitrc. Then, startx. AND WITNESS THE SUCK.

Regarding msgs about how X11 is a network model and not a GUI: I'm not talking about the semantic details of how it works. For all practical purposes, anything running under X11 has the same technical limitations. The modularity of it is, really, what does it in. It already runs in greater penalty of the CPU and memory than it ought to; piling Gnome or KDE on top of that is just plain ludicrous. The only "user friendly" elements must be written by 3rd party developers, and this causes these basic UI functions to be nonstandard and higher-level than they are with any other GUI model. So, if it pleases pedants, I'm not putting down the protocol itself, I'm putting down the legacy that it has wrought.