web-dev-qa-db-fra.com

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

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

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

Y a-t-il un moyen de le faire? Quelque chose en bash ou Python serait génial, mais je vais prendre ce que je peux avoir.

Notez s'il vous plaît:

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

enter image description here

15
Kris Harper


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.

24
Roman Raguet

La réponse de Roman semble idéale. Il existe un autre moyen moins élégant. Je ne sais pas où se trouvent les icônes dans le reste du système, mais les icônes situées sur votre bureau ne sont que de petits fichiers de texte brut dans $ HOME/Desktop. Ils ont généralement (mais pas obligatoirement) l’extension .desktop. Un des champs de ces fichiers est Icon = .... Vous pouvez utiliser un programme pour changer le contenu de ce champ sur la valeur de votre choix. (Il se peut que vous deviez faire un rafraîchissement après avoir fait cela, comme le suggère Roman.)

Lorsque je veux utiliser une icône pour autre chose ou sur un autre système, je cherche parfois dans ces fichiers .desktop le nom de l'icône utilisée.

Les spécifications de ces fichiers se trouvent à l'adresse suivante: http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec

Joe

2
Joe