5 votes

Encore une autre question sur l'icône de la barre latérale personnalisée (Question sur le fichier System Info.plist)

J'ai parcouru à peu près toutes les recherches Google auxquelles je pouvais penser et j'ai obtenu ce qui me semble être proche d'une réponse sur la façon de définir des icônes personnalisées dans la barre latérale SANS avoir à recourir au piratage mach_inject de Dropbox, mais j'ai quelques questions et je suis bloqué. Ma question principale est la suivante : est-il possible de définir un "type" pour un dossier ? La raison de cette question est que lorsque vous allez dans /System/Library/CoreServices/CoreTypes.bundle/Contents, il y a un fichier Info.plist. Ce fichier indique les associations d'icônes pour les dossiers du système. Avant d'aborder les icônes de la barre latérale, j'aimerais d'abord savoir comment les icônes "normales" sont associées aux dossiers système. Je vais prendre le dossier "Documents" comme exemple. Dans le fichier Info.plist, sous Types de documents, l'élément 155 concerne le dossier Documents et explique que l'icône à associer au dossier Documents doit être DocumentsFolderIcon.icns. Il indique également que le "Type de système d'exploitation du document" est un type à 4 caractères, nommé "docs".

docs type

Peut-on supposer que si je créais un nouveau dossier, je pourrais modifier d'une manière ou d'une autre un attribut étendu ou une sorte de métadonnées qui déclarerait que mon nouveau dossier est de type "docs", ce qui amènerait le Finder à afficher l'icône DocumentsFolderIcon.icns pour ce dossier ? Comment puis-je modifier le "type" de mon dossier de cette manière ?

En outre, dans le même fichier Info.plist, il explique les icônes de la barre latérale. Le dictionnaire de l'élément 10 (l'icône de la barre latérale des documents) explique que le type d'OS du document "sbDc" affichera le dossier SidebarDocumentsFolder.icns. Encore une fois, avec mon dossier nouvellement créé, puis-je modifier un attribut ou des métadonnées pour indiquer que le type de barre latérale doit être "sbDc" au lieu du "sbFd" par défaut (qui correspond à l'icône de dossier générique).

sbDc type

Pouvoir modifier ces attributs sur mon nouveau dossier de cette manière peut me fournir une preuve de concept pour obtenir des icônes de barre latérale personnalisées sans avoir recours à des astuces mach_inject, et me permettre de créer de nouveaux dossiers qui se comportent comme s'ils étaient des dossiers générés par le système avec leurs propres icônes de barre latérale personnalisées et tout le reste.

(Je sais qu'il y a un AUTRE fichier dans /Library/Preferences nommé com.apple.sidebarlists.plist, mais je suis confus, parce que pour la définition du dossier Documents, il indique un nombre décimal pour com.apple.LSSharedFileList.TemplateSystemSelector qui, lorsqu'il est converti en hex, puis en ASCII, donne 'sbDt' et NON 'sbDc' qui est listé dans le fichier Info. plist comme type de barre latérale Documents) --EDIT-- En fait, j'ai modifié cela pour essayer de faire un changement et voir ce qui se passe ; le nombre décimal qui est initialement défini pour Documents par défaut est en fait 1,935,819,875, ce qui se traduit par 'sbDc' en ASCII. (La capture d'écran suivante comporte ma modification).

number > hex > ASCII

Donc, pour résumer, comment puis-je modifier les attributs, les métadonnées, ou quel que soit leur nom, d'un dossier nouvellement créé pour le déclarer de type 'docs' au lieu de type 'fldr, fold, utif, ou aexf' afin qu'au lieu de l'icône de dossier générique, il affiche l'icône de dossier Documents ?

Encore une fois, je sais que cette question a été battue à mort, mais j'ai l'impression d'être si près de pouvoir définir des icônes personnalisées et des icônes de barre latérale sans avoir à recourir à des injections de code...

Merci d'avance !

