如何在nautilus中将特定文件夹设置为列表或图标视图?
有没有办法使用不同的文件夹查看每个文件夹? 我喜欢看一些文件夹作为图标和其他文件夹更好地看作列表。
由于nautilus
没有用于在列表视图和图标视图之间切换的命令行选项,也没有为每个文件夹设置视图prferences的选项,因此没有干净的方法来执行此操作。
作为一个实验开始,下面的选项是看看它是否可以以合理的function方式完成。
正如评论中所提到的那样,解决方案虽然很脏,但事实certificate它是完全正常的,并且在我测试它的几个小时内,我没有遇到问题。 是否使用它的决定。
脚本及其function
该解决方案包含两个脚本; 从快捷键运行一个以将活动(nautilus)窗口添加到列表。 列出的窗口将自动设置为列表视图 ,其他窗口默认位于图标视图中 。 当然,您可以将其设置为反之,具体取决于您要将其设置为默认的视图类型
从/到列表视图的切换是通过模拟Ctrl + 1或Ctrl + 2来完成的 ,这是nautilus
中设置列表或图标视图的快捷方式。
它在实践中如何运作
在后台运行第一个脚本,nautilus窗口的默认视图是图标视图 。
如果要为特定文件夹设置列表视图 ,请导航到文件夹(打开它),打开文件夹的窗口并按最前面,按(例如Ctrl + Alt + A )
这会将窗口的名称添加到列表中(保存在主目录中的隐藏文件中)。 下次打开文件夹时,它会自动切换到列表视图,并在导航到另一个文件夹时返回到图标视图。
要从列表中删除该文件夹,请按Ctrl + Alt + R ,前面有相关文件夹。
如何设置
-
脚本需要
wmctrl
和xdotool
:sudo apt-get install wmctrl sudo apt-get install xdotool
-
将下面的脚本复制到一个空文件中,将其另存为
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 + R和Ctrl + Alt + A ):选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。 单击“+”并添加命令
-
-
将下面的脚本复制到一个空文件中,将其另存为
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中的说明将文件夹添加/删除到列表视图列表中
2.
(请记住, 下次打开文件夹时将激活列表视图)
而已!
注意
由于脚本无法查看列出的文件夹是否仍存在于您的目录中,因此如果删除列出的文件夹,文件~/.window_list.txt
可能会包含一些过时的条目。
您可以通过使用您设置的快捷方式来阻止数据,或者只是每隔一段时间浏览一次文件。