Я хочу запустить минимальную X-сессию только с оконным менеджером и одной полноэкранной программой.Очевидный способ сделать это - поместить что-то вроде этого в .xinitrc:
metacity & # this could be any window manager
exec my-fullscreen-app
Но так как они запускаются параллельно, есть некоторое условие гонки.Я не хочу, чтобы мое приложение появилось до того, как оконный менеджер будет готов, потому что тогда будет видимое изменение размера его окна в полноэкранный режим.Я хочу убедиться, что оконный менеджер завершил инициализацию первым.
Лучшее, что я придумал, это что-то вроде этого:
metacity &
while ! xprop -root | grep -q _NET_SUPPORTING_WM_CHECK
do
sleep 0.1
done
sleep 0.3
exec my-fullscreen-app
Но только потому, что _NET_SUPPORTING_WM_CHECK был установлен наКорневое окно не обязательно означает, что WM действительно готов, и 0,3-секундный сон после этого является препятствием, которое может быть серьезным перебором в некоторых системах и может быть совершенно неадекватным в других.
Так есть лилучший способ надежно ощутить, что оконный менеджер полностью инициализирован?