X11:等到窗口可见?

时间:2009-08-13 05:05:29

标签: x11 visibility

我在慢速网络连接上运行X.如何判断窗口何时可见?我需要等待,以便我可以在可见窗口上执行另一个操作。

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 

更新:感谢Jim Lewis,这是一个快速的shell函数,可以解决问题。

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

1 个答案:

答案 0 :(得分:6)

您可能想知道远程X服务器何时映射了应用程序的主窗口。 xwininfo命令将允许您通过窗口名称查询X服务器 - 我认为它是标准X11安装的一部分。但你必须自己进行轮询,重新运行命令,直到“Map State”属性返回“IsViewable”

Jonathan Leffler还提到了Sun的toolwait实用程序(文档here)。 toolwait启动一个进程(在本例中是你的xterm命令),并在应用程序映射到顶级窗口时返回...它会为你进行轮询。在www.ibiblio.org(here)的X11 / xutils目录中有一个声称是toolwait的Linux克隆的软件包。

toolwait日期一直回到OpenWindows - 现在这是一些旧学校 X窗口编程,伙计!我面前有一个日期为1994年的Solaris手册页,其中指出“未来版本可能不再支持OpenWindows环境。您可能希望迁移到CDE,通用桌面环境......”