74 votes

Comment modifier l'icône d'un fichier ou d'un dossier à l'aide du terminal ?

Comment puis-je modifier ou définir l'icône d'un fichier ou d'un dossier dans le terminal ? Dois-je utiliser un langage de script ?

42voto

Vous devez installer les outils du développeur, et la méthode suivante pourrait fonctionner. Cela prend le graphique dans icon.png et l'applique à file.ext .

# Take an image and make the image its own icon:
sips -i icon.png

# Extract the icon to its own resource file:
/Developer/Tools/DeRez -only icns icon.png > tmpicns.rsrc

# append this resource to the file you want to icon-ize.
/Developer/Tools/Rez -append tmpicns.rsrc -o file.ext

# Use the resource to set the icon.
/Developer/Tools/SetFile -a C file.ext

# clean up.
rm tmpicns.rsrc
# rm icon.png # probably want to keep this for re-use.

39voto

Felix Andersen Points 604

Avec le bénéfice de plusieurs années de recul :

La réponse de user588 y La réponse de koiyu fonctionnent bien, mais ils reposent sur des utilitaires ( Rez , DeRez et SetFile ) que :

  • ne sont pas installés par défaut (ils sont fournis avec Xcode ou les utilitaires de ligne de commande pour les développeurs).
  • sont désormais dépréciés ( Rez y DeRez parce qu'ils sont liés au carbone)

osxiconutils semblent intéressants, mais ne compile plus (à partir de MacOS 10.10.4) .


J'ai donc créé CLI fileicon qui devrait fonctionner sur une machine OSX vierge (pas de prérequis) il s'agit d'un script Bash basé principalement sur xattr , xxd et un script Python intégré qui appelle Cocoa, avec l'aimable autorisation de cette réponse utile .

Il permet définir/supprimer/extraire des icônes personnalisées pour/depuis des fichiers ou des dossiers y compris sur les volumes APFS sous MacOS 10.13 (High Sierra).

Vous pouvez l'installer comme suit :

  • Si vous avez Homebrew installé : brew install fileicon

  • Si vous avez installé Node.js, à partir du registre npm avec
    [sudo] npm install -g fileicon

  • Autrement :

    • Télécharger le CLI comme fileicon (ce lien restera d'actualité).
    • Rendez-le exécutable avec chmod +x fileicon .
      • Déplacez-le ou faites un lien symbolique vers un dossier dans votre dossier $PATH comme /usr/local/bin (nécessite sudo ).

Voici les informations relatives à l'utilisation ; pour des informations complètes, reportez-vous aux manuel :

$ fileicon -h

Set a custom icon for a file or folder:

    fileicon set      <fileOrFolder> <imageFile>

 Remove a custom icon from a file or folder:

    fileicon rm       <fileOrFolder>

 Get a file or folder's custom icon:

    fileicon get [-f] <fileOrFolder> [<iconOutputFile>]

 Test if a file or folder has a custom icon:

    fileicon test     <fileOrFolder>

 -q ...  silence status output

 Standard options: --help, --man, --version, --home

21voto

Tundey Points 2145

I presque a lancé une prime sur ce sujet, car je n'ai pas réussi à changer l'icône d'une dossier en utilisant @ mankoff 's respuesta . Mais j'ai trouvé une solution.


Pour changer l'icône du dossier, il ne faut pas pointer Rez -append tmp.rsrc dans le dossier mais un [Icon\r](https://stackoverflow.com/q/4036104/216129) dans le dossier. Si vous n'avez pas défini d'icône personnalisée pour ce dossier auparavant, le fichier n'existera probablement pas, mais Rez le crée à la volée. La suppression de la Icon\r supprimera l'icône personnalisée, donc pour éviter les accidents, il est bon de la cacher.

Ce sont les modifications apportées à la réponse de Mankoff :

# Append a resource to the folder you want to icon-ize.
Rez -append tmpicns.rsrc -o $'myfolder/Icon\r'

# Use the resource to set the icon.
SetFile -a C myfolder/

# Hide the Icon\r file from Finder.
SetFile -a V $'myfolder/Icon\r'

11voto

kolen Points 121

En plus de Ruby, voici une version Python :

#!/usr/bin/env python
import Cocoa
import sys

Cocoa.NSWorkspace.sharedWorkspace().setIcon_forFile_options_(Cocoa.NSImage.alloc().initWithContentsOfFile_(sys.argv[1].decode('utf-8')), sys.argv[2].decode('utf-8'), 0) or sys.exit("Unable to set file icon")

./set-image.py image.png myfile

Python qui est préinstallé dans Mac OS possède déjà PyObjC, vous n'avez donc pas besoin d'installer de paquet.

7voto

Jeff Bloom Points 225

Vérifiez setfileicon (code source) un utilitaire créé par Damien Bobillot.

Téléchargez le binaire ici : http://maxao.free.fr/telechargements/setfileicon.gz

Après avoir décompressé le fichier, rendez-le exécutable :

chmod +x setfileicon

Vous pouvez ensuite l'utiliser comme suit :

./setfileicon "my-icon.icns" "my-file-or-directory"

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X