--Une remarque supplémentaire concernant les icônes personnalisées "normales" (pas les icônes de la barre latérale) : Je sais comment définir une icône personnalisée pour un dossier en utilisant les méthodes conventionnelles, mais lorsque vous sélectionnez une image en utilisant la prévisualisation et ensuite "Obtenir des informations" sur votre dossier et collez votre image dans le coin supérieur gauche pour définir l'icône, la taille sur le disque pour votre dossier change... ce qui est... no comment les icônes des dossiers du système sont définies. Les dossiers système doivent associer leurs icônes à ce type de 4 caractères d'une manière ou d'une autre et j'essaie de faire de même avec mon propre dossier personnalisé

UPDATE

La réponse de Tobias (voir sa réponse ci-dessous) semble être sur la bonne voie, mais je ne parviens pas à trouver quel fichier relie un chemin à une icône. J'ai essayé de rechercher la chaîne '/Sites' dans tous les fichiers de mon ordinateur à l'aide du terminal. Si vous créez un dossier 'Sites' dans votre dossier 'home', il obtiendra une icône spéciale avec un logo Safari, mais si vous créez un dossier 'Sites' sur votre bureau, par exemple, il obtiendra une icône de dossier générique. Il y a donc bien une discrimination de chemin, merci Tobias ! Pour une raison ou une autre, le dossier " Sites " est spécial, un vestige d'anciennes versions d'OS X, je crois, ou destiné aux développeurs web (bien que, curieusement, il n'obtienne pas d'icône spéciale dans la barre latérale, mais une icône de dossier générique dans la barre latérale). Quelqu'un peut-il expliquer comment et pourquoi le dossier Sites est si spécial ? L'accent est mis sur le comment lol.

3voto

Dave Points 9855

Si vous essayez simplement de changer l'icône par défaut en quelque chose d'autre, ici est une réponse que j'ai fournie pour un poste précédent. Je l'ai utilisée pour personnaliser plusieurs icônes dans la barre latérale du Finder.

2 votes

Merci Dave. L'objectif est de pouvoir insérer de nouvelles définitions pour des dossiers totalement nouveaux et personnalisés, c'est-à-dire de conserver tous les paramètres par défaut, puis d'ajouter de nouvelles icônes pour mes propres dossiers personnalisés. J'essaie de comprendre exactement comment ces "Document OS Types" fonctionnent avec ces chaînes de 4 caractères. Je pense qu'il doit y avoir une sorte de métadonnées pour chaque dossier -actuel- qui peut être modifié. Juste à titre de test, j'aimerais créer un nouveau dossier, définir son 'type' sur 'docs' et voir que son icône affiche la même que celle du dossier Documents.

2voto

g24l Points 889

Vous supposez qu'il doit y avoir une propriété sur le fichier/dossier pour le traitement spécial de l'icône.

Utilisation du terminal et ls -l@e montre toutes les clés d'attributs étendus et la liste de contrôle d'accès (ACL) associée au fichier/dossier. La seule particularité des dossiers spéciaux est que l'ACL indique 0: group:everyone deny delete . Une copie avec cp -a qui conserve tout, y compris les clés d'attributs étendus et la liste de contrôle d'accès, ne conserve pas l'icône spéciale.

Il n'y a donc pas de propriété sur le fichier/dossier.

Au lieu de cela, le Finder traite ces dossiers différemment, de manière autonome.

Il le fait simplement par la discrimination des chemins. Utilisez sudo mv pour le vérifier.


Notes supplémentaires

  • La localisation du nom est effectuée par un .localized dans le dossier.
  • Les icônes personnalisées donnent lieu à un attribut

    com.apple.FinderInfo      32

    dans le dossier et le fichier spécial

    -rw-r--r--@  1 <user> <group> 0 <dd> <mmm> <yyyy> Icon?
        com.apple.FinderInfo         32 
        com.apple.ResourceFork   202364 

    à l'intérieur du dossier.


Prochaine étape : Recherchez un élément qui relie les chemins à leur type d'OS de document. Avec un peu de chance, il s'agit d'un .plist ou quelque chose comme ça.

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