通用源代码和其他文件的不同图标

通用源代码和其他文件的不同图标

我正在尝试为 gnome 制作一个 mimetype 图标主题。我已经text-x-generic.svg为所有无主题的文件类型创建了。但我正在寻找的是无主题源代码(例如,R、vala、awk 等)和纯通用文本文件的不同图标。

这可能吗?

注意我尝试text-x-generic.svg区分text-generic.svg源代码和纯文本,但这不是 linux(gnome) 所理解的。

回复 don_crissti 的评论比如说,我有ruby、 和的图标js,但没有C和 的图标R。所以,file.c并且file.r应该显示图标的图标text-x-generic-unthemed-sourcecode。并且file.datfilename_without_extensions应显示不同的图标 ( text-generic-plaintext)。

从文件角度来看,它们是不同的,因为

$ file i.c
i.c: C source, ASCII text

$ file dos.dat
dos.dat: ASCII text

所以,应该有一些办法。

答案1

使用的图标gnome基于 mime 类型,因此您的file.c不会被检测为,text-x-generic-unthemedtext-x-csrc由于您没有关联图标,它将回退到text-x-generic
例如: 使用的图标.vala是:text-x-vala, text-x-generic但由于我的图标集中没有text-x-vala图标,系统将回退到text-x-generic

在此输入图像描述

看帖子这里关于如何确定特定 MIME 类型的关联图标。


为了使用不同的回退图标(例如text-x-unthemed),必须自定义应回退到该特定图标的 MIME 类型的定义,并将相关图标 ( text-x-unthemed) 添加到 下的图标集mimetypes

  1. 添加图标,然后更新图标缓存:

    gtk-update-icon-cache /path/to/icon_theme_directory
    
  2. text-x-unthemed为 mime 类型添加自定义定义,如果它们没有相应的图标,则应将其用作通用(后备)图标。在例如下
    创建unthemed.xml文件~/.local/share/mime/packages

    <?xml version="1.0"?>
     <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
      <mime-type type="text/x-vala">
        <comment>Vala source code</comment>
        <glob pattern="*.vala" case-sensitive="true"/>
        <generic-icon name="text-x-unthemed"/>
      </mime-type>
     </mime-info>
    

    如果需要,将其他 mime 类型添加到列表中(使用瓦拉 <mime-type>块作为模板)。

  3. 使用以下命令重建 mime 缓存:

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

然后系统应该回退到文件text-x-unthemed图标.vala

在此输入图像描述

如果稍后添加专用图标text-x-vala,系统将使用该图标,例如:

在此输入图像描述


每次添加/删除图标或 mime 类型定义时,不要忘记更新图标和 mime 缓存。

答案2

感谢@don_crissti 提供其工作原理的详细信息。我采用了另一种方法来部分解决问题。我为text-plain和放置了不同的图标text-x-generictext-x-script包含text-plain所有不带扩展名的文件,例如 .dat、.txt 等;text-x-[generic,script]其他人和脚本的后备位置在哪里。

我同意这是一个临时解决方案,但它仍然解决了当前的问题。 (最好的解决方案是为每个文件制作图标/usr/share/mime/*

添加了一个屏幕截图来显示它的外观text-x-[python,xml,scripts,generic,plain]

添加了屏幕截图

相关内容