Я использую startx Cygwin и хочу настроить свой xinitrc таким образом, чтобы на экране не появлялись «магические» X-программы, то есть программы, которые приводят к завершению X-сервера при выходе из них. На самом деле я не хочу, чтобы какие-либо программы X запускались на экране; Я просто хочу использовать меню XWin, настроенное из моего .XWinrc.
Обычно из .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, не в режиме без root, и затем я получаю немедленное отключение.
Есть ли более элегантный способ сделать это, чем спать в цикле? Есть ли способ запустить XWin из моего .xinitrc и ждать на нем? Есть ли способ указать сценарию оболочки .xinitrc просто ждать и не выходить без сна, чтобы он продолжал выполняться и ничего не делал, пока не завершится XWin.exe? Есть ли что-то, что я должен запускать в фоновом режиме как последняя строка моего .xinitrc, чтобы дать мне процесс ожидания без запуска программы X?