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

时间:2009-12-14 14:41:17

标签: cygwin x11

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

通常从.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程序的过程吗?

1 个答案:

答案 0 :(得分:0)

因此,总结Ben Benock的答案,答案为“我如何让.xinitrc这样做?”是“不要!”永远不要问“我如何使用X做Y?”的问题。 :)完全跳过startx / .xinitrc。