Comment définir une icône pour un type de fichier sur Mac?

42

Comment définir une icône pour certains types de fichiers dans l’ ensemble du système?

Par exemple, j'ai des fichiers texte qui se terminent par l'extension .scala et je souhaite associer une icône pour ces fichiers dans tout le système et pour tout fichier nouvellement créé de cette extension.

Merci.

Chiron
la source
Vous venez de remarquer que vous êtes un MAC ... mais de toute façon, sous Windows, vous modifieriez l'application par défaut associée à ce type de fichier. Le fichier prend alors l'icône de cette application.
MrWhite
12
@ w3d: Il n'est pas sur un MAC, il est sur un Mac.
Wuffers

Réponses:

41

Les icônes des types de fichiers sont gérées par les services de lancement (le service détermine, entre autres, quelle application gère un type de fichier). L'icône du fichier est toujours fournie par l'application qui gère l'ouverture d'un fichier par défaut. Ainsi, par exemple, Aperçu fournit par défaut des icônes PDF et des icônes PNG, mais si vous modifiez l’ouverture de tous les fichiers PNG à l’aide de Pixelmator, ces fichiers obtiendront ensuite une icône de style Pixelmator.

Ce que vous devez faire est d’ ajouter votre définition de type de fichier à l’application qui l’ouvre par défaut ou de créer votre propre application «fictive» pour le type de fichier .


Par exemple, mon système ne sait pas encore .scalaet je veux TextMatele gérer.

Tout d’abord, je montre le contenu du paquetTextMate.app , naviguez Contents/et ouvrez Info.plist, soit avec un éditeur de texte, soit avec Property List Editorles outils de développement d’Apple.

TextMate utilise un format inhabituel Info.plist(généralement binaire ou XML), dont voici un extrait:

