我正在通过慢速网络连接运行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
Run Code Online (Sandbox Code Playgroud)
更新:感谢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
Run Code Online (Sandbox Code Playgroud)
您可能想知道远程X服务器何时映射了应用程序的主窗口.xwininfo命令将允许您通过窗口名称查询X服务器 - 我认为它是标准X11安装的一部分.但你必须自己进行轮询,重新运行命令,直到"Map State"属性返回"IsViewable"
Jonathan Leffler还提到了Sun的toolwait实用程序(此处有文档).toolwait启动一个进程(在本例中是你的xterm命令),并在应用程序映射到顶级窗口时返回...它会为你进行轮询.在www.ibiblio.org(这里)的X11/xutils目录中有一个声称是toolwait的Linux克隆的软件包.
toolwait日期一直回到OpenWindows - 现在这是一些老式的 X窗口编程,伙计!我面前有一个日期为1994年的Solaris手册页,其中指出"未来版本可能不再支持OpenWindows环境.您可能希望迁移到CDE,通用桌面环境......"