134 The X-Windows Disaster .xresources (or was it a file that was #included in .xresources) of the form *goddamn*fontList: 10x22, which he copied from Steve who quit last year, and that, of course, that resources is ‘more specific’ than Pat’s, whatever the hell that means, so it takes precedence. Sorry, Steve. You can’t even remember what application that resource was supposed to change anymore. Too bad. Sigh. It goes on and on. Try to explain to someone how to modify some behavior of the window manager, with having to re-xrdb, then select the window manager restart menu item (which most people don’t have, as they copied the guy next door’s .mwmrc), or logging out. Which file do I have to edit? .mwmrc? Mwm? .Xdefaults? .xrdb? .xresources? .xsession? .xinitrc? .xinitrc.ncd? Why doesn’t all this work the way I want? How come when I try to use the workstation sitting next to mine, some of the windows come up on my workstation? Why is it when I rlogin to another machine, I get these weird X messages and core dumps when I try to run this application? How do I turn this autoraising behavior off? I don’t know where it came from, I just #included Bob’s color scheme file, and everything went wrong, and I can't figure out why! SOMEBODY SHOOT ME, I’M IN HELL!!! Myth: X Is “Portable” …And Iran-Contra wasn’t Arms for Hostages. Even if you can get an X program to compile, there’s no guarantee it’ll work with your server. If an application requires an X extension that your server doesn’t provide, then it fails. X applications can’t extend the server themselves—the extension has to be compiled and linked into the server. Most interesting extensions actually require extensive modification and recompilation of the X server itself, a decidedly nontrivial task. The fol- lowing message tells how much brain-searing, eye-popping fun compiling “portable” X server extensions can be: Date: Wed, 4 Mar 92 02:53:53 PST X-Windows: Boy, Is my Butt Sore From: Jamie Zawinski [jwz@lucid.com] To: UNIX-HATERS Subject: X: or, How I Learned to Stop Worrying and Love the Bomb
X Myths 135 Don’t ever believe the installation instructions of an X server exten- sion. Just don’t, it’s an utter waste of time. You may be thinking to yourself, “I’ll just install this piece of code and recompile my X server and then X will be JUST a LITTLE BIT less MORONIC it’ll be EASY. I’ll have worked around another STUPID MISDESIGN, and I’ll be WINNING.” Ha! Consider whether chewing on glass might have more of a payoff than what you're about to go through. After four hours of pain, including such loveliness as a dozen direc- tories in which you have to make a symlink called “X11” pointing at wherever the real X includes are, because the automatically gener- ated makefiles are coming out with stuff like: -I../../../../../../include instead of: -I../../../../include, or, even better: -I../../.././../mit/./../../../include and then having to hand-hack these automatically generated make- files anyway because some random preprocessor symbols weren’t defined and are causing spurious “don’t know how to make” errors, and then realizing that “makedepend,” which you don’t really care about running anyway, is getting errors because the extension’s installation script made symlinks to directories instead of copies, and “. .” doesn’t WORK with symlinks, and, and, and… You’ll finally realize that the only way to compile anything that’s a basic part of X is to go to the top of the tree, five levels higher than the executable that you actually want to generate, and say “make Everything.” Then come back an hour later when it’s done making the MAKEFILES to see if there were any actual COMPILATION problems. And then you’ll find yourself asking questions like, “why is it com- piling that? I didn't change that, what’s it DOING?” And don’t forget that you HAVE to compile ALL of PEX, even though none of it actually gets linked in to any executables that you’ll ever run. This is for your OWN GOOD!