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

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

有没有办法使用不同的文件夹查看每个文件夹?有些文件夹我喜欢以图标形式查看,而其他文件夹则以列表形式查看更好。

在此处输入图片描述

答案1

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

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

正如评论中提到的,这个解决方案非常肮脏,但事实证明它功能齐全,在我测试它的几个小时里,我没有遇到任何问题。是否使用它由您决定。

脚本及其作用

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

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

实践中如何运作

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

如果你想设置列表显示对于特定文件夹,导航到该文件夹​​(打开它),打开文件夹窗口并将其放在最前面,按(例如Ctrl+ Alt+ A

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

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

如何设置

  1. 脚本需要wmctrlxdotool

    sudo apt-get install wmctrl
    sudo apt-get install xdotool
    
  2. 将下面的脚本复制到一个空文件中,并将其另存为add_folder.py这是添加或删除窗口的脚本列表显示

    #!/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()
    
    • 通过以下命令测试运行脚本:

      python3 /path/to/add_folder.py +
      

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

    如果运行正常,请添加两个命令:

       python3 /path/to/add_folder.py +
       python3 /path/to/add_folder.py -
    

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

  3. 将下面的脚本复制到一个空文件中,并将其另存为set_view.py这是将窗口视图更改为以下任一的后台脚本列表显示或者图标视图

    #!/usr/bin/env python3
    import subprocess
    import time
    import os
    wlist = os.environ["HOME"]+"/.window_list.txt"
    
    def get(cmd):
        try:
            return subprocess.check_output(cmd).decode("utf-8")
        except subprocess.CalledProcessError:
            return ""
    
    def check_window():
        pid = subprocess.check_output(["pidof", "nautilus"]).decode("utf-8").strip()
        wlist = get(["wmctrl", "-lp"]).splitlines()
        front = get(["xdotool", "getactivewindow", "getwindowname"]).strip()
        return (front, [w for w in wlist if all([pid in w, front in w])])
    
    match1 = check_window()
    
    while True:
        time.sleep(1)
        match2 = check_window()
        if all([match2 != match1, match2[1] != []]):
            w = match2[0]
            try:
                if w in open(wlist).read().splitlines():
                    cmd = "xdotool key Ctrl+1"
                    subprocess.Popen(["/bin/bash", "-c", cmd])
                else:
                    cmd = "xdotool key Ctrl+2"
                    subprocess.Popen(["/bin/bash", "-c", cmd])
            except FileNotFoundError:
                pass
        match1 = match2
    

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

    python3 /path/to/set_view.py
    

    浏览文件夹并按说明将文件夹添加/删除到列表视图列表中2.(请记住,列表视图将被激活下一次打开文件夹)

就是这样!

笔记

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

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

相关内容