Comment puis-je modifier par programme l'icône d'un fichier?

16

Si je sélectionne une icône dans Nautilus et sélectionne Propriétés, je peux cliquer sur l'icône qui y est présentée. Cela me donne une boîte de dialogue de sélection de fichier pour sélectionner une nouvelle image d'icône.

Je voudrais le faire via un script quelconque afin de pouvoir attribuer la même icône à plusieurs fichiers à la fois. Ou prenez une liste d'icônes et une liste de fichiers et affectez-les les uns aux autres.

Existe-t-il un moyen de réaliser cela? Quelque chose en bash ou en Python serait génial, mais je prendrai ce que je peux obtenir.

Notez s'il vous plaît:

  • Je ne demande pas comment changer l'icône d'un type de fichier.
  • Je ne demande pas comment changer une icône sur le lanceur.

entrez la description de l'image ici

Kris Harper
la source

Réponses:

25


Pour modifier ces icônes à partir de la ligne de commande, vous pouvez utiliser la commande suivante:

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

Vous pouvez utiliser cette commande dans un script bash selon vos besoins.

Si vous exécutez la commande et que l'icône ne change pas immédiatement, vous pouvez installer le package xautomation avec:

sudo apt-get install xautomation

Et enfin, utilisez la commande "xte" pour "sendkey" en bash comme "F5" pour rafraîchir ..
Un petit exemple serait:

#!/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"  

J'espère que cela vous sera utile.

Roman Raguet
la source
3

La réponse de Roman semble idéale. Il existe une autre manière moins élégante. Je ne sais pas où vivent les icônes dans le reste du système, mais les icônes qui se trouvent sur votre bureau ne sont que de petits fichiers texte en clair dans $ HOME / Desktop. Ils ont généralement (mais pas nécessairement) l'extension .desktop. Un des champs de ces fichiers est Icon = .... Vous pouvez utiliser un programme pour modifier ce que ce champ est défini sur la valeur de votre choix. (Vous devrez peut-être faire un rafraîchissement après avoir fait cela, comme Roman le suggère.)

Lorsque je veux utiliser une icône pour autre chose ou sur un autre système, je regarde parfois dans ces fichiers .desktop pour savoir comment s'appelle l'icône utilisée.

Les spécifications de ces fichiers sont disponibles sur: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec

Joe

Joe
la source