2009-08-13 63 views
5

我在緩慢的網絡連接上運行X.如何知道窗口何時可見?我需要等待,以便可以在可見窗口上執行另一個操作。X11:等到窗口可見爲止?

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 

更新:感謝吉姆劉易斯,這裏有一個快速殼功能,可以做到這一點。

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有一個名稱如'toolwait'的命令,試圖這樣做,或多或少。但是,它在子進程創建窗口時檢測到ISTR,而不是必須顯示。 – 2009-08-13 05:24:23

回答

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,通用桌面環境...」

+0

正是我所需要的,謝謝!和OpenWindows,這確實把我帶回... :-) – 2009-08-13 17:19:37