在终端上使用 稍微操作一下之后wmctrl
,现在进入下一步。wmctrl
从 bash 脚本执行。
当它完全单独时,我确实可以wmctrl
在 bash 中执行。
例子:
#!/bin/bash
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800
但是当我添加 Firefox 行代码时它不起作用。我以为添加睡眠时间会起作用,但我错了。
这是当前的代码:
#!/bin/bash
firefox http://www.google.de
sleep 30s
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800
如何使用此 bash 代码调整 Web 浏览器大小?
我是 bash 和 ubuntu 的新手。
答案1
好的,有几点:
- 您不需要
/usr/bin
添加。 Shell 会自行找到 wmctrl。 这适用于可能涉及可移植性的非常特殊的情况。 - 在命令末尾添加“&”符号
firefox
。只有前一个命令退出后,脚本才会继续执行。由于 Firefox 不会退出,因此脚本会等待它。 - 正如 Oli 指出的那样,更好的方法是使用类名。我编写了多个脚本,通过
wmctrl
引用类名来查找窗口的十六进制 ID。
就我个人而言,我会这样做:
#!/bin/bash
firefox http://www.google.de &
sleep 3
WM_ID=$(wmctrl -lx | awk '$3~/Navigator.Firefox/ {print $1}')
wmctrl -i -r $WM_ID -e 0,0,0,500,800
这里我们打开 Firefox,让它在后台运行,然后我们提取与 class 匹配的窗口的十六进制 ID Navigator.Firefox
。wmctrl -lx
字段 3 是 wm_class,字段 1 是十六进制 ID。awk 帮助我们在这里提取字段 1。最后我们在最后的 wmctrl 语句中引用该数字 ID
答案2
该命令似乎firefox
会阻止脚本继续执行,直到它退出。只需将其推入后台,您的脚本就可以继续执行:
firefox http://www.google.de &
顺便提一下,你可能还想看看-no-remote
对于 Firefox。这将停止命令与 DISPLAY 中任何现有的 Firefox 实例进行交互。
当我们谈论切线时,firefox
命令有一些辅助参数这 - 以及-no-remote
- 可以帮助您定位新窗口。
例如,你可以设置一个特定的类名,然后让 Compiz 自动处理调整大小。并wmctrl -x <WM_CLASS>
允许您以类别而不是 ID 为目标。大概比定位窗口名称或ID更为强大。