O principal truque é descobrir corretamente onde os ícones reais estão localizados.
Para determinar isso, vamos analisar os ícones HTML. A convenção de nomenclatura para os ícones é a mesma que para o tipo MIME, somente /
é substituído por -
e nenhuma letra maiúscula é permitida. Ou seja O tipo MIME, digamos, text/x-changelog
terá o ícone chamado text-x-changelog.svg
(ou png
). O tipo MIME para HTML é text/html
. Então, seu ícone será text-html.*
Se executarmos o comando
find /usr/share/icons/ -type f | grep 'text-html\.'
teremos vários lugares onde esses ícones são colocados:
/usr/share/icons/Humanity/mimes/
/usr/share/icons/gnome/NNxNN/mimetypes/
/usr/share/icons/HighContrast/scalable/mimetypes/
Se visitarmos cada um deles com o Nautilus, veremos que a pasta Humanity/
contém nossos ícones atuais, gnome/
- alguns dos mais antigos. HighContrast/
não nos interessa. Portanto, para alterar algum ícone, devemos substituir os ícones localizados na pasta Humanity/
.
Observe também que os ícones text-html.svg
que são escaláveis e deveriam ter sido colocados na subpasta scalable
(que deveria ser lógica) são colocados nas pastas para tamanhos diferentes, da mesma forma que os arquivos PNG rasterizados.
Após a substituição dos ícones (em todas as subpastas de acordo com seus tamanhos) com os desejados, o cache de ícones deve ser atualizado:
sudo gtk-update-icon-cache /usr/share/icons/Humanity
É isso.
Existe outra maneira de determinar a precedência de esquemas de ícones - para verificar seus arquivos index.theme
. Se olharmos para o interior de /usr/share/icons/Humanity/index.theme
, veremos:
Inherits=gnome,hicolor
Isso significa que os ícones das pastas gnome
e hicolor
terão menos precedência do que os de Humanity
. Isso é explicado aqui .
Estranhamente, o Nautilus não obedece a essas regras de herança. Quando adicionei o novo tipo MIME, tentei colocar seus ícones em /usr/share/icons/gnome/
, /usr/share/icons/hicolor
, ~/.local/share/icons/hicolor
, atualizando o banco de dados de ícones em cada etapa - tudo em vão. Esses ícones foram exibidos corretamente em assogiate
na primeira guia, mas nunca no Nautilus. Mas quando os coloquei na pasta Humanity
e no banco de dados de ícones atualizados, eles apareceram de uma só vez.
N.B. Tudo isso se aplica ao tema de ícones padrão. Se você usar algum tema de ícones personalizado, deverá verificar onde os ícones reais estão localizados e adicionar / alterar os ícones lá. Também nas distribuições mais recentes, essas regras de herança podem mudar. Em seguida, você deve localizar a nova pasta que armazena os ícones reais (se não for Humanity
mais), conforme explicado anteriormente.