如何让 Nautilus 文件管理器记住我打开的标签?

如何让 Nautilus 文件管理器记住我打开的标签?

在关闭和打开 Nautilus 文件管理器之间是否可以保留我打开的选项卡?

最好甚至跨越不同的注销和重启。

答案1

Nautilus 的命令行选项非常有限

不幸的是,nautilus 没有提供命令行选项来读取其窗口打开的目录,也没有任何选项来发送现有窗口转到另一个目录。由于您无法记住您未看到的内容,因此我们一眼看上去就没有其他选择了。

然而

我们确实有xdotool,不是要做那些nautilus没有做的事,而是至少伪造的您所描述的行为。我们可以用这样一种方式做到这一点,即使您不知道它是如何做到的,您也会相信它。

尽管下面的解决方案在重启后无法继续使用,但在一个会话中“记住”(可能是选项卡式)窗口和所有打开的目录是完全有可能的。既然您提到对此感兴趣,将其作为“第二选择”,那么这里就是。

工作原理;流程

尽管我们不能关闭窗口并保留其标签页和打开的目录,我们在 的帮助下,使现有窗口看似(并且完全)消失xdotool

如果我们随后改变启动器的行为,nautilus使其第一的寻找可能未映射的窗口重新映射,在打开新的映射之前,实际上我们有确切地其行为与nautilus记住最后使用的窗口相同。

如何设置

  1. 将以下脚本复制到一个空文件中,并将其另存为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)
    
  2. 该脚本需要wmctrlxdotool

    sudo apt-get install wmctrl xdotool
    
  3. 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
    
  4. 使用 gedit 打开本地副本:

    gedit ~/.local/share/applications/org.gnome.Nautilus.desktop
    

    (的情况下15.04 +

    并寻找第一的行,以 开头Exec=。将其更改为:

    Exec=python3 /path/to/remember.py
    

    保存并关闭文件。

  5. 使用相同命令创建键盘快捷键:选择:系统设置 > “键盘” > “快捷键” > “自定义快捷键”。单击“+”并添加命令:

    python3 /path/to/remember.py
    
  6. 现在注销并重新登录

如何使用

使用非常简单:

  • 要打开窗口,请照常操作:单击 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

我建议使用其他文件管理器如果你同意的话Nautilus 没有这个功能

下面是一个可以实现这一目的的替代应用程序:太空调频

安装方法如下。

它具有丰富的功能,例如,重新打开最后几个标签页

为了使其成为默认文件管理器:

xdg-mime default spacefm.desktop inode/directory

答案3

尝试使用这些脚本来保存和恢复 nautilus 文件管理器的选项卡。 https://github.com/susurri/nautilus_save_tabs/

答案4

访问文件夹最简单的方法是添加书签。您无需一直打开标签,但至少可以快速看到所需的文件夹(如果您仔细想想,书签就充当了标签的作用)。

只需打开 Nautilus 上的文件夹,转到书签菜单并添加书签。

相关内容