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

如何在 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

实现这个的最佳方法是什么?

提前致谢!

答案1

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

  • xwininfo:它获取窗口的大小(不包括装饰)以及绝对位置(相对于屏幕)和相对位置(相对于窗口区域)
  • xdpyinfo:这提供了有关您的屏幕设备的更多信息,远超您所想知道的信息。但它在输出中的某处有类似screen: #0后面跟着的内容dimension: 1024x768

答案2

> 精确的窗口尺寸

以下示例(至少在 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 以了解更多可能的命令。

相关内容