Основная хитрость заключается в том, чтобы правильно узнать, где находятся реальные значки.
Чтобы определить это, давайте проанализируем значки HTML. Соглашение об именах для значков такое же, как и для MIME-типа, /
заменяется только на -
заглавные буквы и не допускается. Т.е. MIME-тип, скажем, text/x-changelog
будет иметь иконку с именем text-x-changelog.svg
(или png
). MIME-тип для HTML есть text/html
. Таким образом, его значок будет text-html.*
Если мы запустим команду
find /usr/share/icons/ -type f | grep 'text-html\.'
мы получим несколько мест, где расположены эти иконки:
/usr/share/icons/Humanity/mimes/
/usr/share/icons/gnome/NNxNN/mimetypes/
/usr/share/icons/HighContrast/scalable/mimetypes/
Если мы посетим каждый из них с помощью Nautilus, то увидим, что в этой Humanity/
папке находятся наши текущие значки, gnome/
некоторые старые. HighContrast/
нас не интересует. Таким образом, чтобы изменить какой-либо значок, мы должны заменить иконки, расположенные в Humanity/
папке.
Также обратите внимание, что text-html.svg
значки, которые являются масштабируемыми и должны быть помещены в scalable
подпапку (что должно быть логичным), вместо этого помещаются в папки для разных размеров, так же, как растровые файлы PNG.
После замены значков (во всех подпапках в соответствии с их размерами) на нужные необходимо обновить кеш значков:
sudo gtk-update-icon-cache /usr/share/icons/Humanity
Вот и все.
Есть еще один способ определить приоритетность схем значков - проверить их index.theme
файлы. Если мы посмотрим внутрь /usr/share/icons/Humanity/index.theme
, мы увидим:
Inherits=gnome,hicolor
Это означает , что иконки из gnome
и hicolor
папки будут иметь меньше приоритет , чем те , с Humanity
. Это объясняется здесь .
Как ни странно, Наутилус не подчиняется этим правилам наследования. Когда я добавил новый MIME-тип, я попытался размещая свои иконки в /usr/share/icons/gnome/
, /usr/share/icons/hicolor
, ~/.local/share/icons/hicolor
, базы данных значок обновления на каждом шагу - все напрасно. Эти значки правильно отображались assogiate
на первой вкладке, но никогда на Наутилусе. Но когда я поместил их в Humanity
папку и обновил базу значков, они появились сразу.
NB Все это относится к теме значков по умолчанию. Если вы используете какую-то собственную тему значков, вы должны проверить, где находятся настоящие значки, и вместо этого добавить / изменить значки. Также в более новых дистрибутивах эти правила наследования могут измениться. Затем вы должны найти новую папку, в которой хранятся реальные значки (если это Humanity
больше не так ), как описано ранее.