2013-03-26 27 views
5

Tuyên bố từ chối trách nhiệm: Tôi biết có rất giống question về chủ đề này.Linux: cách nhận danh sách tất cả các cửa sổ hiển thị

Tôi đang cố gắng để có được chính xác kết quả tương tự mà NoozNooz42 mô tả here. Tuy nhiên mdma câu trả lời không phù hợp với nhu cầu của tôi, bởi vì tôi quan tâm đến việc làm tương tự trên Linux. Ưu tiên với gnome, nếu nó quan trọng. Vì vậy, sử dụng JNA với thư viện user32 không phải là một tùy chọn ở đây (hoặc là nó?).

Bất kỳ đề xuất nào sẽ tuyệt vời, tôi không thể tìm thấy hầu hết mọi thứ về chủ đề.

P.S. Điều duy nhất tôi đã tìm thấy là lệnh wmctrl (tôi có thể gọi và phân tích cú pháp trong java cuối cùng) liệt kê các cửa sổ nhưng không cung cấp cho tôi bất kỳ thông tin nào về thứ tự z.

Cập nhật: Sẽ là hoàn hảo nếu tôi có thể nhận được thông báo/gọi lại khi thay đổi thứ tự z.

Trả lời

6

Sử dụng xprop, nó hiển thị các thuộc tính cửa sổ. Danh sách các cửa sổ trong z-trật tự là tài sản _NET_CLIENT_LIST_STACKING của cửa sổ gốc:

xprop -root | grep '_NET_CLIENT_LIST_STACKING(WINDOW)' 

Output sẽ trông như thế này:

_NET_CLIENT_LIST_STACKING(WINDOW): window id # 0x2000003, 0x4000004, 
0x1c00004, 0x1c00030, 0x1c00033, 0x2e00004 

Sau đó bạn có thể nhận được thêm thông tin về cửa sổ đặc biệt với:

xprop -id <id> 

hoặc

xwininfo -id <id> 
+0

Câu trả lời rất hay, cảm ơn bạn! 1 cho điều này, tuy nhiên tôi vẫn hy vọng cho giải pháp java tinh khiết –

+0

Vui lòng xem cập nhật của tôi về câu hỏi. Bạn có biết về bất cứ điều gì có thể cho tôi một thông báo về thay đổi thứ tự z không? –

+0

'xev -root' sẽ hiển thị tất cả các thay đổi trong thuộc tính cửa sổ gốc. Chỉ cần lọc sau _NET_CLIENT_LIST_STACKING. –

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