Je veux récupérer l'ID X des programmes GUI que je lance en arrière-plan, afin de travailler sur leurs propriétés Windows. J'ai utilisé jusqu'à présent cette solution de contournement:
myprogram & sleep 1 winID=$(wmctrl -l | awk '/./{line=$0} END{print $1;}')
Mais cela repose sur trois hypothèses lourdes:
wmctrl
Y at-il un signal que myprogram
enverra une fois qu'il a ouvert une window? Comment puis-je l'intercepter?
Pour get l'ID de window dans mon programme, j'ai le programme définir le titre à quelque chose d'unique, puis faire démarrer le programme wmctrl
et parsingr sa sortie (et non le script shell qui a démarré le programme), puis rapporter sur l'ID de la window le plus souvent via un file).
Puisque le programme ne continue pas tant que les windows ne sont pas ouvertes, vous n'aurez jamais à attendre trop longtime.
Bien sûr, cela nécessite que vous puissiez modifier mon myprogram
(c.-à-comstackr à partir de la source).