有没有办法使用不同的文件夹查看每个文件夹?有些文件夹我喜欢以图标形式查看,而其他文件夹则以列表形式查看更好。
答案1
由于nautilus
没有命令行选项可以在列表视图和图标视图之间切换,也没有设置视图首选项的选项每个文件夹,没有干净的方法来做到这一点。
作为一个实验开始,下面的选项是看看是否可以以合理的功能方式完成它。
正如评论中提到的,这个解决方案非常肮脏,但事实证明它功能齐全,在我测试它的几个小时里,我没有遇到任何问题。是否使用它由您决定。
脚本及其作用
该解决方案由两个脚本组成;一个脚本通过快捷键运行,用于将活动 (nautilus) 窗口添加到列表中。列出的窗口将自动设置为列表显示,其他窗口在图标视图默认情况下。当然,您可以反过来设置,具体取决于您想要设置为默认的视图类型
Ctrl通过模拟+1或Ctrl+来从 / 切换到列表视图,它们是设置列表或图标视图的2快捷方式。nautilus
实践中如何运作
在后台运行第一个脚本,nautilus windows 的默认视图是图标视图。
如果你想设置列表显示对于特定文件夹,导航到该文件夹(打开它),打开文件夹窗口并将其放在最前面,按(例如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.
(请记住,列表视图将被激活下一次打开文件夹)
就是这样!
笔记
由于脚本不会查看列出的文件夹是否仍然存在于您的目录中,~/.window_list.txt
如果您删除列出的文件夹,该文件可能会随着时间的推移包含一些过时的条目。
您可以使用设置的快捷方式来阻止数据,或者只是偶尔浏览一下文件。