在从 wmctrl 获取的坐标中指定 X windows 的几何形状

在从 wmctrl 获取的坐标中指定 X windows 的几何形状

在里面X 文档我读到,使用时必须在终端字符中指定WidthHeight和坐标:XpositionYposition

gnome-terminal --geometry=WidthxHeight+Xposition+Yposition

如果我使用从输出获得的坐标作为输入坐标wmctrl -lG(不确定是否wmctrl使用像素、终端字符或其他不同的几何单位),则无法获得预期的结果。也就是说,输出的几何坐标wmctrl -lG和用户可以指定的几何坐标gnome-terminal --geometry会有所不同。

我做错了什么吗?有什么想法吗?

谢谢

答案1

--geometry的选项实际上gnome-terminal是以字符而不是像素来衡量的。例如,要获得一个只有 10 行高的 80 列终端,您可以gnome-terminal这样启动:

gnome-terminal --geometry 80x10

终端将以字体字符大小为增量调整大小,并使用 将其传达给 Xserver WM_NORMAL_HINTS。您可以使用 命令检查这些内容xprop。例如,在这里我找到一个终端窗口 ID,并向 xprop 询问它:

$ wmctrl -lG | tail -n1
0x06400021  0 592  314  580  338  myhostname kees@myhostname: ~
$ xprop -id 0x6400021
...
WM_NORMAL_HINTS(WM_SIZE_HINTS):
        program specified minimum size: 48 by 16
        program specified resize increment: 7 by 14
        program specified base size: 20 by 2
        window gravity: NorthWest
...

在上述情况下,字体大小为 7 x 14 像素。因此,如果我想要一个 70 x 140 像素的终端,我可以运行gnome-terminal --geometry 10x10(尽管根据窗口管理器装饰等,它会比这个大 20 x 2 像素,如上文“特定基本大小”所示)。

答案2

在 Ubuntu 21.10 中,我发现它似乎是基于像素的而不是基于字符的,尽管呃虚拟像素不是文字像素(我使用的是 4k 显示器,但我在屏幕显示中打开了 2 倍缩放,并且我给出了几何形状,就好像 1080p 一样)

我发现,如果我将其设置为完整的 1080 像素,由于状态栏的原因,它会跳下并缩小,实际上似乎需要几个额外边框的像素。

因此,启动两个终端并一起填满我的下部显示器的命令最终看起来像这样(958而不是960,而1028不是1080(以解释状态栏)

gnome-terminal --window-with-profile=Node --geometry=958x1028+0+1080 -- bash & 
gnome-terminal --window-with-profile=Git --geometry=958x1028+960+1080 -- bash

答案3

该命令gnome-terminal --geometry 80x10在 Ubuntu 中不起作用。

您必须=在 之后使用geometry,而不是空格:gnome-terminal --geometry=80x10+10+10

相关内容