有没有办法让窗口打开后放置在屏幕中央,或者使其在屏幕中央打开?
这需要使用命令行来完成。
答案1
这控制端工具提供了命令行访问几乎所有在EWMH(扩展窗口管理器提示)规格。它可以用于例如,获取有关窗口管理器的信息,获取桌面和管理窗口的详细列表,转变和调整大小桌面,制作窗口全屏,永远高于或者黏, 并启用,关闭,移动,调整大小,最大化和最小化他们。
您可以通过以下方式安装:
sudo apt-get install wmctrl
您可以使用以下方式获取有关虚拟桌面(工作区)的信息wmctrl -d
:
$ wmctrl -d
0 * DG: 2720x1536 VP: 0,0 WA: 0,24 1360x744 N/A
并使用 列出打开的窗口wmctrl -l
。
$ 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
该-G
选项显示窗口的几何形状:
$ 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
用于移动和调整大小。
wmctrl -r "Mozilla Firefox" -e <G>,<X>,<Y>,<W>,<H>
在哪里:
<G>: 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".
<X>,<Y>: Coordinates of new position of the window.
<W>,<H>: New width and height of the window.
因此,要将窗口移动到左上角并使其宽度为 1000 像素,高度为 700 像素,您可以使用0,0,0,1000,700
:
wmctrl -r "Mozilla Firefox" -e 0,0,0,1000,700
要移动或调整其大小,我首先使用了“取消最大化”的解决方法,使用-b
选项
wmctrl -r "Mozilla Firefox" -b remove,maximized_vert,maximized_horz
wmctrl -r "Mozilla Firefox" -b add,maximized_vert,maximized_horz
您首先需要了解的事情
该
-e
选项需要一个以逗号分隔的整数列表:gravity,X,Y,width,height
上面是我的屏幕分辨率,所以
width
= 1360 和height
= 786。将窗口与屏幕左半部分对齐:
wmctrl -r "Mozilla Firefox" -e 1,0,0,680,768
将窗口与屏幕右半部分对齐:
wmctrl -r "Mozilla Firefox" -e 1,680,0,680,768
将窗口对齐到屏幕中央(1360/4=340):
wmctrl -r "Mozilla Firefox" -e 1,340,0,680,768
根据屏幕设置的需要操作上述命令。
如需更多帮助:
答案2
与当前活动窗口配合使用
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"
答案3
如果有人想要复制/粘贴代码片段来执行此操作,这里有一个:
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
为您想要在第一行居中的窗口的名称。
解释(以示例控制台会话的形式细分):
获取屏幕尺寸
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
答案4
大多数应用程序在启动时应该遵守 --geometry 参数(有些应用程序更喜欢 -geometry,如果第一个不适合您,请尝试第二个):
gnome-terminal --geometry 80x25+100+100
几何参数具有以下形式:
WIDTHxHEIGHT+XOFF+YOFF
您可以省略不需要的部分:
gnome-terminal --geometry +20+50 #No size, just offsets
更多细节:
man X
然后按“/”搜索 GEOMETRY SPECIFICATIONS