我创建了一堆 chrome 应用程序快捷方式 - gmail、tweetdeck 等。它们都在屏幕左上角的小窗口中启动(见屏幕截图)。调整/最大化它们很容易 - 但我想知道是什么控制了它们的位置和大小,然后能够修复它吗?我尝试使用 compiz 在启动时最大化窗口,但它不起作用(compiz 可以很好地选择将其放置在哪个工作区,只是不能调整大小)。我估计一定有一个设置可以规定这一点 - 有什么想法吗?
答案1
为了看看发生了什么,我创建了一些 webapp 启动器。你所描述的情况也发生在我身上,但发生的方式不可预测;有时会发生,有时不会。
打开具有预定义大小的 Web 应用窗口
为了保证新创建的窗口某个应用程序具有一定的大小,结果比我预期的要复杂一些。不过我认为下面的解决方案很有效。
它的作用和使用方法
以下解决方案将运行 webapp 的命令重定向到脚本。脚本运行命令,等待相应窗口出现(等待pid
生成chrome
新窗口)并将其调整为您定义的大小。
在实践中:
查看 webapp 的.desktop
文件内部,您会在行中看到Exec=
(如您所提到的)一个命令,如下所示:
Exec=/opt/google/chrome/google-chrome --app=feedly.com/i/my
完成以下设置后,您需要做的就是将此文件(或任何其他 webapps-)中的命令替换为:
Exec=run_maximized "/opt/google/chrome/google-chrome --app=feedly.com/i/my" 100 100
命令中的最后两个数字是窗口的水平/垂直尺寸(以百分比表示,与屏幕尺寸有关)
设置
该脚本同时使用了
wmctrl
和xdotool
:sudo apt-get install wmctrl sudo apt-get install xdotool
将下面的脚本复制到一个空文件中,将其另存为
run_maximized
(无扩展名)~/bin
。如果目录不存在,请创建该目录。使脚本可执行。如果你刚刚创建了目录
~/bin
,请注销/登录或运行source ~/.profile
在 webapp 的
.desktop
文件中,替换以下行中的命令Exec=
:Exec=/opt/google/chrome/google-chrome --app=feedly.com/i/my
到:
Exec=run_maximized "/opt/google/chrome/google-chrome --app=feedly.com/i/my" 100 100
注意引号,不要忘记窗口的水平/垂直大小
剧本
#!/usr/bin/env python3
import subprocess
import getpass
import time
import sys
user = getpass.getuser()
get = lambda x: subprocess.check_output(["/bin/bash", "-c", x]).decode("utf-8")
ws1 = get("wmctrl -lp"); t = 0
subprocess.Popen(["/bin/bash", "-c", sys.argv[1]])
while t < 30:
ws2 = [w.split()[0:3] for w in get("wmctrl -lp").splitlines() if not w in ws1]
procs = [[(p, w[0]) for p in get("ps -u "+user).splitlines() \
if "chrome" in p and w[2] in p] for w in ws2]
if len(procs) > 0:
command = "xdotool windowsize "+procs[0][0][1]+" "+sys.argv[2]+"% "+sys.argv[3]+"%"
subprocess.call(["/bin/bash", "-c", command])
break
time.sleep(0.5)
t = t+1
笔记
- 我曾经
xdotool
调整过窗口大小。也可以用 来完成wmctrl
,但是maximize
的命令有一些没有的wmctrl
副作用。xdotool
- 只需对脚本进行微小更改,它便可用于运行任何应用程序的预定义大小(或位置)的窗口。例如,在快速列表中可能很有用,可以在预定义的布局中创建多个窗口。