如何为新的浏览器窗口指定几何形状(例如1280x720)?

Pau*_*aul 3 browser linux x11 shell

Ubuntu Studio Linux 14.04.1 LTS

我想从 Linux shell 脚本启动一个精确大小的浏览器窗口,例如作为自动录制截屏视频的步骤。

我的第一个想法是使用 Xwindows-geometry设置,该设置曾经是 Xwindows 中所有应用程序所共有的,并保留在Gnome 选项中

#!/bin/bash -e
chromium-browser -geometry 1280x720 # ignores the spec
# firefox -geometry 1280x720 ignores the spec too
Run Code Online (Sandbox Code Playgroud)

我在 FreeBSD 论坛中找到了这篇文章,其中也说 Firefox 会忽略该-geometry设置。建议在启动时使用 Javascript,如下所示:

% firefox javascript:%20resizeTo\(1280,720\)
Run Code Online (Sandbox Code Playgroud)

在JS中调用window.resizeTo() 。测试了一下,也是不行。MDN 的链接页面指出,除了少数例外,这在 Firefox 7 后将不起作用。

@helloV 指出:从具有特定窗口坐标的命令行启动 Google Chrome

这是关于位置而不是大小。然而,深入研究后得出的这些想法也行不通

不:

chromium-browser --window-size=800,600
chromium-browser --window-size="800,600"
chromium-browser --window-size=800x600
chromium-browser -window-size=800,600
chromium-browser -window-size=800x600
Run Code Online (Sandbox Code Playgroud)

我们总是可以阅读Firefox 命令行选项页面(提示:窗口大小不存在)或Chrome 切换源代码,我们可以在其中找到--window-size=w,h并在上面尝试过。

来自:设置正在运行的应用程序的窗口尺寸和读取man xdotool

单击选择后将调整窗口大小:

xdotool selectwindow windowsize 1280 720
Run Code Online (Sandbox Code Playgroud)

有没有更简单或更干净的方法来启动指定像素尺寸的浏览器窗口?

Duf*_*ake 5

我不知道您是否可以启动具有指定大小的网络浏览器,但您可以使用wmctrl之后调整它的大小,但我想它类似于xdotool方法(无需单击),所以它可能不是您正在寻找的。

例如

#!/bin/sh

wid=`wmctrl -l | grep Firefox | grep "Stack Overflow" | cut -d " " -f 1`
wmctrl -i -r $wid -e 0,0,0,800,600 -b remove,maximized_vert,maximized_horz
Run Code Online (Sandbox Code Playgroud)

如果你只有一个窗口:

wmctrl -r mozilla -e 0,0,0,800,600 -b remove,maximized_vert,maximized_horz
Run Code Online (Sandbox Code Playgroud)

-e -> 重力,左,上,宽度,高度
-r -> Id-i或窗口名称
-b -> 取消最大化窗口,否则调整大小将不起作用

编辑

我认为你不能使用PID,因为例如对于firefox,即使你有多个窗口,你也只有一个PID,但如果你确定情况并非如此,你可以做这样的事情(我认为它会起作用):

PID=....
wid=`wmctrl -lp | grep " $PID " | cut -d " " -f 1`
wmctrl -i -r $wid -e 0,0,0,800,600 -b remove,maximized_vert,maximized_horz
Run Code Online (Sandbox Code Playgroud)

wmctrl -lp似乎按打开顺序列出窗口(真的不确定),因此您可以使用它来tail -n 1仅获取具有您要查找的 PID 的最后一个窗口。

wid=`wmctrl -lp | grep " $PID " | tail -n 1 | cut -d " " -f 1`
Run Code Online (Sandbox Code Playgroud)