Nic*_*oul 4 command-line nautilus window-manager maximized xdotool
我可以从命令行轻松地在特定目录上启动 Nautilus:
nautilus /home/nico/Documents
Run Code Online (Sandbox Code Playgroud)
但我希望 Nautilus 窗口最大化。
命令行怎么写?
nautilus好像不认识--maximized也不--fullscreen。我不情愿地尝试了--geometry 1500x1500,它似乎确实有任何效果。
要从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
Run Code Online (Sandbox Code Playgroud)
该脚本同时使用xdotool和wmctrl,第一个列出目标应用程序的新窗口,最后一个因为我更喜欢xdotool调整窗口大小的方式。
sudo apt-get install xdotool wmctrl
Run Code Online (Sandbox Code Playgroud)然后将上面的脚本复制到一个空文件中,另存为 start_maximized.py
通过以下命令测试运行脚本:
python3 /path/to/start_maximized.py
Run Code Online (Sandbox Code Playgroud)
现在 nautilus 将启动一个新的最大化窗口。
如果您愿意,可以将该命令作为快速列表(右键单击)项目添加到FilesUnity 启动器中的 (nautilus) 启动器。
您可以在下面的通用脚本中启动任何GUI 应用程序(+ 它们的参数):
sudo apt-get install xdotool wmctrl
Run Code Online (Sandbox Code Playgroud)
完全按照上述进行设置(包括安装wmctrl和xdotool,但另外使用目标应用程序(+ 可能的参数)作为运行脚本的参数。
例如:
python3 /path/to/start_maximized.py nautilus --new-window
Run Code Online (Sandbox Code Playgroud)
或者:
python3 /path/to/start_maximized.py gedit
Run Code Online (Sandbox Code Playgroud)您可以轻松地将该选项添加到nautilus快速列表中。假设您使用第二个(通用)版本:
将全局nautilus.desktop文件复制到本地:
这是在14.04 和 14.10 上:nautilus.desktop:
cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
Run Code Online (Sandbox Code Playgroud)
在15.04 和 15.10 上:org.gnome.Nautilus.desktop
cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
Run Code Online (Sandbox Code Playgroud)使用(例如)gedit 打开文件,查找以下行:
Actions=Window;
Run Code Online (Sandbox Code Playgroud)
改成:
Actions=Window;Open a maximized window;
Run Code Online (Sandbox Code Playgroud)
添加到文件的最后:
[Desktop Action Open a maximized window]
Name=Open a maximized window
Exec=python3 '/path/to/start_maximized.py' nautilus --new-window
OnlyShowIn=Unity;
Run Code Online (Sandbox Code Playgroud)保存并关闭文件。
现在您有一个如图所示的快速列表选项。
最大化现有窗口并不是很困难。双方wmctrl并xdotool提供选择这样做。
问题是如果你想最大化一个新创建的窗口,你在给出命令时还不知道窗口 ID。因此,脚本执行以下过程:
这样,我们可以“聪明地”最大化应用程序的新窗口,无论计算机速度慢(例如忙于繁重的工作)还是快速,它都可以工作。
最后,脚本有一个内置的安全时间限制,以防止在应用程序由于某种原因无法启动时一直等待。大约之后 15秒后,脚本放弃并退出一条路。