Я использую startx от Cygwin и хочу настроить мой xinitrc, чтобы на экране не было никаких «волшебных» X-программ, т. Е. Программ, которые приведут к завершению работы X-сервера, если я выйду из них. Я вообще не хочу, чтобы какие-либо программы X запускались на экране вообще; Я просто хочу использовать меню XWin, настроенное из моего .XWinrc.Как заставить мой cygwin .xinitrc ждать выхода X-сервера?
Как правило, из .xinitrc, я сделал бы последнюю строку, запускающую оконный менеджер. Затем я могу выйти из X, покидая оконный менеджер из своего предоставленного интерфейса.
В этом случае, хотя мой оконный менеджер и мой сервер являются фактически одним и тем же процессом, потому что я использую сервер XWin. У меня нет менеджера окон для выполнения. Я начинаю сервер из моего .xserverrc файла:
exec XWin -multiwindow -clipboard -silent-dup-error
я могу спать в конце моего .xinitrc, в цикле:
while [ 1 -eq 1 ]
do
sleep 10
done
Но это кажется безвкусным.
Я могу дождаться дочернего процесса, либо запустив его как последнюю строку в моем .xinitrc, либо запустив его ранее в фоновом режиме и ожидая его явно с помощью «wait {PID}». Но я не могу дождаться процесса XWin.exe, потому что это родительский процесс моего скрипта .xinitrc, а не дочерний процесс.
Я не могу запустить XWin.exe в конце .xinitrc; если я попытаюсь, у меня появляется другой оконный менеджер, который, вероятно, запускается, а XWin не работает в режиме без rootless, а затем я немедленно завершаю работу.
Есть ли более элегантный способ сделать это, чем спать в петле? Есть ли способ запустить XWin из моего .xinitrc и подождать? Есть ли способ сказать сценарию оболочки .xinitrc просто ждать и не выходить без сна, чтобы он продолжал выполнение и ничего не делать до тех пор, пока не исчезнет XWin.exe? Есть ли что-то, что я должен начинать в фоновом режиме в качестве последней строки моего .xinitrc, чтобы дать мне процесс ожидания без запуска X-программы?