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


22

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

最好的方法是什么?

提前致谢!


如果您对python方面更有兴趣,我们可以将其迁移到我们有关编程的姊妹站点StackOverflow.com。请让我们知道。
Gnoupi

@Gnoupi:谢谢,但这实际上是来自SO的交叉帖子,因为用户建议我在这里可能会得到更好的答案。原始问题在stackoverflow.com/questions/3233660/…上
mellort'7

好的我明白了。在这种情况下,我认为您问题的python部分可以被删除。关于SU的答案很可能是使用其他命令,而不是编程。SO的问题可能应该集中在询问如何在python中进行。
Gnoupi

Answers:


26

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

  • xwininfo:它可以获取窗口的大小(不包括装饰)以及绝对位置(相对于屏幕)和相对位置(相对于窗户区域)
  • xdpyinfo:这比您想知道的更多有关屏幕设备的信息。但它输出类似的地方screen: #0,然后dimension: 1024x768

有没有办法获取包括装修在内的信息?
维克多

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

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

xrandr

例如:

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

在我的情况下输出:

4400 x 2560

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

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

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

阅读wmiface自述文件以获取更多可能的命令。


2
wmiface并未与所有(任何?)发行版打包在一起。我能够通过使用从这里Ubuntu的软件包上安装薄荷:kde-apps.org/content/show.php?content=40425 提到可以在这里找到自述:gitorious.org/wmiface/wmiface/source/...
slinkp 2014年

请参阅此注释的第二部分unix.stackexchange.com/a/156349/84607,以获得通过使用xwininfo,xdotool和xprop的组合获得完整几何图形(包括装饰)的另一种方法。
slinkp
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.