引言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的道路上共同進步吧。