6

我正在通过慢速网络连接运行 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 
4

1 回答 1

6

您可能想知道远程 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,即通用桌面环境……”

于 2009-08-13T06:10:01.610 回答