如何在 nautilus 中将特定文件夹设置为列表或图标视图?

E_A*_*gel 5 nautilus

有没有办法使用不同的文件夹查看每个文件夹?我喜欢将某些文件夹视为图标,而将其他文件夹视为列表。

在此处输入图片说明

Jac*_*ijm 5

由于nautilus没有在列表视图和图标视图之间切换的命令行选项,也没有设置每个文件夹的视图首选项的选项,因此没有干净的方法来做到这一点。

作为一个实验开始,下面的选项是看看是否可以以合理的功能方式完成。

正如评论中提到的,该解决方案很脏,但事实证明它功能齐全,并且在我测试它的几个小时内,我没有遇到问题。使用或不使用它的决定由您决定。

脚本及其作用

该解决方案由两个脚本组成;一个可以通过快捷键运行以将活动(nautilus)窗口添加到列表中的窗口。列出的窗口将自动设置为列表视图,其他窗口默认为图标视图。当然,您可以反之亦然,具体取决于您想要设置为默认的视图类型

从 / 到列表视图的切换是通过模拟Ctrl+1Ctrl+来完成的,它们是设置列表视图或图标视图2的快捷方式。nautilus

它在实践中是如何运作的

在后台运行第一个脚本,nautilus windows 的默认视图是icon view

如果要为特定文件夹设置列表视图,请导航到该文件夹​​(打开它),打开该文件夹的窗口并在最前面,按(例如Ctrl+ Alt+ A

这会将窗口的名称添加到列表中(保存在主目录中的隐藏文件中)。下次打开该文件夹时,它将自动切换到列表视图,并在您导航到另一个文件夹时返回图标视图。

要从列表中删除文件夹,请按Ctrl+ Alt+R将相关文件夹放在前面。

如何设置

  1. 脚本需要wmctrlxdotool

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将下面的脚本复制到一个空文件中,将其另存为add_folder.pyThis is the script to add or remove the window to/from list view

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
    Run Code Online (Sandbox Code Playgroud)

    应在 中创建一个隐藏文件~/home,名为.window_list.txt. 您需要按Ctrl+H才能使其可见(默认情况下,名称以“.”开头的文件是不可见的)

    如果工作正常,请添加这两个命令:

       python3 /path/to/add_folder.py +
       python3 /path/to/add_folder.py -
    
    Run Code Online (Sandbox Code Playgroud)

    快捷键组合(我使用了Ctrl+ Alt+RCtrl+ Alt+ A):选择:系统设置 >“键盘”>“快捷方式”>“自定义快捷方式”。单击“+”并添加命令

  3. 将下面的脚本复制到一个空文件中,将其另存为set_view.pyThis is the后台脚本,用于将窗口的视图更改为列表视图图标视图

    #!/usr/bin/env python3
    import subprocess
    import os
    import sys
    
    add = sys.argv[1]
    
    wlist = os.environ["HOME"]+"/.window_list.txt"
    
    get = lambda cmd: subprocess.check_output(cmd).decode("utf-8")
    window = get(["xdotool", "getactivewindow", "getwindowname"]).strip()+"\n"
    
    def add_window():
        if os.path.exists(wlist):
            current = open(wlist).readlines()
            if not window in current:
                new = current+[window]
                open(wlist, "w").writelines(new)
        else:
            open(wlist, "w").write(window)
    
    def remove_window():
        if os.path.exists(wlist):
            current = open(wlist).readlines()
            if window in current:
                current.remove(window)
                open(wlist, "w").writelines(current)
    
    if add == "+":
        add_window()
    elif add == "-":
        remove_window()
    
    Run Code Online (Sandbox Code Playgroud)

    通过从终端窗口运行来测试运行它:

    python3 /path/to/set_view.py
    
    Run Code Online (Sandbox Code Playgroud)

    浏览文件夹并将文件夹添加/删除到列表视图列表中,如中所述2.(请记住,列表视图将在您下次打开文件夹时激活)

就是这样!

笔记

由于该脚本不会查看列出的文件夹是否仍然存在于您的目录中,因此~/.window_list.txt如果您删除列出的文件夹,随着时间的推移,该文件可能会包含一些过时的条目。

您可以通过使用您设置的快捷方式来阻止 dat,或者只是偶尔浏览一下该文件。