引言html
也许小伙伴们对 Linux 已经有必定程度的了解,或者已是一名可以在工做和生活中活用它的 Linux 用户了。随着桌面环境的不断发展,Linux 系统已经再也不仅仅是一个面向极客和开发者的操做系统了,在 PC 上,上手 Linux 桌面已经能够变得像上手Windows 桌面同样简单。编程
本篇文章是一篇纯黑的技术软文,讲的是咱们平时通常不会在乎的东西,并且不会涉及具体编程方面的知识,因此小伙伴们不用担忧文章过于晦涩难懂,尽情的一边喝茶一边涨知识吧!app
Windows上的文件类型与默认图标ui
在Windows上,文件类型基于惟一后缀名进行区分,好比——文本类型的后缀名是”.txt”,而Win32应用程序的后缀名是“.exe”。在win10系统中,这些后缀名默认被隐藏,在文件管理器的选项中更改设置为显示,就可以看到每一个文件的后缀名了。操作系统
对于每一种文件类型,Windows上都有一个默认图标(通常exe的图标不是默认的,而是应用本身定制的),它的默认图标能够由默认打开它的应用决定,好比——使用winrar做为默认应用打开”.zip”压缩文件,那么全部的”.zip”类型文件默认图标都会变成winrar的图标;而使用2345好压做为默认打开应用,默认图标又会改变。3d
Linux与Windows并不彻底相同code
在Linux系统上,有一些文件没有后缀名,好比Linux上的文本文件,即便不加txt后缀,同样的可以做为文本文件存在并被正确地显示和打开。xml
咱们右键文本文件图标,打开属性窗口,能够看到“类型”: htm
咱们能够推测:默认图标的显示是与这个类型属性相关的。对象
让咱们作一个实验
为了验证这个结论,咱们须要作一个小实验。
实验系统:Ubuntu Kylin 18.10
实验对象:doc、docx类型文件
实验方法:安装/卸载wps
也许你们没有注意过,在安装或者卸载了系统上的wps之后,doc和docx等类型文件的默认图标也改变了(若是没有,刷新或者重启一下)。
通常从优麒麟官网上下载的加强版自带了wps,咱们打开一个目录,建立一个doc和docx文档:
打开属性窗口:
能够看到它们的文件类型,那么接下来咱们打开终端(Ctrl+Alt+T),输入:
sudo apt remove wps-office
卸载wps,接下来回到刚才建立的doc和docx所在的目录,刷新一下:
这个时候的默认图标类型已经变了,接着再打开属性:
一样的文件,文件类型改变的同时图标也跟着改变,因此,以前所提出的推论是对的。
那么,咱们在安装/卸载wps的时候,它究竟作了什么?
MIME-Info database
咱们能够看到,在卸载wps的时候,出现了一些mime相关的配置,事实上,Linux上的文件类型标准就是这个MIME-Info database,全部文件类型相关的配置,包括默认图标,都是在这个database中定义的。
你们若是有兴趣,能够参考:https://specifications.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-0.18.html
‘/usr/share/mime/packages’目录下存放着相关配置文件,其中freedesktop.org.xml 是 Linux 默认的文件类型基准。在这里,咱们先找到 wps-office-wps.xml,并打开:
其中,comment、mime-type就是属性窗口中的文件类型;
alias type,顾名思义,是mime-type的别名,因此这些文件类型就被wps-office.doc覆盖了;
generic-icon name,即文件类型的默认图标名;
glob partten,若是文件名中有匹配,则认为是该类型。
在/usr/share/icons目录下存放着默认图标:
Linux的判断文件类型的最优先基准每每是经过文件名中的字段,若是字段和MIME-database匹配,则认为是该文件类型。然而,并不是全部文件类型都规定了匹配字段,它们依旧可以肯定类型,可是若是重命名后包含了MIME-database的匹配字段,则会优先使用对应类型覆盖原有的类型。
实际上,在以前举出的本文件建立的例子中,不须要后缀名的缘由是文本类型的文件在建立的时候已经被赋予了MIME type,只要文件名不与其它MIME type的基准冲突,这个文本文件就能正常的显示和打开。
DIY一个文件类型的图标
小伙伴们也许如今还有点一头雾水,不要紧,接下来的干货才是重头戏;前面的看不懂?不要紧,本身动手作一次,立刻就理解了。
能够看到,命名为.so的文件的默认图标已经被小编改为了本身的图案,那么到底是怎么作到的呢?接下来咱们一步一步的完成。
一、准备图标
首先,咱们须要准备本身的文件类型图片,通常使用png格式便可,文件图标能够在网上下载本身喜欢的,也可使用GIMP本身绘制而后导出,小编这里为了方便,就本身简单的画了一下。GIMP能够在开始菜单中搜索gimp获得:
关于GIMP的使用,小编也是小白因此就不罗嗦了,你们有兴趣的话自行百度一下吧。
咱们打开/usr/share/icons/ukui-icon-theme目录:
咱们把准备好的图标放进对应尺寸文件夹的mimetypes目录下,好比48x48的png放到/usr/share/icons/ukui-icon-theme/48x48/mimetypes目录下。
因为在/usr/share目录下操做须要管理员权限,因此建议以管理员身分运行文件管理器,优麒麟18.10上,在终端输入:
sudo peony
就能够以管理员身分运行文件管理器,固然小伙伴们也可使用sudo cp在终端操做。
还有,这里必定要注意,咱们不一样尺寸目录下的图标文件名必须同样,否则等会儿图片会找不全。
二、编写本身的配置文件
就像wps作的那样,咱们也须要本身写一个.xml文件来覆盖原有的文件类型,这一样须要管理员权限。
咱们在/usr/share/mime/packages目录下建立一个文本文件,命名为XXX.xml(这里小编的是sharedlib.xml),输入如下内容。
<?xml version='1.0' encoding='utf-8'?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="application/my-shared.lib"> <comment>kylin shared lib</comment> <alias type="application/x-sharedlib"/> <generic-icon name="test2"/> <glob pattern="*.so" weight="60"/> </mime-type> </mime-info>
最关键的是alias type、generic-icon name和glob pattern三项。保存退出。
三、更新
如今咱们的.so文件尚未变,由于咱们还须要手动更新它。
依次执行:
sudo gtk-update-icon-cache /usr/share/icons/ukui-icon-theme/ sudo update-mime-database -V /usr/share/mime
第一条命令将咱们的自定图片更新到cache中,使得文件管理器可以经过cache找到咱们的icon;
第二条命令将咱们对配置的更改更新至MIME-database中,这样咱们的自定义配置就生效了。
咱们刷新一下在看看,.so文件是否是变了?打开.so文件的属性,发现它的内容和mime-type也已经变成了咱们本身写的类型。
也许有小伙伴们会问,为何只有.so文件变了,.so.1.2.3之类的文件没有变呢?这就是glob参数的做用了,你们有兴趣能够研究一下freedesktop.org.xml文件,里面有对于application/x-sharedlib原来glob的标注,不光是.so,也可以识别相似.so.1.2.3的类型。
不知到你们是否有所收获呢?本篇文章虽然没有涉及代码编程,可是不一样的人看,必定会有不一样的体会和收获吧,在行文中小编凸显了一些细节,也略写了一些细节,但愿你们看完这篇软文之后可以有所精进,让咱们在Linux的道路上共同进步吧。