2009-08-13 19 views
5

Estoy ejecutando X a través de una conexión de red lenta. ¿Cómo puedo saber cuándo se ha vuelto visible una ventana? Necesito esperar para poder realizar otra operación en la ventana visible.X11: ¿esperar hasta que se vea una ventana?

xterm -T foo & 
# how to flush the display, or wait until the window is visible? 
# polling the visibility would be acceptable as well 
xmovewindow foo 10 20 

actualización: Gracias a Jim Lewis, aquí hay una rápida función de shell que hace el truco.

function xwait() { 
    while ! xwininfo -name $1|grep 'Map State: IsViewable';do sleep 1;done 
} 
xterm -T foo & 
xwait foo 
xmovewindow foo 10 20 
+1

IIRC, Solaris tiene un comando con un nombre como 'toolwait' que intenta hacer esto, más o menos. Sin embargo, ISTR que detectó cuando el proceso hijo creó una ventana, no es que necesariamente esté en exhibición. –

Respuesta

6

Probablemente desee saber cuándo el servidor remoto X ha mapeado la ventana principal de su aplicación. El comando xwininfo le permitirá consultar el servidor X por nombre de ventana; creo que es parte de la instalación estándar de X11. Pero tendría que hacer la encuesta usted mismo, volver a ejecutar el comando hasta que la propiedad "Estado del mapa" vuelva a "IsViewable"

Jonathan Leffler también mencionó la herramienta toolwait de Sun (documentación here). toolwait inicia un proceso (en este caso, su comando xterm) y lo devuelve cuando la aplicación ha mapeado una ventana de nivel superior ... realiza el sondeo por usted. Hay un paquete que pretende ser un clon de Linux de toolwait en el directorio X11/xutils en www.ibiblio.org (here).

toolwait data todo el camino de regreso a OpenWindows - ahora eso es old school X window programming, hombre! Tengo frente a mí una página man de Solaris con fecha de 1994, que dice "El entorno OpenWindows puede que ya no sea compatible en una versión futura. Es posible que desee migrar a CDE, Common Desktop Environment ..."

+0

justo lo que necesitaba, ¡gracias! y OpenWindows, eso me lleva de vuelta ... :-) –

Cuestiones relacionadas