我在慢速网络连接上运行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
答案 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,通用桌面环境......”