Le icone per i tipi di file sono gestite da Launch Services (il servizio che determina, tra le altre cose, quale applicazione gestisce un tipo di file). L'icona del file è sempre fornita dall'applicazione che gestisce l'apertura di un file per impostazione predefinita. In questo modo, ad esempio Anteprima, vengono visualizzate le icone PDF per impostazione predefinita e le icone PNG, ma se si modificano tutti i file PNG per aprirli utilizzando Pixelmator, questi file ottengono successivamente un'icona in stile Pixelmator.
Quello che devi fare è aggiungere la definizione del tipo di file all'applicazione che lo apre per impostazione predefinita o creare la tua applicazione "fittizia" per il tipo di file .
Ad esempio, il mio sistema non lo sa ancora .scalae voglio TextMategestirlo.
In primo luogo, mostro il contenuto del pacchettoTextMate.app , navigo Contents/e apro Info.plist, con un editor di testo, o Property List Editor, parte degli strumenti di sviluppo di Apple.
TextMate utilizza un formato insolito per Info.plist(di solito è binario o XML), un estratto del quale è simile al seguente:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
La chiave principale CFBundleDocumentTypesè ciò che vogliamo. Il primo elemento figlio, racchiuso tra parentesi graffe, contiene una definizione del tipo di file, completa di nome (per la colonna del tipo di file nel Finder), estensioni di file e nome del file icona ( ADAper TextMate.app/Contents/Resources/ADA.icns).
Per supportare .scala, dobbiamo aggiungere un elemento fratello simile a quello sopra, sotto lo stesso elemento genitore CFBundleDocumentTypes:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
},
Per semplicità, sto usando lo stesso file icona, ma possiamo crearne uno noi stessi, copiarlo TextMate.app/Contents/Resources/SCALA.icnse fare riferimento ad esso come SCALAin Info.plist.
Ora chiudi TextMate se è in esecuzione, sposta l'applicazione TextMate.appin un'altra cartella e aprila di nuovo. Chiudilo e spostalo indietro, quindi riaprilo di nuovo. Questo viene fatto in modo che Launch Services rilevi le modifiche che Info.plistabbiamo appena eseguito.
Il risultato è simile al seguente (ricorda, abbiamo riutilizzato l'icona AdM di TextMate per .scala):

Se non vuoi associare un'applicazione ad aprire .scalafile (non riesci a immaginare il perché, ma c'è un modo per farlo): modifica le aggiunte al file nel modo seguente:
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
CFBundleTypeRole = "None";
},
Ora, l'applicazione dichiara il tipo di file, ma dice al sistema che non sa come gestirlo (Apple fornisce l'esempio del Finder che dichiara i tipi di carattere, sebbene non possa aprirli da solo).
* Notare che qualsiasi assegnazione di applicazione permanente al tipo di file sovrascrive l'icona, probabilmente al tipo di "documento sconosciuto".
Se hai già un'applicazione associata .scalae vuoi solo cambiare l'icona del file senza cambiare l'applicazione associata:
Apri l'applicazione Info.plist, cerca la voce del tipo di file CFBundleDocumentTypese ottieni il file CFBundleTypeIconFile. Modifica questo file .../Contents/Resources/e dovrebbe riflettersi nel Finder poco dopo.
Informazioni sul bonus:
Come modificare l'icona di un singolo documento o cartella in un file di immagine
Supponiamo di avere un'immagine ~/Desktop/test.pngche desideri utilizzare un'icona (è lo screenshot usato sopra per illustrare la .scalamodifica dell'icona / TextMate / Ada.
Apri /Applications/Utilities/Terminal.appe inserisci:
sips -i ~/Desktop/test.png
Questo cambierà l' test.pngicona del file nella sua immagine. Dal momento che mi piace la ricorsione, proviamo questo:
Prima, la semplice pngicona Anteprima (l'anteprima dell'immagine è disattivata):

Dopo, il file immagine stesso è la sua anteprima:

Ora possiamo aprire la finestra di dialogo Ottieni informazioni del file , fare clic sull'icona del documento futuro desiderata in alto a sinistra, Cmd-Cper copiarla, aprire la finestra di dialogo Ottieni informazioni del file di documento , fare clic sull'icona del documento corrente indesiderata in alto a sinistra e Cmd-Vincollare il icona che vogliamo.
In alternativa, è possibile aprire il file immagine che si desidera utilizzare come icona in Anteprima, Cmd-Aper selezionare tutto, Cmd-Cper copiare l'immagine negli Appunti. Quindi apri la finestra di dialogo Ottieni informazioni del documento di destinazione , seleziona l'icona da modificare in alto a sinistra e Cmd-Vincollaci sopra l'immagine.