如何从命令行启动最大化的 nautilus?

如何从命令行启动最大化的 nautilus?

我可以轻松地从命令行在特定目录上启动 Nautilus:

nautilus /home/nico/Documents

但我想让 Nautilus 窗口最大化。
命令行该怎么写?

nautilus似乎没有识别--maximized出来--fullscreen。我勉强尝试了一下--geometry 1500x1500,似乎确实没有什么效果。

答案1

1. 以最大化窗口启动 nautilus

要从最大化窗口开始nautilus,您可以使用以下脚本:

#!/usr/bin/env python3
import subprocess
import time
import sys

def w_list():
    try:
        pid = subprocess.check_output(["pgrep", "nautilus"]).decode("utf-8").strip()
        w_list = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
        return [l.split()[0] for l in w_list if pid in l]
    except subprocess.CalledProcessError:
        pass

relevant1 = w_list()
subprocess.Popen(["nautilus", "--new-window"])

t = 0
while t < 30:
    time.sleep(0.5)
    relevant2 = w_list()
    if all([relevant2 != None, relevant1 != None]):
        new = [w for w in relevant2 if not w in relevant1]
        if new:
            subprocess.Popen(["xdotool", "windowsize", new[0], "100%", "100%"])
            break
    relevant1 = relevant2
    t += 1

如何使用

  • 脚本同时使用xdotoolwmctrl,第一个列出的新的目标应用程序的窗口,最后一个,因为我更喜欢xdotool调整窗口大小的方式。

    sudo apt-get install xdotool wmctrl
    
  • 然后将上面的脚本复制到一个空文件中,另存为start_maximized.py

  • 通过以下命令测试运行脚本:

    python3 /path/to/start_maximized.py
    

    现在,nautilus 将启动一个新的最大化窗户。

  • 如果愿意,可以将该命令作为快速列表(右键单击)项添加到FilesUnity Launcher 中的(nautilus)启动器。

2. 通用版本;启动任何应用程序最大化

您可以启动任何以下通用脚本中的 GUI 应用程序(+它们的参数):

#!/usr/bin/env python3
import subprocess
import time
import sys

appcommand = sys.argv[1:]
app = appcommand[0]
startup = (" ").join(appcommand)

def w_list():
    try:
        pid = subprocess.check_output(["pgrep", app]).decode("utf-8").strip()
        w_list = subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8").splitlines()
        return [l.split()[0] for l in w_list if pid in l]
    except subprocess.CalledProcessError:
        pass

relevant1 = w_list()
subprocess.Popen(["/bin/bash", "-c", startup])

t = 0
while t < 30:
    time.sleep(0.5)
    relevant2 = w_list()
    if all([relevant2 != None, relevant1 != None]):
        new = [w for w in relevant2 if not w in relevant1]
        if new:
            subprocess.Popen(["xdotool", "windowsize", new[0], "100%", "100%"])
            break
    relevant1 = relevant2
    t += 1

使用它

  • 完全按照上述方式进行设置(包括安装wmctrlxdotool,但另外使用目标应用程序(+可能的参数)作为运行脚本的参数。

    例如:

    python3 /path/to/start_maximized.py nautilus --new-window
    

    或者:

    python3 /path/to/start_maximized.py gedit
    

另外,将选项添加到快捷列表中

在此处输入图片描述

您可以轻松地将该选项添加到nautilus快速列表中。假设您使用第二个(通用)版本:

  • 将全局nautilus.desktop文件复制到本地:

    这是14.04 和 14.10:鹦鹉螺.桌面:

    cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
    

    以及15.04 和 15.10:org.gnome.Nautilus.desktop

    cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
    
  • 使用(例如)gedit 打开文件,查找以下行:

    Actions=Window;
    

    改成:

    Actions=Window;Open a maximized window;
    

    在文件的最末尾添加:

    [Desktop Action Open a maximized window]
    Name=Open a maximized window
    Exec=python3 '/path/to/start_maximized.py' nautilus --new-window
    OnlyShowIn=Unity;
    
  • 保存并关闭文件。

  • 注销并重新登录。

现在您有一个像图中一样的快速列表选项。

概念解释

最大化现有的窗口并不难。wmctrl和都xdotool提供了实现该目的的选项。

问题是,如果你想最大化一个新创建的窗口,当你给出命令时你还不知道窗口的 ID。因此脚本执行以下步骤:

  1. 列出目标应用程序当前存在的窗口(如果有)
  2. 给出打开应用程序的命令(或正在运行的应用程序的新窗口)
  3. 关注新的应用程序窗口出现
  4. 如果出现新窗口,显然它是我们的候选最大化->最大化它。

这样,我们可以“智能地”最大化应用程序的新窗口,无论计算机运行缓慢(例如,忙于繁重的工作)还是运行快速,它都可以正常工作。

最后,脚本内置了安全时间限制,以防止应用程序因某种原因无法启动而永远等待。大约 15 秒后,脚本放弃并退出。

答案2

Nautilus 会记住窗口大小。
正常启动并最大化窗口,然后关闭窗口。

现在,当您nautilus在终端中输入时,它将最大化打开。
已在 Ubuntu 14.04 LTS 上测试。

相关内容