2009-12-14 36 views
1

我正在使用Cygwin的startx,并且想要自定义我的xinitrc,这样我就不会在屏幕上得到任何“魔术”X程序,即,如果我退出它们,将导致X服务器终止的程序。实际上,我不希望任何X程序在屏幕上启动,我只想使用从我的.XWinrc中定制的XWin菜单。如何让我的cygwin .xinitrc等待X服务器退出?

通常来自.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外壳程序脚本只是等待,而不是在没有休眠的情况下退出,以便在XWin.exe退出之前它会继续执行并且什么也不做?有没有什么我应该从背景开始作为我的.xinitrc的最后一行,以便给我一个等待的过程而不启动X程序?

回答

0

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