Fedora

了解 Gnome 的各種圖示

  • February 23, 2013

問題是關於自定義圖示出現的方式

  1. 桌面外殼
  2. 通知區
  3. 文件關聯
[Desktop Entry]
Version=1.0
Type=Application
Name=Mathematica 9
Comment=Technical Computing System
Exec=/usr/local/Wolfram/Mathematica/9.0/Executables/Mathematica %F
Icon=wolfram-mathematica
MimeType=application/mathematica;application/vnd.wolfram.cdf
Categories=Education

現在,如果我可以製作一個自定義桌面文件,我可以將 png 文件位置放在圖示上……但是上面的桌面文件為什麼指的是一個圖示&那個圖示在哪裡(wolfram-mathematica)?

其次,如何在系統範圍內更改特殊文件類型的圖示,例如將 docx 更改為其他文件 在此處輸入圖像描述

第三和最後如何 gnome 載入托盤圖示以及這些圖示儲存在哪裡例如我想將自動鍵托盤圖示自定義為其他東西我該怎麼做?也看過 /usr/share/pixmaps 但無濟於事

在此處輸入圖像描述

首先,桌面文件又名“啟動器”(應該)符合freedesktop 規範。至於圖示,上面的規範說明:

在文件管理器、菜單等中顯示的圖示。如果名稱是絕對路徑,將使用給定的文件。如果名稱不是絕對路徑,將使用圖示主題規範中描述的算法 來定點陣圖示。

算法是:

在一組目錄中查找圖示和主題。預設情況下,應用程序應查看 $ HOME/.icons (for backwards compatibility), in $ XDG_DATA_DIRS/icons 和 /usr/share/pixmaps (按此順序)。

………………………………………………………………

圖示查找機制有兩個全域設置,基本目錄列表和目前主題的內部名稱。鑑於這些,我們需要指定如何從圖示名稱和標稱大小中查找圖示文件。

查找首先在目前主題中進行,然後在目前主題的每個父主題中遞歸進行,最後在名為“hicolor”的預設主題中進行(實現可能會在“hicolor”之前添加更多預設主題,但“hicolor”必須在最後)。只要在主題中有任何大小的圖示匹配,搜尋就會停止。即使在繼承的主題中可能存在尺寸更接近正確圖示的圖示,我們也不想使用它。當您更改圖示大小(例如放大)時,這樣做可能會在圖示中產生不一致的變化。主題內的查找分三個階段完成。首先掃描所有目錄以查找完全匹配,例如,允許的圖示文件大小與查找的內容匹配的目錄。然後掃描所有目錄以查找與名稱匹配的任何圖示。如果失敗了,我們最終會求助於非主題圖示。如果我們根本找不到任何圖示,則由應用程序來選擇一個好的備份,因為正確的選擇取決於上下文。

如上所述,在大多數現代桌面上,圖示主題位置是$XDG_DATA_DIRS/icons,即/usr/share/icons(全域)和~./local/share/icons(使用者)。


其次,在系統範圍內更改文件類型的圖示涉及更改與該文件 mime 類型對應的 mimetype 圖示,即對於.docx文件,mime 類型為

application/vnd.openxmlformats-officedocument.wordprocessingml.document

Gnome 預設圖示集沒有該特定 mime 類型的圖示,因此它回退到x-office-document(完整路徑為/usr/share/icons/gnome/$SIZE/mimetypes/x-office-document)。更改圖示.docx意味著您要麼必須想出一個名為(各種大小)的新圖示

application-vnd.openxmlformats-officedocument.wordprocessingml.document.png

或替換x-office-document.png預設使用的那個。請注意,後者將更改與x-office-documentmime 類型關聯的所有文件的圖示,而不僅僅是.docx.

不建議更改圖示主題,/usr/share/icons因為您的更改很可能會被未來的更新覆蓋,因此您最好的選擇是放置您最喜歡的圖示主題~./local/share/icons並添加/修改您想要的任何內容。


最後,辨識 Gnome 使用的托盤圖示並非易事,請參閱AskUbuntu。不確定它是否適用於 Gnome 3.6,因為某些 shell 部分仍在進行重大重新架構,並且每個版本都會更改程式碼。

引用自:https://unix.stackexchange.com/questions/62530