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


10

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

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



1
在一个会话中,还是在重新启动/注销之后?
Jacob Vlijm '16

@JacobVlijm最好甚至在重新启动/注销期间持续存在。
orschiro 2016年

除非Parto的链接提供了解决方案,否则nautilus的命令行选项/集成非常有限。没有选项来读取当前打开的目录,也不能从命令行对其进行更改。记住你看不到的东西对我来说似乎是不可能的。在一个会话中,虽然可以使用技巧和作弊选项。
Jacob Vlijm '16

@JacobVlijm介意解释如何在一个会话中实现记忆?首先,这已经是一件了不起的事情。:)
orschiro 2016年

Answers:


7

(非常)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)框。

  • 保留窗口及其所有选项卡:
    按快捷键。窗口将消失(似乎关闭)。

    在此处输入图片说明

  • 下次单击启动器时,鹦鹉螺窗口将与上次完全相同,甚至保留窗口位置。

    在此处输入图片说明

而已

注意

  • 在我进行的测试中,我没有发现任何缺点(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合作


出色的工作解决方案并有据可查。非常感谢你!
orschiro 2016年

如果有效,@ orschiro总是很有趣的:)不客气!
Jacob Vlijm '16

5

我建议您改用其他文件管理器,因为Nautilus没有该功能,则可以

这是一个可以解决问题的应用程序:SpaceFM

这是安装方法。

它具有丰富的功能,例如,当然可以重新打开最后一个标签

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

xdg-mime default spacefm.desktop inode/directory



0

访问文件夹的最简单方法是添加书签。您不会一直打开选项卡,但是至少可以快速看到想要的文件夹(如果考虑一下,书签会充当选项卡)。

只需在Nautilus上打开一个文件夹,进入“书签”菜单并添加书签。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.