2009-12-14 113 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。