如何防止X11在启动时打开xterm?

当我启动X11.app时,它会自动启动一个xterm。我早就从“普通”的xterm切换到了rxvt-unicode,所以初始的xterm就像一个不被使用的墙花一样挂在那里。虽然这并不特别糟糕,但它破坏了整体的外观,所以我想停止它的启动。我该怎么做?
3个回答

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

在终端中。但是,请注意,通常不需要手动启动XQuartz.app(或X11.app;请参阅注释)。当您运行X11客户端时,它会自动启动,并且不会启动其默认的启动应用程序。

哦,抱歉,我没有注意到你在使用X11.app。不要这样做。在Mac上,为了满足你所有的X11需求,请使用XQuartz。话虽如此,我认为X11.app有相同的默认设置,但是我不记得首选项文件的名称了。请在Library/Preferences/目录下寻找它。 - Harald Hanche-Olsen
上次我使用的是Mac OS X,那时候还没有XQuartz,所以我没听说过它 - 还有其他类似的东西我应该知道吗?对于X11,它的值是org.x.X11,我将其设置为'',这似乎和/usr/bin/true一样有效。 - Andrew Stacey
嗯,不,我除了X11/XQuartz这个特殊的特点之外,想不出其他的东西。尽管如今我对于应该从苹果还是甲骨文获取我的Java更新始终感到困惑。 - Harald Hanche-Olsen
如果你使用fink,那么在10.6版本上是没有为Xquartz构建软件包的。所以你的建议是无效的,哈拉德。 - Wyatt Ward
@Wyatt8740 我会相信你的话。对于这种情况,我没有任何建议。如果你找到了答案,请随意添加你自己的回答或评论。(或者如果你需要答案但不知道如何操作,请提一个新问题。) - Harald Hanche-Olsen
@HaraldHanche-Olsen 我有答案,但事实是有些人没有选择使用石英 :( - Wyatt Ward
那么还有类似的.xinitrc或xinit应用程序吗?我被这个烦人的xterm困扰,但很容易想象出一种情况,我想运行多个“其他东西”。我应该defaults write ~/myxinitrc.sh吗?还是XQuartz仍然在寻找一个固定的文件名? - Andrew Wolfe
@AndrewWolfe,我在这方面有点生疏了,所以接受我的建议需谨慎考虑。XQuartz将在启动时运行xinit命令。而该命令会运行shell脚本/usr/X11/lib/X11/xinit/xinitrc,然后该脚本会运行/usr/X11/lib/X11/xinit/xinitrc.d/目录下的脚本。在该目录下,你会找到98-user.sh,它会执行所有文件名以.sh结尾的可执行shell脚本,这些脚本位于~/.xinitrc.d/目录中。需要注意的是,通过其中一个后续的shell脚本使用exec命令来运行你所希望的窗口管理器,可以绕过默认执行xterm的情况。 - Harald Hanche-Olsen
...而且所有这些(之前的评论)意味着我不确定我的回答,现在已经快五年了,是否仍然有效。 - Harald Hanche-Olsen

由于我现在不在我的OSX电脑上,我将为您提供这个无敌的答案。'true' 不执行任何操作并成功退出,所以我设置它在启动时运行。

苹果的旧版X11:
defaults write org.x.X11 app_to_run $(which true)

对于 XQuartz:
defaults write org.macosforge.xquartz.X11 app_to_run $(which true)

对于 MacPorts X11.app:
defaults write org.macports.X11 app_to_run $(which true)

如果你想知道,$(which true) 将使一行变成如下形式:
defaults write org.x.X11 app_to_run /bin/true
我写成 $(which true),因为我不在我的 Mac 上,并且记不清它是在 /bin/true 还是其他位置。

我还读到可以将这些设置为 ''(两个单引号,也就是什么都没有),它会产生相同的效果。不过我还没有尝试过。

(来源:https://xquartz.macosforge.org/trac/wiki/X11-UsersFAQ

(由于我忘记在我的示例中添加非常重要的'app_to_run'而进行了编辑)


是的,在Big Sur上,使用zsh shell而不是true(因为true是zsh的内置命令),''对我起作用了。 - Christian
@Christian 哦,Big Sur 换成了 zsh 替代了 bash/bourne shell,并移除了 /bin/true?我完全不知道(我的 Mac 无法运行 Big Sur)。 - Wyatt Ward

从xquartz 2.8开始,你可以这样做: defaults write org.xquartz.X11 app_to_run APP

1这样作为其他答案的编辑会更好 https://apple.stackexchange.com/a/183267/237看起来最完整 - mmmmmm
这个在Xquartz 2.8.1和Mac OS Catalina上有效(接受的答案无效)。 - Niloct