2011-11-13 38 views
3

我需要找到一種方法來獲取適合傳遞給某些窗口命令的-geometry選項的幾何圖形,以確保覆蓋 所有的X根窗口,該窗口不與任何與GNOME 自身管理的任何東西重疊(例如, GNOME面板窗口)。這與xwininfo -root的輸出 不一樣,它將返回整個X根窗口的幾何結構,並且必須包含GNOME面板消耗的實際地址 。 KDE 因爲我不再使用KDE,所以我不需要這樣做。如何找到排除任何GNOME面板或其他GNOME「事物」的根窗口的X幾何圖形?

我希望能夠使用Windows命令行實用程序獲得該幾何圖形,而不必求助於Xlib 編程(即,我希望通過腳本執行此操作)。腳本 可能依賴於GNOME命令行實用程序。

使用基本的數學方法「減去」GNOME面板將是一個選項, 但只有我可以保證我只需要爲唯一的GNOME面板X窗口帳戶 。但我懷疑GNOME 面板窗口不是唯一需要考慮的面板。我說 ,因爲有一個窗口在底部xwininfo顯示 作爲「底部擴展邊緣面板」,可能會或可能不會衝突 real-estate-wise,因爲只有當鼠標移動到 非常顯示X根窗口的底部。但是如果GNOME Panel真的是 唯一需要考慮的,那麼這個「減法」方法可能就是 夠好。

我的用例是這樣的:我使用rdesktop將RDP裝入各種 Microsoft Windows桌面。在執行 rdesktop之前,用戶需要決定X窗口上的尺寸,因爲它在顯示後不能調整大小 。我需要該窗口消耗最多 根窗口的不動產數量,前提是它不會與GNOME託管的窗口(如GNOME面板)的 衝突。我現在在做什麼 是硬編碼在我的包裝 特定桌面的幾何形狀,調用rdesktop,但由於 我工作的各種桌面必須在顯示器 硬件,由此產生的變化在X根窗口幾何中。 將所述X根窗口的幾何形狀,以在擴展過去可見區域,因爲GNOME的窗口管理器的GNOME 桌面上的一個RDP窗口rdesktop命令結果 推動實際左上角 角落,以避免與GNOME面板重疊,與結果 RDP窗口的一部分對於鼠標操作是隱藏的。

我一直在使用xwininfo -root -children,看看我能找到 在X根的直接後裔一些X窗口,將 始終是我可以用它來提取這些尺寸, 窗口嘗試,但名字看起來他們是GNOME 桌面軟件(或者metacity WM)的實現細節,或者兩者兼而有之,並且可能不是 我想依賴的東西。

回答

3

窗口管理器在根窗口上放置了幾個屬性。其中一個屬性是用於每個工作空間的「工作區」,即未被面板和東西遮擋的區域。的 「xprop -root」 我的機器上的輸出的

部分包含此:

_NET_CURRENT_DESKTOP(CARDINAL)= 0

_NET_WORKAREA(CARDINAL)= 0,32,1440,838,0,32 ,1440,838,0,32,1440,838,0,32,1440,838

_NET_CURRENT_DESKTOP屬性爲您提供當前工作空間的編號。

_NET_WORKAREA爲您提供四個工作區的工作區的(x,y,寬度,高度)。

這是記錄在擴展窗口管理器提示規範 - http://standards.freedesktop.org/wm-spec/latest/ar01s03.html#id2568237

你可能需要減去爲窗口的邊框和標題欄的區域,但是這應該讓你關閉。如果你想確切地說,使用一些額外的編碼,閱讀有關_NET_WM_REQUEST_FRAME_EXTENTS: http://standards.freedesktop.org/wm-spec/latest/ar01s04.html#id2568770

+0

感謝費德里科。這正是我所期待的。 – bgoodr

相關問題