如何让cygwin.xinitrc等待X服务器退出?

如何让cygwin.xinitrc等待X服务器退出?,cygwin,x11,Cygwin,X11,我正在使用Cygwin的startx,希望自定义我的xinitrc,这样我就不会在屏幕上看到任何“魔法”X程序,即,如果我退出这些程序,将导致X服务器终止的程序。实际上,我根本不想在屏幕上启动任何X程序;我只想使用XWin菜单,它是从我的.XWinrc自定义的 通常从.xinitrc开始,我会让最后一行运行窗口管理器。然后,我可以通过从窗口管理器自己提供的界面退出窗口管理器来退出X 在这种情况下,尽管我的窗口管理器和服务器实际上是同一个进程,因为我使用的是XWin服务器。我没有要执行的windo

我正在使用Cygwin的startx,希望自定义我的xinitrc,这样我就不会在屏幕上看到任何“魔法”X程序,即,如果我退出这些程序,将导致X服务器终止的程序。实际上,我根本不想在屏幕上启动任何X程序;我只想使用XWin菜单,它是从我的.XWinrc自定义的

通常从.xinitrc开始,我会让最后一行运行窗口管理器。然后,我可以通过从窗口管理器自己提供的界面退出窗口管理器来退出X

在这种情况下,尽管我的窗口管理器和服务器实际上是同一个进程,因为我使用的是XWin服务器。我没有要执行的windows管理器。我正在从.xserverrc文件启动服务器:

exec XWin -multiwindow -clipboard -silent-dup-error
我可以在.xinitrc的末尾以循环的方式睡觉:

while [ 1 -eq 1 ]
do
  sleep 10
done
但这似乎不雅

我可以等待一个子进程,可以将它作为.xinitrc中的最后一行启动,也可以在后台更早地启动它并用“wait{PID}显式地等待它。但是我不能等待XWin.exe进程,因为它是我的.xinitrc脚本的父进程,而不是子进程

我无法在.xinitrc末尾启动XWin.exe;如果我尝试,我会看到一个不同的窗口管理器启动,XWin不会处于无根模式,然后我会立即关机


有没有比打圈睡觉更优雅的方法呢?有没有办法从我的.xinitrc启动XWin并等待它?有没有一种方法可以告诉.xinitrc shell脚本在不睡觉的情况下只是等待而不退出,这样它将继续执行,并且在XWin.exe退出之前什么也不做?有什么东西我应该在后台开始,作为我的.xinitrc的最后一行,以便在不启动X程序的情况下给我一个等待的过程吗?

因此,从Ben Bullock的回答中总结,“我如何制作。xinitrc如何做到这一点?”的答案是“不要!”永远不要问“我如何使用X来做Y?”问题:完全跳过startx/.xinitrc