Główną sztuczką jest prawidłowe ustalenie, gdzie znajdują się rzeczywiste ikony.
Aby to ustalić, przeanalizujmy ikony HTML. Konwencja nazewnictwa dla ikon jest taka sama jak dla typu MIME, tylko /
jest zastąpiona -
i nie są dozwolone duże litery. Tzn. Typ MIME, powiedzmy, text/x-changelog
będzie miał ikonę o nazwie text-x-changelog.svg
(lub png
). Typ MIME dla HTML to text/html
. Jego ikoną będzie więc text-html.*
Jeśli uruchomimy polecenie
find /usr/share/icons/ -type f | grep 'text-html\.'
otrzymamy kilka miejsc, w których umieszczone są te ikony:
/usr/share/icons/Humanity/mimes/
/usr/share/icons/gnome/NNxNN/mimetypes/
/usr/share/icons/HighContrast/scalable/mimetypes/
Jeśli odwiedzimy każdą z nich za pomocą Nautilusa, zobaczymy, że Humanity/
folder ten zawiera nasze aktualne ikony gnome/
- niektóre starsze. HighContrast/
nas nie interesuje. Aby zmienić jakąś ikonę, powinniśmy zastąpić ikony znajdujące się w Humanity/
folderze.
Zauważ również, że text-html.svg
ikony, które są skalowalne i powinny były zostać umieszczone w scalable
podfolderze (co powinno być logiczne), są umieszczane w folderach dla różnych rozmiarów, w taki sam sposób, jak pliki rastrowe PNG.
Po zamianie ikon (we wszystkich podfolderach zgodnie z ich rozmiarami) na żądane ikony należy zaktualizować pamięć podręczną:
sudo gtk-update-icon-cache /usr/share/icons/Humanity
Otóż to.
Istnieje inny sposób ustalenia pierwszeństwa schematów ikon - sprawdzenie ich index.theme
plików. Jeśli zajrzymy do środka /usr/share/icons/Humanity/index.theme
, zobaczymy:
Inherits=gnome,hicolor
Oznacza to, że ikony gnome
i hicolor
foldery będą miały mniejszy priorytet niż te z Humanity
. Wyjaśniono to tutaj .
O dziwo, Nautilus nie przestrzega tych zasad dziedziczenia. Kiedy dodany nowy typ MIME, próbowałem umieszczenie jego ikony w /usr/share/icons/gnome/
, /usr/share/icons/hicolor
, ~/.local/share/icons/hicolor
, uaktualnianie bazy danych ikonę na każdym kroku - wszystko na próżno. Ikony te były poprawnie wyświetlane w assogiate
pierwszej zakładce, ale nigdy w Nautilusie. Ale kiedy umieściłem je w Humanity
folderze i zaktualizowałem bazę danych ikon, pojawiły się od razu.
Uwaga: wszystko to dotyczy domyślnego motywu ikony. Jeśli używasz niestandardowego motywu ikony, sprawdź, gdzie znajdują się rzeczywiste ikony, i dodaj / zmień tam ikony. Również w nowszych dystrybucjach zasady dziedziczenia mogą ulec zmianie. Następnie należy zlokalizować nowy folder, w którym przechowywane są rzeczywiste ikony (jeśli Humanity
już nie są ), jak wyjaśniono wcześniej.