我可以轻松地从命令行在特定目录上启动 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
如何使用
脚本同时使用
xdotool
和wmctrl
,第一个列出的新的目标应用程序的窗口,最后一个,因为我更喜欢xdotool
调整窗口大小的方式。sudo apt-get install xdotool wmctrl
然后将上面的脚本复制到一个空文件中,另存为
start_maximized.py
通过以下命令测试运行脚本:
python3 /path/to/start_maximized.py
现在,nautilus 将启动一个新的最大化窗户。
如果愿意,可以将该命令作为快速列表(右键单击)项添加到
Files
Unity 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
使用它
完全按照上述方式进行设置(包括安装
wmctrl
和xdotool
,但另外使用目标应用程序(+可能的参数)作为运行脚本的参数。例如:
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。因此脚本执行以下步骤:
- 列出目标应用程序当前存在的窗口(如果有)
- 给出打开应用程序的命令(或正在运行的应用程序的新窗口)
- 关注新的应用程序窗口出现
- 如果出现新窗口,显然它是我们的候选最大化->最大化它。
这样,我们可以“智能地”最大化应用程序的新窗口,无论计算机运行缓慢(例如,忙于繁重的工作)还是运行快速,它都可以正常工作。
最后,脚本内置了安全时间限制,以防止应用程序因某种原因无法启动而永远等待。大约 15 秒后,脚本放弃并退出。
答案2
Nautilus 会记住窗口大小。
正常启动并最大化窗口,然后关闭窗口。
现在,当您nautilus
在终端中输入时,它将最大化打开。
已在 Ubuntu 14.04 LTS 上测试。