Chrome 应用程序快捷方式打开小窗口

Chrome 应用程序快捷方式打开小窗口

我创建了一堆 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

命令中的最后两个数字是窗口的水平/垂直尺寸(以百分比表示,与屏幕尺寸有关)

设置

  1. 该脚本同时使用了wmctrlxdotool

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. 将下面的脚本复制到一个空文件中,将其另存为run_maximized(无扩展名)~/bin。如果目录不存在,请创建该目录。使脚本可执行。

  3. 如果你刚刚创建了目录~/bin,请注销/登录或运行

    source ~/.profile
    
  4. 在 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
  • 只需对脚本进行微小更改,它便可用于运行任何应用程序的预定义大小(或位置)的窗口。例如,在快速列表中可能很有用,可以在预定义的布局中创建多个窗口。

相关内容