I'm a Linux guy at heart. I have a Mac because I love the hardware and because I think Mac OS X is a fun implementation of UNIX to have around. For the most part, though, I spend my time in X Windows. When I am using the Aqua interface, I want to have my X apps blend in, so I use QuartzWM, but when I'm in X Windows, I want to have X11 be fullscreen using EvilWM with my customized environment (I explain some of the details in my X11 on Mac OS X doc). Basically I want it all: two instances of X11 running with completely different configurations.
Setting up two separate X11 configurations was surprisingly difficult. Apple's X11.app doesn't provide any way to specify distinct sets of preferences. I ended up configuring X11.app to be rootless and then wrote a shell script to start another instance of X11 with non-rootless settings. I then wrapped it with Applescript.
If you've read X11 on Mac OS X you're familiar with setting up a working .xinitrc. To have two X configurations, you'll have to make one small change: the file should be named .xsession instead of .xinitrc. If you don't have a .xsession file, StartX.app gets confused and quits.
Just copy the StartX.app bundle from the disk image to your Applications directory (or anywhere else as long as there are no spaces in the full pathname). Add it to your login items to make a full-screen X session start every time you log in.
In this functional-but-not-beautiful 0.9 release, StartX.app makes no attempt to remember and preserve your X11.app configuration. Instead, it chooses what it feels to be reasonable defaults. Changing these defaults is very simple. The bulk of the work is done in StartX.app/Contents/startx.sh, which can be modified easily with a text editor (the script is less than 20 lines long).
Download startx-0.9.dmg.gz (36K).
StartX.app can be freely modified and distributed. Feel free to send me any comments, enhancements, or fixes.