CFBundleDocumentTypes = (
    {   CFBundleTypeName = "ADA source";
        CFBundleTypeExtensions = (adb, ads); 
        CFBundleTypeIconFile = ADA; 
    },

La clé parent CFBundleDocumentTypesest ce que nous voulons. Le premier élément enfant de celui-ci, placé entre accolades, contient une définition de type de fichier, ainsi que son nom (pour la colonne de type de fichier dans le Finder), ses extensions et le nom du fichier icône ( ADApour TextMate.app/Contents/Resources/ADA.icns).

Pour prendre en charge .scala, nous devons ajouter un élément frère similaire à celui ci-dessus, sous le même élément parent CFBundleDocumentTypes:

CFBundleDocumentTypes = (
    {   CFBundleTypeName = "ADA source";
        CFBundleTypeExtensions = (adb, ads); 
        CFBundleTypeIconFile = ADA; 
    },
    {   CFBundleTypeName = "Scala source";
        CFBundleTypeExtensions = (scala); 
        CFBundleTypeIconFile = ADA; 
    },

Par souci de simplicité, j'utilise le même fichier d'icônes, mais nous pouvons en créer un nous-mêmes, le copier dans TextMate.app/Contents/Resources/SCALA.icnset le référencer comme SCALAdans Info.plist.

Fermez maintenant TextMate, déplacez l’application TextMate.appdans un autre dossier et ouvrez-la à nouveau. Fermez-le et replacez-le, puis ouvrez-le à nouveau. Ceci est fait afin que Launch Services prenne en compte les modifications que Info.plistnous venons d’ apporter .

Les regards de résultat comme celui - ci (rappelez - vous, nous resservir l'icône TextMate Ada pour .scala):

texte alternatif

Si vous ne souhaitez pas associer une application pour ouvrir des .scalafichiers (vous ne pouvez pas imaginer pourquoi, mais il existe un moyen de le faire): Modifiez les ajouts au fichier comme suit:

    {   CFBundleTypeName = "Scala source";
        CFBundleTypeExtensions = (scala); 
        CFBundleTypeIconFile = ADA; 
        CFBundleTypeRole = "None";
    },

Désormais, l’application déclare le type de fichier, mais indique au système qu’elle ne sait pas le gérer (Apple donne l’exemple du Finder qui déclare les types de police, bien qu’il ne puisse pas les ouvrir lui-même).

* Notez que toute affectation d'application permanente au type de fichier remplace l'icône, probablement du type "document inconnu".


Si vous avez déjà une application associée à .scalaet souhaitez simplement changer l'icône du fichier sans changer l'application associée:

Ouvrez l’application Info.plist, recherchez l’entrée du type de fichier CFBundleDocumentTypeset récupérez le CFBundleTypeIconFile. Modifiez ce fichier .../Contents/Resources/et il devrait apparaître dans le Finder peu de temps après.


Informations sur le bonus:

Comment changer l'icône d'un document ou d'un dossier en un fichier image

Supposons que vous ayez une image pour ~/Desktop/test.pnglaquelle vous souhaitez utiliser une icône (c'est la capture d'écran utilisée ci-dessus pour illustrer le .scalachangement d'icône / TextMate / Ada.

Ouvrir /Applications/Utilities/Terminal.appet entrer:

sips -i ~/Desktop/test.png

Cela changera l' test.pngicône du fichier en son image. Puisque j'apprécie la récursivité, essayons ceci:

Avant, l' pngicône Aperçu simple (l'aperçu de l'image est désactivé):

texte alternatif

Après, le fichier image lui-même est son aperçu:

texte alternatif

Maintenant , nous pouvons ouvrir le fichier est Get Info dialogue, cliquez sur le choix, l' icône du futur document en haut à gauche, Cmd-Cde le copier, ouvrez le fichier de document Obtenir des informations de dialogue, cliquez sur l'icône actuelle indésirable, document en haut à gauche, et Cmd-Vpour coller le icône que nous voulons.


Vous pouvez également ouvrir le fichier image que vous souhaitez utiliser comme icône dans Aperçu, Cmd-Apour tout sélectionner, Cmd-Cpour copier l'image dans le Presse-papiers. Ouvrez ensuite la boîte de dialogue Obtenir des informations du document cible , sélectionnez l'icône à modifier en haut à gauche et Cmd-Vcollez l'image dessus.

Daniel Beck
la source
2
Une chose à vérifier: cela invalide-t-il la signature numérique de l'application? codesign --verify --verbose /Applications/TextMate.appou quelque chose de semblable. Si cette option est invalidée, ne le faites pas pour les applications nécessitant des exceptions dans le pare-feu ou ayant besoin du trousseau. Je ne sais pas quoi d'autre pourrait aller mal en jouant avec la signature. (+1 pour les détails!)
Arjan
1
Modifier BAH, j'ai écrémé la première fois et je n'ai pas vu votre autre méthode pour forcer une mise à jour LS. meh, FWIW: Juste une chose après avoir modifié l’info.plist d’une application (ou d’un bundle / package): vous aurez probablement besoin touchdu niveau racine du bundle pour mettre à jour sa date de modification. Ensuite, dans le Finder, désélectionnez et resélectionnez l'application / le paquet / package et lorsqu'il remarquera que la date de modification est ultérieure à celle des informations mises en cache dans la base de données Launch Services, il le ré-enregistrera, reconnaissant ainsi les modifications. vous avez fait.
NSGod
1
@Arjan Vous avez un point là-bas. Malheureusement, TextMate.app: code object is not signedet je ne veux plus recommencer ça. Je suppose que c'est un vrai problème, je n'y ai pas pensé. Modifier : Après mûre réflexion, les raccourcis clavier personnalisés sont également stockés dans Info.plist. Cela pourrait donc ne pas être un problème, si ce n’est pas le cas. Le seul problème pourrait être l'ajout d'un fichier d'icône supplémentaire dans l'ensemble d'applications.
Daniel Beck
1
J'ai utilisé exactement la même méthode (mais en apportant les modifications dans Info.plist XML de Sublime Text). Par conséquent, l'association de fichier a fonctionné, mais cela n'a pas changé l'icône du fichier associé. Une idée pourquoi cela ne fonctionnerait pas?
gfrigon
2
Un peu tard pour la fête, mais je suis d'accord avec @Arjan. Si vous avez une application signée avec un code, comme par exemple, oh, je ne sais pas, ... Xcode ... elle vous dira en fait que l'application est endommagée et supprimez-la et téléchargez-la à nouveau sur l'App Store. Ce que je n'aime vraiment pas, c'est comment des applications comme Enthought Canopy détournent toutes les icônes d'extension par elles-mêmes. Apple devrait vraiment savoir que, lorsque vous définissez l'éditeur par défaut pour un type de fichier, le système entre et apporte toutes les modifications nécessaires, par exemple l'association d'associations.
AMR
1

Vous devez remplacer le fichier ICNS dans le programme affecté en tant que programme par défaut pour le type de fichier spécifique.

1 - Créez une image pour l'icône souhaitée, puis enregistrez sous un type de fichier png (png prend en charge la transparence).

2 - Convertissez le fichier png en un type de fichier icns (FastIcns est vraiment génial et gratuit).

3 - Cliquez sur CMD ou cliquez avec le bouton droit de la souris sur l’application définie comme application par défaut pour le type de fichier spécifique, puis sélectionnez Afficher le contenu du package.

4 - Recherchez le fichier icns désigné par l'application comme étant l'icône du type de fichier en question. Il figurera probablement dans un dossier appelé Ressources.

5 - Nommez le fichier icns que vous avez créé, exactement le même nom de fichier que celui que vous souhaitez remplacer.

6 - Copiez et collez, ou faites glisser et déposez le nouveau fichier icns que vous avez créé dans le dossier où se trouve celui que vous souhaitez remplacer, puis choisissez remplacer lorsque l'option vous le donnera.

7 - Vous avez terminé! Toutes les icônes de ce type de fichier ont été remplacées par la nouvelle icône souhaitée.

daporterfizzle
la source
À quelle version d'OSX cette réponse se rapporte-t-elle… juste pour l'horodater pour le moment où la méthode change inévitablement.
JoshP
0

Pour ce faire, je cherche toujours un fichier avec cette extension, faites un clic droit »Obtenir des informations ou Command-i, et cela affichera le panneau d’informations. En haut, vous voyez l'icône actuellement utilisée pour l'image. Vous pouvez faire glisser un fichier image sur celui-ci pour le modifier ou, si vous avez copié l'image, vous pouvez cliquer sur l'image que vous souhaitez modifier et effectuer un collage pour le modifier.

Jakehschwartz
la source
Voir aussi l'image sur Comment modifier l'icône d'une application sous Mac OS X? et notez que toute image que vous pouvez ouvrir dans Aperçu peut être utilisée sous forme d’icône, en l’ouvrant dans Aperçu, en la sélectionnant et en la copiant à l’aide de Commande-C. Cela mettra une image sur le presse-papiers qui inclut un format pour utiliser comme icône. Ensuite, sélectionnez l'icône existante et collez le presse-papiers à l'aide de Commande-V.
Arjan
3
Ça ne marche pas. Lorsque je fais glisser un fichier .PNG vers l'image sur l'écran d'informations, l'icône PNG apparaît plutôt que sur l'image du fichier PNG. Et cela change le fichier spécifique et pas tous les fichiers avec la même extension dans tout le système.
Eran Kampf