是否可以在 Nautlius 首选项对话框中添加一列?具体来说,添加一列来指示文件夹中该文件的基数

是否可以在 Nautlius 首选项对话框中添加一列?具体来说,添加一列来指示文件夹中该文件的基数

我正在使用 Ubuntu 16.04。我的问题基本上是这样的。在 Nautilus 首选项中,是否可以添加一个列来显示与给定文件夹中的文件相对应的升序基数?请参阅图片。

在此处输入图片描述

我们在图像中可以看到有一个“列表列”选项卡。是否可以在此选项卡下的列表中添加“编号”列?我正在寻找的功能是使用 Nautilus 显示文件夹内容时自动枚举或编号文件(按升序)。这意味着自动在每个文件名的左侧放置一个升序数字,但当然是在不同的列中。我知道这可以通过终端中的命令行使用“nl”命令来完成,但有些任务使用 Nautilus 显示文件夹内容更有效。特别是当您选择文件并将其从一个地方拖到另一个地方并试图跟踪您最后与哪个文件交互时。

答案1

nautilus 中没有捆绑这样的功能。即使是 API 也让这变得相当困难,所以我尝试把所有能用到的东西都整合在一起。

由于 16.04 已停产,我将提供一些仅在 23.10 上测试过的说明。名称可能需要调整。

首先,在 nautilus 中安装对 Python 扩展的支持:sudo apt install python3-nautilus

在 创建一个新文件(和父目录)~/.local/share/nautilus-python/extensions/cardinal-number.py,并将以下内容粘贴到其中:

import os.path
from urllib.parse import unquote
from gi.repository import GObject, Nautilus
from typing import List


class ColumnExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoProvider):
    def get_columns(self) -> List[Nautilus.Column]:
        column = Nautilus.Column(
            name="NautilusPython::cardinal",
            attribute="cardinal",
            label="Cardinal number",
            description="Get the cardinal number",
        )

        return [
            column,
        ]

    def update_file_info(self, file: Nautilus.FileInfo) -> None:
        filename = unquote(file.get_uri()[7:])
        dirname = os.path.dirname(filename)
        basename = os.path.basename(filename)

        alphabetic_sort_key = lambda x: x # Do nothing and return the file name
        chronological_sort_key = lambda x: os.path.getmtime(os.path.join(dirname, x))
        # Change the following line to whichever order you want
        sort_key = alphabetic_sort_key

        # This is extremely inefficient because
        # it lists and sorts the directory for every file
        # But we will have to make do with it because "file: Nautilus:FileInfo"
        # does not appear to include the index, or point to any data structure
        # where information about the directory is stored
        directory_listing = sorted(os.listdir(dirname), key=sort_key)

        offset = 0 # Replace 0 with 1 if you want to start counting from 1
        file.add_string_attribute("cardinal", str(offset + directory_listing.index(basename)))

重新打开 nautilus 之前运行killall nautilus以确保新的扩展已加载。

然后您可以右键单击列标题的最右侧部分:

可见列的右键菜单

单击“可见列”,然后向下滚动并启用我的新“基数”列:

可见列窗口

最终结果应如下所示:

/ 上的基数列演示

相关内容