Основная хитрость заключается в том, чтобы правильно узнать, где находятся реальные значки.
Чтобы определить это, давайте проанализируем значки 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больше не так ), как описано ранее.