2009-08-13 48 views
5

Tôi đang chạy X trên kết nối mạng chậm. Làm cách nào tôi có thể biết thời điểm cửa sổ hiển thị? Tôi cần phải đợi để tôi có thể thực hiện một thao tác khác trên cửa sổ hiển thị.X11: đợi cho đến khi một cửa sổ hiển thị?

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 

cập nhật: Cảm ơn Jim Lewis, đây là chức năng trình bao nhanh.

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 có một lệnh với một cái tên như 'toolwait' mà cố gắng để làm điều này, nhiều hơn hoặc ít hơn. Tuy nhiên, ISTR mà nó phát hiện khi quá trình con tạo ra một cửa sổ, không phải là nó nhất thiết phải được hiển thị. –

Trả lời

6

Có thể bạn muốn biết khi nào máy chủ X từ xa đã ánh xạ cửa sổ chính của ứng dụng. Lệnh xwininfo sẽ cho phép bạn truy vấn máy chủ X bằng tên cửa sổ - tôi nghĩ nó là một phần của bản cài đặt X11 chuẩn. Nhưng bạn phải tự mình bỏ phiếu, hãy chạy lại lệnh cho đến khi thuộc tính "Bản đồ Nhà nước" quay lại "IsViewable"

Jonathan Leffler cũng đề cập đến tiện ích công cụ của Sun (tài liệu here). toolwait khởi chạy một tiến trình (trong trường hợp này, lệnh xterm của bạn), và trả về khi ứng dụng đã ánh xạ một cửa sổ cấp cao nhất ... nó thực hiện việc bỏ phiếu cho bạn. Có một gói mà purports là một bản sao Linux của toolwait trong thư mục X11/xutils tại www.ibiblio.org (here).

ngày chờ công cụ quay trở lại OpenWindows - bây giờ đó là số trường cũ Lập trình cửa sổ X, man! Tôi có trước mặt tôi một trang người đàn ông Solaris ngày năm 1994, trong đó nói "Môi trường OpenWindows có thể không còn được hỗ trợ trong một bản phát hành trong tương lai. Bạn có thể muốn di chuyển sang CDE, Môi trường Máy tính để bàn Chung ..."

+0

chỉ là những gì tôi cần, cảm ơn! và OpenWindows, điều đó sẽ đưa tôi trở lại ... :-) –

Các vấn đề liên quan