Como alterar programaticamente o ícone de um arquivo?

16

Se eu selecionar um ícone no Nautilus e selecionar Propriedades, posso clicar no ícone apresentado lá. Isso me dá uma caixa de diálogo para selecionar uma nova imagem de ícone.

Gostaria de fazer isso por meio de um script de algum tipo, para poder atribuir o mesmo ícone a muitos arquivos de uma só vez. Ou pegue uma lista de ícones e uma lista de arquivos e atribua-os um ao outro.

Existe alguma maneira de conseguir isso? Algo no bash ou no Python seria ótimo, mas eu aceitarei o que posso obter.

Observe:

  • Não estou perguntando como alterar o ícone para um tipo de arquivo.
  • Não estou perguntando como alterar um ícone no iniciador.

insira a descrição da imagem aqui

Kris Harper
fonte

Respostas:

25


Para alterar esses ícones na linha de comando, você pode usar o seguinte comando:

gvfs-set-attribute -t string /path/to/your/file metadata::custom-icon file:///path/to/your/icon.png

Você pode usar este comando em um script bash de acordo com suas necessidades.

Se você executar o comando e o ícone não mudar imediatamente, poderá instalar o pacote xautomation com:

sudo apt-get install xautomation

E, finalmente, use o comando "xte" para "sendkey" no bash como "F5" para atualizar.
Um pequeno exemplo seria:

#!/bin/bash
gvfs-set-attribute -t string /home/hermes/testicon metadata::custom-icon file:///home/hermes/Desktop/applet_blank.png
sleep 3
xte "key F5"  

Espero que seja útil para você.

Roman Raguet
fonte
3

A resposta de Roman parece ideal. Existe outra maneira menos elegante. Não tenho certeza de onde os ícones residem no resto do sistema, mas os ícones que estão na área de trabalho são apenas pequenos arquivos de texto sem formatação em $ HOME / Desktop. Eles geralmente (mas não precisam) têm a extensão do .desktop. Um dos campos desses arquivos é Icon = .... Você pode usar um programa para alterar o valor que esse campo estiver definido para o valor de sua escolha. (Talvez seja necessário fazer uma atualização depois de fazer isso, exatamente como Roman sugere.)

Quando quero usar um ícone para outra coisa ou em outro sistema, às vezes olho nesses arquivos .desktop para descobrir como o ícone em uso está nomeado.

As especificações para esses arquivos estão em: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec

Joe

Joe
fonte