How do I prevent X11 opening an xterm when it starts?

When I start the X11.app then it launches an xterm automatically. I've long since switched from the "ordinary" xterm to rxvt-unicode so the initial xterm just hangs around like a wallflower never being used. Whilst it's not particularly bad, it spoils the look of the place so I'd like to stop it launching. How do I do it?


Solution 1:

defaults write org.macosforge.xquartz.X11 app_to_run /usr/bin/true

in a Terminal. However, note that it normally shouldn't be necessary to ever start XQuartz.app (or X11.app; see the comments) manually. It will start automatically when you run an X11 client, and then it will not start its defaults startup application.

Solution 2:

Since I'm not at my OSX computer right now, I'll give you the fail-proof answer for this. 'true' does nothing and exits successfully, so I set that to run at startup.

Apple's old X11:
defaults write org.x.X11 app_to_run $(which true)

and for XQuartz:
defaults write org.macosforge.xquartz.X11 app_to_run $(which true)

and for MacPorts X11.app:
defaults write org.macports.X11 app_to_run $(which true)

In case you are wondering, $(which true) will make a line read, for example,
defaults write org.x.X11 app_to_run /bin/true.
I write it as $(which true) because I am not at my mac and do not remember if it is in /bin/true or some other location.

I have additionally read that you can set these to '' (that's two single quotes, so nothing at all), and it will do the same thing. I have not tried it, though.

(Source: https://xquartz.macosforge.org/trac/wiki/X11-UsersFAQ)

(edited because I forgot the all important 'app_to_run' in my examples)

Solution 3:

It appears that starting with xquartz 2.8 you would do: defaults write org.xquartz.X11 app_to_run APP