如何在启动应用程序后强制应用程序窗口自动最大化?

我试图使用Docky,然后我将其删除,之后我的浏览器(Chromium)无法在最大高度打开,每次我都应该自己最大化。 (XFCE桌面)

如何启动应用程序(任何)最大化

通过下面的脚本启动应用程序,您可以强制任何应用程序*启动最大化。 如果您通过运行脚本的命令替换( .desktop副本) .desktop文件中的主命令(请参阅下面的进一步说明)或将其添加为快捷列表快捷方式,您可以完全按照自己的意愿实现。

*某些应用程序具有固定的,不可更改的窗口大小,某些窗口在可能已打开的窗口中打开新选项卡

关于脚本

该脚本使用以下命令运行:

 python3 /path/to/script  

剧本:

  • 首先运行命令以打开应用程序
  • 为了防止计时问题,它等待应用程序的(新)窗口出现(通过在wmctrl -lp和相应窗口的id之间找到匹配)在wmctrl -lp -command的输出中(仅15秒,到防止无限循环)
  • 窗口出现后,它会使用以下命令最大化窗口:

     xdotool windowsize  100% 100% 

代码

 #!/usr/bin/env python3 import subprocess import getpass import time import sys app = sys.argv[1] user = getpass.getuser() get = lambda x: subprocess.check_output(x).decode("utf-8") ws1 = get(["wmctrl", "-lp"]); t = 0 subprocess.Popen(app) while t < 30: ws2 = [(w.split()[2], w.split()[0]) for w in get(["wmctrl", "-lp"]).splitlines() if not w in ws1] procs = sum([[(w[1], p) for p in get(["ps", "-u", user]).splitlines() \ if app[:15].lower() in p.lower() and w[0] in p] for w in ws2], []) if len(procs) > 0: subprocess.call(["xdotool", "windowsize", "-sync", procs[0][0] , "100%", "100%"]) break time.sleep(0.5) t = t+1 

如何使用

  1. 该脚本需要wmctrlxdotool

     sudo apt-get install wmctrl xdotool 
  2. 将上面的脚本复制到一个空文件中,保存为run_maximized.py

  3. 现在编辑.desktop文件:

    • 在本地复制全局.desktop文件:

       cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications 

XFCE版本:

  1. 用gedit打开文件:

     gedit ~/.local/share/applications/chromium-browser.desktop 

    浏览到该行:

     Exec=chromium-browser %U 

    (这是第一行,以Exec=开头

    将其更改为:

     Exec=python3 /path/to/script.py chromium-browser 

    你需要用实际路径替换/path/to/script.py

  2. 退出并重新登录。从现在开始,您的Chromium启动器将打开Chromium最大化。

Unity版本:

  1. 用gedit打开文件:

     gedit ~/.local/share/applications/chromium-browser.desktop 

    浏览到该行:

     Actions=NewWindow;Incognito;TempProfile; 

    将其更改为:

     Actions=NewWindow;Incognito;TempProfile;divider1;Open maximized; 

    添加到文件的最底部的部分如下:

     [Desktop Action Open maximized] Name=Open maximized Exec=python3 /path/to/script.py chromium-browser OnlyShowIn=Unity; [Desktop Action divider1] Name=..................................... OnlyShowIn=Unity; 

    你需要用实际路径替换/path/to/script.py

  2. 退出并重新登录。从现在开始,您的Chromium启动器看起来像:

    在此处输入图像描述

重要的提示

.desktop文件中,您必须使用绝对路径; ~不会起作用的例子。 这将计入/usr/share/applications~/.local/share/applications中的.desktop文件以及启动应用程序中的命令(实际上由~/.config/autostart .desktop文件调用)。