![如何让 Nautilus 文件管理器记住我打开的标签?](https://linux22.com/image/988167/%E5%A6%82%E4%BD%95%E8%AE%A9%20Nautilus%20%E6%96%87%E4%BB%B6%E7%AE%A1%E7%90%86%E5%99%A8%E8%AE%B0%E4%BD%8F%E6%88%91%E6%89%93%E5%BC%80%E7%9A%84%E6%A0%87%E7%AD%BE%EF%BC%9F.png)
在关闭和打开 Nautilus 文件管理器之间是否可以保留我打开的选项卡?
最好甚至跨越不同的注销和重启。
答案1
Nautilus 的命令行选项非常有限
不幸的是,nautilus 没有提供命令行选项来读取其窗口打开的目录,也没有任何选项来发送现有窗口转到另一个目录。由于您无法记住您未看到的内容,因此我们一眼看上去就没有其他选择了。
然而
我们确实有xdotool
,不是要做那些nautilus
没有做的事,而是至少伪造的您所描述的行为。我们可以用这样一种方式做到这一点,即使您不知道它是如何做到的,您也会相信它。
尽管下面的解决方案在重启后无法继续使用,但在一个会话中“记住”(可能是选项卡式)窗口和所有打开的目录是完全有可能的。既然您提到对此感兴趣,将其作为“第二选择”,那么这里就是。
工作原理;流程
尽管我们不能关闭窗口并保留其标签页和打开的目录,我们能在 的帮助下,使现有窗口看似(并且完全)消失xdotool
。
如果我们随后改变启动器的行为,nautilus
使其第一的寻找可能未映射的窗口重新映射,在打开新的映射之前,实际上我们有确切地其行为与nautilus
记住最后使用的窗口相同。
如何设置
将以下脚本复制到一个空文件中,并将其另存为
remember.py
#!/usr/bin/env python3 import subprocess import os app = "nautilus" wfile = os.environ["HOME"]+"/.unmapped_"+app def get(cmd): # simply a helper function return subprocess.check_output(cmd).decode("utf-8").strip() def check_windowtype(w_id): # check the type of window; only unmap "NORMAL" windows return "_NET_WM_WINDOW_TYPE_NORMAL" in get(["xprop", "-id", w_id]) def get_pid(app): # (try to) get the pid of the application try: return get(["pgrep", app]) except subprocess.CalledProcessError: pass def get_matches(pid): # get the window list, select the valid (real) app's windows ws = get(["wmctrl", "-lpG"]).splitlines() matches = [w.split() for w in ws if pid in w] return [w for w in matches if check_windowtype(w[0]) == True] try: # try to read the file with unmapped windows wininf = [l.split() for l in open(wfile).readlines()] except FileNotFoundError: # if there are no, unmap the current app's windows filebrowserwins = get_matches(get_pid(app)) if filebrowserwins: open(wfile, "wt").write(("\n").join((" ").join(l) for l in filebrowserwins)) for w in [w[0] for w in filebrowserwins]: subprocess.Popen(["xdotool", "windowunmap", w]) else: arg = "--new-window" if app == "nautilus" else "" subprocess.Popen([app, arg]) else: # re- map unmapped windows for w in wininf: wid = w[0]; geo = w[3:7] subprocess.call(["xdotool", "windowmap", wid]) subprocess.Popen(["wmctrl", "-ir", wid, "-e", "0,"+(",").join(geo)]) os.remove(wfile)
该脚本需要
wmctrl
和xdotool
:sudo apt-get install wmctrl xdotool
将
nautilus
启动器从/usr/share/applications
复制到~/.local/share/applications
对于 15.04 及更高版本:
cp /usr/share/applications/org.gnome.Nautilus.desktop ~/.local/share/applications
对于早期的 Ubuntu 版本:
cp /usr/share/applications/nautilus.desktop ~/.local/share/applications
使用 gedit 打开本地副本:
gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
(的情况下
15.04 +
)并寻找第一的行,以 开头
Exec=
。将其更改为:Exec=python3 /path/to/remember.py
保存并关闭文件。
使用相同命令创建键盘快捷键:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:
python3 /path/to/remember.py
现在注销并重新登录
如何使用
使用非常简单:
要打开窗口,请照常操作:单击 nautilus 启动器。根据需要选择窗口:
关闭窗口明确地,点击窗口的“关闭”按钮关闭它(X) 盒子。
到保存窗口 + 其所有标签:
按快捷键。窗口将消失(看似关闭)。下次您单击启动器时,nautilus 窗口将与上次完全一样出现,甚至窗口位置也将被保留。
就是这样
笔记
- 在我进行的测试中,我找不到任何缺点(14.04)。如果您遇到任何问题,请告知!
- 在里面如何使用-部分,我建议单击 nautilus 图标来重新映射可能未映射的窗口。但是快捷键也会执行相同的操作,因此您可以看到哪种方式对您最方便。此外,如果您通过双击打开文件夹,后您取消了一个或多个文件夹的映射,未映射的文件夹仍将通过快捷方式重新映射。
编辑:
Nemo 用户
Nemo 用户同样可以使用上述解决方案,但是:
在脚本的头部部分,更改:
app = "nautilus"
进入:
app = "nemo"
在第 3 点中,使用:
cp /usr/share/applications/nemo.desktop ~/.local/share/applications
在第 4 点中,使用:
gedit ~/.local/share/applications/nemo.desktop
经过测试,证明可以与 Nemo 配合使用
答案2
答案3
尝试使用这些脚本来保存和恢复 nautilus 文件管理器的选项卡。 https://github.com/susurri/nautilus_save_tabs/
答案4
访问文件夹最简单的方法是添加书签。您无需一直打开标签,但至少可以快速看到所需的文件夹(如果您仔细想想,书签就充当了标签的作用)。
只需打开 Nautilus 上的文件夹,转到书签菜单并添加书签。