2010-07-13 40 views
1

如何在Linux中獲得準確的窗口信息?我知道我可以使用wmctrl來獲得窗口大小,但窗口的實際大小可能因窗口裝飾而異。我需要以下信息和方法:如何在Linux(X)中獲得準確的窗口信息(尺寸等)?

  • 精確窗口尺寸
  • 精確可用的屏幕空間(不包括像侏儒面板面板)
  • 設置一個窗口,以在一定的大小,包括裝飾
  • 的能力

這樣做的最好方法是什麼?我對Python的工作感興趣,所以有一些Python模塊會更受歡迎。

在此先感謝!

+0

什麼窗口庫中使用? – Mark 2010-07-13 02:17:53

+0

我不確定你在問什麼,@Mark。我使用的Ubuntu 10.04的Gnome桌面環境和Metacity作爲我的窗口管理器。 – mellort 2010-07-13 02:22:07

+0

我認爲馬克假設你是從創建窗口的程序內完成這個操作的。你是否希望這是一個與窗口所有者分開運行的工具?我認爲你可能在超級用戶(http://superuser.com/)上有更多的運氣。 – nmichaels 2010-07-15 14:44:27

回答

1

最好的辦法是使用X11/Xlib的直接(文檔:http://tronche.com/gui/x/xlib/

從您可能無法通過XQueryTree(樹走根開始),並得到窗口通過XGetWindowAttributes屬性()/ XGetGeometry() 。

好吧,這是一個C函數庫,但也有一個Python端口:http://python-xlib.sourceforge.net/?page=documentation

+0

X11如何知道窗飾的大小? – mellort 2010-07-20 20:21:55

+0

由於窗口組織在樹中,並且如果從其父窗口中減去子窗口的大小,您將獲得裝飾的大小。裝飾中的關閉按鈕通常也是X11-Windows。 '根窗口(桌面) - 頂級-窗口(窗口裝飾) - 子窗口(可以是裝飾或內容區域等的一部分) - 按鈕etc' 這種方法並不總是有效,例如當Compiz打開時,Compiz繪製了繞過X11的窗口裝飾(但我不確定) – nob 2010-07-22 10:49:35

+0

但是,您可以嘗試一個簡單的dump-testprogram並找出您感興趣的窗口的哪一部分。您甚至可以抓取它的內容通過XGetImage()。 – nob 2010-07-22 10:53:40