題 如何在Linux(X)中獲得準確的窗口信息(尺寸等)?


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

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

最好的方法是什麼?

提前致謝!


18
2017-07-15 15:24


起源


如果您對python方面感興趣,我們可以將其遷移到我們的姐妹網站,關於編程,StackOverflow.com。請告訴我們。 - Gnoupi
@Gnoupi:謝謝,但這實際上是來自SO的交叉帖子,因為用戶建議我可以在這裡得到更好的答案。最初的問題是在 stackoverflow.com/questions/3233660/...。 - mellort
好的我明白了。在這種情況下,我認為你的問題的python部分可以被編輯掉。 SU上的答案很可能是使用其他命令,而不是編程。關於SO的問題可能應該集中在如何在python中進行。 - Gnoupi
@Gnoupi:完成了。謝謝您的幫助。 - mellort
獲取帶裝飾的窗口尺寸: unix.stackexchange.com/questions/14159/... - Ciro Santilli 新疆改造中心 六四事件 法轮功


答案:


有一些命令行程序可能會有所幫助:

  • xwininfo:它可以獲得窗口的大小,不包括裝飾和絕對位置(到屏幕)和相對位置(到窗口區域)
  • xdpyinfo:這提供了有關您的屏幕設備的更多信息,而不是您想知道的。但它在輸出中的某處就像是 screen: #0 其次是 dimension: 1024x768

20
2017-11-27 14:19



有沒有辦法獲取信息 包含 裝修? - Victor


>精確的窗戶尺寸

以下示例(將至少在sh,bash和zsh中起作用)將打印帶有和不帶框架的窗口幾何圖形,所有窗口都在標題中的某處使用“KWrite”。

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

>精確的可用屏幕空間(不包括像gnome-panel這樣的面板)

xrandr

例如:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

在我的情況下輸出:

4400 x 2560

不確定如何排除面板 - 如果您有多個顯示器,它們甚至可以位於虛擬屏幕的中間,因此沒有面板的屏幕幾何圖形可能比“可用屏幕空間”更複雜。

>將窗口設置為特定大小的能力,包括裝飾

wmiface setFrameGeometry $window $x $y $width $height

閱讀wmiface README以獲取更多可能的命令。


6
2017-10-14 14:20



wmiface沒有包裝所有(任何?)發行版。我可以從這裡使用ubuntu軟件包在Mint上安裝: kde-apps.org/content/show.php?content=40425  提到的README可以在這裡找到: gitorious.org/wmiface/wmiface/source/... - slinkp
請參閱此評論的第二部分 unix.stackexchange.com/a/156349/84607 另一種獲取完整幾何體的方法,包括使用xwininfo,xdotool和xprop的組合裝飾。 - slinkp