如何在 Linux (X) 中获取准确的窗口信息(尺寸等)?

mel*_*ort 25 linux

如何在 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
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法来做到这一点?

提前致谢!

Ant*_*aft 26

有一些命令行程序可能会有所帮助:

  • xwininfo:它为您提供不包括装饰和绝对位置(相对于屏幕)和相对位置(相对于窗口区域)的窗口大小
  • xdpyinfo:这提供了比您想知道的更多的关于您的屏幕设备的信息。但它在输出中的某处类似于screen: #0后跟dimension: 1024x768.


Lis*_*yen 6

> 精确的窗户尺寸

以下示例(至少可以在 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
Run Code Online (Sandbox Code Playgroud)

> 精确的可用屏幕空间(不包括像 gnome-panel 这样的面板)

xrandr
Run Code Online (Sandbox Code Playgroud)

例如:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5
Run Code Online (Sandbox Code Playgroud)

在我的情况下输出:

4400 x 2560
Run Code Online (Sandbox Code Playgroud)

不确定如何排除面板 - 如果您有多个显示器,它们甚至可以位于虚拟屏幕的中间,因此没有面板的屏幕几何形状可能比“可用屏幕空间”更复杂。

> 能够将窗口设置为特定大小,包括装饰

wmiface setFrameGeometry $window $x $y $width $height
Run Code Online (Sandbox Code Playgroud)

阅读 wmiface README 以获得更多可能的命令。

  • wmiface 未与所有(任何?)发行版打包在一起。我可以使用这里的 ubuntu 包在 Mint 上安装:http://kde-apps.org/content/show.php?content=40425 提到的自述文件可以在这里找到:https://gitorious.org/ wmiface/wmiface/source/ea941eeb2076124734f6a3d3079326c826b462d7:README (2认同)