Nautilus 从哪里获取其文件类型描述

Nautilus 从哪里获取其文件类型描述

我已经为自定义文件类型创建并注册了一些共享 mime-info 文件。例如,在

~/.local/share/mime/packages

我添加了类似的文件

x-myokit.xml

包含 mime 类型描述,例如

<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
  <mime-type type="text/x-myokit">
    <comment xml:lang="en">Myokit model definition</comment>
    <glob pattern="*.mmt"/>
  </mime-type>
</mime-info>

Nautilus 现在可以识别我的文件,但仍将文件类型显示为“未知”。如何让它在本专栏中显示更有用的内容?

答案1

Nautilus根据开发人员的决定,这是硬编码的只显示基本类型信息默认情况下位于列中Type,以便按类型排序将对类型系列进行分组。
基本类型定义在nautilus 文件.c基于通用(符号)图标名称1

struct {
        const char *icon_name;
        const char *display_name;
} mime_type_map[] = {
    { "application-x-executable", N_("Program") },
    { "audio-x-generic", N_("Audio") },
    { "font-x-generic", N_("Font") },
    { "image-x-generic", N_("Image") },
    { "package-x-generic", N_("Archive") },
    { "text-html", N_("Markup") },
    { "text-x-generic", N_("Text") },
    { "text-x-generic-template", N_("Text") },
    { "text-x-script", N_("Program") },
    { "video-x-generic", N_("Video") },
    { "x-office-address-book", N_("Contacts") },
    { "x-office-calendar", N_("Calendar") },
    { "x-office-document", N_("Document") },
    { "x-office-presentation", N_("Presentation") },
    { "x-office-spreadsheet", N_("Spreadsheet") },
};

不属于上述类别的类型显示为Unknown

if (basic_type == NULL) {
    basic_type = g_strdup (_("Unknown"));

结果,具有 mime 类型的文件application/x-myokit(具有相应的符号图标名称)将在 列中application-x-generic列出,而具有 mime 类型的文件(具有相应的符号图标名称)将在 列中列出(另请参阅各种系统文件,例如文件下或文件中- 它们都被列为,但如果您选择其中之一并点击+,您将获得详细、准确的信息)。UnknownTypetext/x-myokittext-x-genericTextType*.so/usr/lib*.mo/usr/share/localeUnknownAltEnter


generic-icon name如果您在文件中使用,您可以让 Nautilus 列出其他内容xml。尽管您的选择仅限于上述类别。因此,例如,如果您希望每个文件都在列中*.mmt列出,您可以像这样编辑:ProgramTypex-myokit.xml

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="application/x-myokit">
        <comment>Myokit model definition</comment>
        <generic-icon name="text-x-script"/>
        <glob pattern="*.mmt"/>
    </mime-type>
</mime-info>

不要忘记使用以下命令更新 mime 数据库:

update-mime-database ~/.local/share/mime

如果您需要更多有用的信息,您可以在首选项中启用/检查该MIME typeNautilus(或使用dconf/ gsettings:添加mime_typeorg.gnome.nautilus.list-view default-visible-columns)。

1:运行gio info -a standard::symbolic-icon file以查看相应的符号图标名称(在旧设置上替换gio infogvfs-info

答案2

我相信 Nautilus 从 location 获取文件描述/usr/share/applications。你可以从我的另一个回答中找到更多有用的信息这里。特别,Ask Ubuntu 中的答案详细讨论了文件关联是如何存储的。

文件管理器(默认情况下为 Nautilus)使用文件的 MIME 类型来确定使用哪个程序打开该文件。安装应用程序时,它可以指定可以打开的 MIME 类型以及用于打开 .desktop 文件(位于 .desktop)中的文件的命令/usr/share/applications。这是用于菜单、桌面快捷方式等的文件。

相关内容