通过命令行居中窗口

有没有办法在打开后将窗口放在屏幕中央,或者让它在屏幕中央打开?

这需要使用命令行完成。

wmctrl工具提供对EWMH(扩展窗口管理器提示)规范中定义的几乎所有function的命令行访问。 例如, 它可用于获取有关窗口管理器的信息,获取桌面和托管窗口的详细列表, 切换调整桌面大小 ,使窗口全屏始终在上面粘滞 ,以及激活关闭移动resize最大化最小化它们。

你可以安装它

sudo apt-get install wmctrl 

您可以使用wmctrl -d获取有关虚拟桌面(工作空间)的wmctrl -d

 one@onezero:~$ wmctrl -d 0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A 

并列出使用wmctrl -l打开的窗口。 -G选项显示窗口的几何形状:

 one@onezero:~$ wmctrl -l 0x02000004 0 onezero Desktop 0x02e00002 0 N/A DNDCollectionWindow 0x02e00003 0 N/A launcher 0x01e00004 0 onezero cairo-dock 0x02e00004 0 N/A panel 0x04800061 0 onezero Transmission 0x02e0000a 0 N/A Dash 0x03a00044 0 onezero arranging windows from the gnu/linux command line with wmctrl ~ Moving to Freedom - Chromium 0x04400006 0 onezero one@onezero: ~ 0x04c000e9 0 onezero Google - Mozilla Firefox 

wmctrl -lG

 one@onezero:~$ wmctrl -lG 0x02000004 0 0 0 1360 768 onezero Desktop 0x02e00002 0 -1460 -868 1360 768 N/A DNDCollectionWindow 0x02e00003 0 0 24 58 744 N/A launcher 0x01e00004 0 290 653 780 115 onezero cairo-dock 0x02e00004 0 0 0 1360 24 N/A panel 0x04800061 0 408 95 732 500 onezero Transmission 0x02e0000a 0 -1402 -844 1302 744 N/A Dash 0x03a00044 0 0 24 1360 744 onezero Center a window via command line - Ask Ubuntu - Stack Exchange - Chromium 0x04400006 0 127 94 983 434 onezero one@onezero: ~ 0x04c000e9 0 5 47 1349 715 onezero Google - Mozilla Firefox 

您可以通过在-r之后引用其标题或部分标题来指定窗口。 -e用于移动和resize

 wmctrl -r "Mozilla Firefox" -e ,,,, : Gravity specified as a number. The numbers are defined in the EWMH specification. The value of zero is particularly useful, it means "use the default gravity of the window". ,: Coordinates of new position of the window. ,: New width and height of the window. 

因此,要将窗口移动到左上角并使其宽度为1000像素,高度为700,您将使用0,0,0,1000,700

 one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700 

在此处输入图像描述

移动/resize。 为此,我首先使用-b选项使用“unmaximizing”的解决方法

wmctrl -r“Mozilla Firefox”-b add,maximized_vert,maximized_horz

wmctrl -r“Mozilla Firefox”-b remove,maximized_vert,maximized_horz

 one@onezero:~$ wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz 

在此处输入图像描述

你需要了解的事情1

 The -e option expects a list of comma separated integers: "gravity,X,Y,width,height" 

在此处输入图像描述

那是我的屏幕分辨率所以x = 1360&y = 786

将窗口对齐到屏幕的左半部分

 one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768 

将窗口对齐到屏幕的右半部分

 one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768 

将窗口与center of screen 1360/4的center of screen对齐= 340

 one@onezero:~$ wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768 

在此处输入图像描述

在屏幕设置中操作它

更多帮助1 2 3 4

适用于当前活动的窗口

 IFS='x' read screenWidth screenHeight < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1) width=$(xdotool getactivewindow getwindowgeometry --shell | head -4 | tail -1 | sed 's/[^0-9]*//') height=$(xdotool getactivewindow getwindowgeometry --shell | head -5 | tail -1 | sed 's/[^0-9]*//') newPosX=$((screenWidth/2-width/2)) newPosY=$((screenHeight/2-height/2)) xdotool getactivewindow windowmove "$newPosX" "$newPosY" 

如果有人想要复制/粘贴代码片段来执行此操作,请执行以下操作之一:

 winname='foo' IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1) read wx wy ww wh < <(wmctrl -lG | grep $winname | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;') wmctrl -r $winname -e 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh 

当然,将foo替换为您想要在第一行居中的窗口的名称。


解释 (以示例控制台会话的forms细分):

获取屏幕尺寸

 llama@llama:~$ xdpyinfo | grep dimensions dimensions: 1920x1080 pixels (508x285 millimeters) llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' 1920x1080 x 508x285 llama@llama:~$ xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1 1920x1080 llama@llama:~$ IFS='x' read sw sh < <(xdpyinfo | grep dimensions | grep -o '[0-9x]*' | head -n1) llama@llama:~$ echo $sw $sh 1920 1080 

获取窗口的几何信息

 llama@llama:~$ wmctrl -lG | grep foo 0x00a0000c 0 1113 510 722 475 llama foo llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]*//;' 0 1113 510 722 475 llama foo llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]*//;' 1113 510 722 475 llama foo llama@llama:~$ wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;' 1143 505 722 475 llama@llama:~$ read wx wy ww wh < <(wmctrl -lG | grep foo | sed 's/^[^ ]* *[^ ]* //;s/[^0-9 ].*//;') llama@llama:~$ echo $wx $wy $ww $wh 1143 505 722 475 

移动窗口

 llama@llama:~$ echo 0,foo,bar,$ww,$wh 0,foo,bar,722,475 llama@llama:~$ echo 0,$(($sw/2)),bar,$ww,$wh 0,960,bar,722,475 llama@llama:~$ echo 0,$(($sw/2-$ww/2)),bar,$ww,$wh 0,599,bar,722,475 llama@llama:~$ echo 0,$(($sw/2-$ww/2)),$(($sh/2-$wh/2)),$ww,$wh 0,599,303,722,475 

大多数应用程序应该在启动时遵循–geometry参数(有些更喜欢-geometry,如果第一个不适合你,请尝试第二个):

 gnome-terminal --geometry 80x25+100+100 

geometry参数具有以下forms:

 WIDTHxHEIGHT+XOFF+YOFF 

你可以把不需要的部分留下来:

 gnome-terminal --geometry +20+50 #No size, just offsets 

更多细节:

 man X 

然后按“/”并搜索几何规格

或者见这里: http : //www.cotse.com/dlf/man/xwindows/geometry.htm