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?
script
icon
command-line
ocodo
la source
la source
Réponses:
Vous aurez besoin des outils de développement installés, puis ce qui suit pourrait fonctionner. Cela prend le graphique
icon.png
et l'applique àfile.ext
.la source
Rez -append
travailler avec des.avi
fichiers.### Rez - Fatal error trying to open the resource file "Video.avi" for writing.
`des idées?$PATH
(les bouts dans/usr/bin
qui savent où trouver les outils réels), et non/Developer/Tools
plus, vous devriez donc les invoquer juste par leurs noms de fichiers; c'est-à-dire, dans le cas présent, comme justeRez
etDeRez
.Avec le bénéfice de plusieurs années de recul:
La réponse de user588 et réponse koiyu travail bien, mais ils comptent sur les services publics (
Rez
,DeRez
etSetFile
) que:Rez
etDeRez
, parce qu'ils sont liés au carbone)osxiconutils semble intéressant, mais ne compilera plus (à partir de OSX 10.10.4) .
J'ai donc créé CLI
fileicon
, qui devrait fonctionner sur une machine OSX vierge (pas de prérequis) ; c'est un script Bash basé principalement surxattr
,xxd
et un script Python incorporé qui appelle Cocoa, grâce à cette réponse utile .Il permet de définir / supprimer / extraire des icônes personnalisées pour / à partir de fichiers ou de dossiers , y compris sur des volumes APFS sous macOS 10.13 (High Sierra).
Vous pouvez l'installer comme suit:
[sudo] npm install -g fileicon
fileicon
(ce lien restera à jour).chmod +x fileicon
.$PATH
, tel que/usr/local/bin
(requissudo
).Voici les informations d'utilisation; pour des informations complètes, reportez-vous au manuel :
la source
fileicon --man
).curl -L http://git.io/n-install | bash
.fileicon
, qui fonctionne toujours (et, en fait, a été créée, carosxiconutils
ne fonctionne plus) - j'ai mis à jour la réponse pour la rendre plus claire. .Je presque commencé une prime sur ce point , parce que je ne l' ai pas réussi à changer l'icône d'un dossier en utilisant @ Mankoff de réponse . Mais j'ai trouvé une solution.
Pour changer l'icône du dossier, vous ne pointez pas
Rez -append tmp.rsrc
sur le dossier mais sur unIcon\r
fichier spécial à l'intérieur du dossier. Si vous n'avez jamais défini d'icône personnalisée dans le dossier, le fichier n'existera probablement pas, maisRez
il le crée à la volée. La suppression duIcon\r
fichier supprime l’icône personnalisée. Il est donc préférable d’être masqué pour éviter les accidents.Voici les modifications apportées à la réponse de mankoff:
la source
En plus de Ruby, voici une version Python:
./set-image.py image.png myfile
PyObjC est déjà préinstallé dans Python pré-installé sous Mac OS, vous n’aurez donc pas à installer de paquet.
la source
Check out
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:
Ensuite, vous pouvez l'utiliser comme suit:
la source
J'ai un projet github dans lequel je crée des "droplets" AppleScript à partir de scripts [shell / bash, python, perl, ruby, etc.] qui prennent les chemins de fichiers comme arguments. J'ai écrit cette fonction bash pour changer l'icône d'un dossier (car les ensembles AppleScript sont des dossiers avec une extension .app).
Une fois défini, vous appelez la fonction avec 2 arguments:
ou
Comme vous pouvez le voir, le deuxième argument peut être une image sur votre système ou une URL.
Remarque: cette
$'/Icon\r'
chose folle à la recherche que je fais est parce que le nom du fichier Icon se termine par un retour chariot littéral\r
. Voyez vous-même avec:la source
En supposant que nous ayons déjà icns-file. Créez un fichier de ressources temporaire pointant vers icns-file:
Ajoutez le fichier de ressources en tant que valeur de l'attribut étendu "com.apple.ResourceFork" à un fichier:
Affiche l'icône du fichier:
Ajoutez le fichier de ressources en tant que valeur de l'attribut étendu "com.apple.ResourceFork" à un fichier d'icône magique dans le dossier actuel:
Afficher l'icône du dossier actuel:
Masquer le fichier d'icône magique dans le dossier actuel (appuyez sur ⇧⌘. Pour afficher / masquer les fichiers cachés dans le Finder):
Détails supplémentaires
Les données d'icône sont stockées en tant que valeur de l'attribut étendu "com.apple.ResourceFork" (la commande du terminal "xattr -p com.apple.ResourceFork FileName.ext" imprime la valeur). Pour un dossier, il y a un fichier magique (vide et caché)
Icon$'\r'
dans le dossier. Pour extraire les données d'icône de l'attribut étendu "com.apple.ResourceFork" dans un fichier de ressources en texte brut (à partir duquel nous connaissons le bon identificateur de type icns "-16455"):Sous macOS 10.13, la commande High Sierra
$ sips -i ImageFile.icns/png/jpg
génère l'erreur "--addIcon n'est plus pris en charge". Basculez "-i" signifie "--addIcon" en tant qu'attribut étendu "com.apple.ResourceFork" sur ce fichier lui-même en utilisant le contenu de ce fichier image.la source
Une autre option consiste à utiliser MacRuby:
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
Vous pouvez télécharger un programme d'installation pour MacRuby à l' adresse http://macruby.org .
la source
Curieusement, la meilleure solution semble ne pas utiliser les outils propres à Apple, mais le code Python, car il présente divers avantages, sans être limité par:
(cela fonctionne jusqu'à 1024x1024)
(essayé avec ICNS et PNG)
(définissez-le comme une fonction)
Mise à jour
Maintenant (sur macOS Sierra) La réponse de @ koiyu semble fonctionner, vous pouvez donc utiliser cette double couche pour copier l'icône d'un dossier source vers votre dossier de destination:
la source
Dans la version récente de macOS (10.14),
sips -i icon.png
une--addIcon is no longer supported
erreur se produira .Les outils de développement doivent également être installés. Ceci utilise le graphique dans
Icon.png
et l’applique àfile.ext
, tout comme la réponse de user588 :la source
Tout comme la solution Python utilisant PyObjC, il s'avère que cela peut être fait uniquement avec AppleScript (qui n'est pas obsolète dans Catalina 10.15, contrairement à Python et à d'autres langages de script).
J'ai trouvé un exemple de comment faire cela sur GitHub ici:
AppleScript n'est pas facile à lire, mais il est apparemment possible d'accéder au code Objective-C via le framework AppKit.
la source