Wie stelle ich ein Symbol für einen Dateityp auf einem Mac ein?

42

Wie kann ich ein Symbol für einige Dateitypen für das gesamte System festlegen ?

Zum Beispiel habe ich Textdateien, die mit der Erweiterung .scala enden, und ich möchte ein Symbol für diese Dateien im gesamten System und für jede neu erstellte Datei mit dieser Erweiterung zuordnen.

Vielen Dank.

Chiron
quelle
Ich habe gerade bemerkt, dass Sie ein MAC sind ... aber unter Windows würden Sie die Standardanwendung ändern, die diesem Dateityp zugeordnet ist. Die Datei nimmt dann das Symbol dieser Anwendung an.
MrWhite
12
@ w3d: Er ist nicht auf einem MAC, er ist auf einem Mac.
Wuffers

Antworten:

41

Symbole für Dateitypen werden von Launch Services verwaltet (der Dienst bestimmt unter anderem, welche Anwendung einen Dateityp verarbeitet). Das Dateisymbol wird immer von der Anwendung bereitgestellt, die standardmäßig eine Datei öffnet. Auf diese Weise werden z. B. in der Vorschau standardmäßig PDF-Symbole und PNG-Symbole angezeigt. Wenn Sie jedoch alle PNG-Dateien so ändern, dass sie stattdessen mit Pixelmator geöffnet werden, erhalten diese Dateien anschließend ein Symbol im Pixelmator-Stil.

Sie müssen der Anwendung, die sie standardmäßig öffnet, Ihre Dateitypdefinition hinzufügen oder eine eigene "Dummy" -Anwendung für den Dateityp erstellen .


Zum Beispiel weiß mein System noch nichts darüber .scalaund ich möchte TextMatedamit umgehen.

Zuerst zeige ich den Paketinhalt von TextMate.app, navigiere zu Contents/und öffne ihn Info.plistentweder mit einem Texteditor oder einem Property List EditorTeil der Entwickler-Tools von Apple.

TextMate verwendet ein ungewöhnliches Format für Info.plist(normalerweise binär oder XML). Ein Auszug davon sieht folgendermaßen aus:

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

Der Elternschlüssel CFBundleDocumentTypesist das, was wir wollen. Das erste untergeordnete Element in geschweiften Klammern enthält eine Dateitypdefinition mit dem Namen (für die Dateitypspalte im Finder), den Dateierweiterungen und dem Namen der Symboldatei ( ADAfür TextMate.app/Contents/Resources/ADA.icns).

Zur Unterstützung .scalamüssen wir unter demselben übergeordneten Element ein Geschwisterelement hinzufügen, das dem obigen Element ähnelt CFBundleDocumentTypes:

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

Der Einfachheit halber verwende ich dieselbe Symboldatei, aber wir können eine selbst erstellen, kopieren TextMate.app/Contents/Resources/SCALA.icnsund darauf verweisen wie SCALAin Info.plist.

Schließen Sie jetzt TextMate, falls es ausgeführt wird, verschieben Sie die Anwendung TextMate.appin einen anderen Ordner und öffnen Sie sie erneut. Schließen Sie es, und verschieben Sie es zurück, und öffnen Sie es dann erneut. Dies geschieht, damit Launch Services die Änderungen übernimmt, die Info.plistwir gerade durchgeführt haben.

Das Ergebnis sieht folgendermaßen aus (denken Sie daran, wir haben das TextMate Ada-Symbol für wiederverwendet .scala):

Alt-Text

Wenn Sie eine Anwendung nicht mit geöffneten .scalaDateien verknüpfen möchten (ich kann mir nicht vorstellen, warum, aber es gibt eine Möglichkeit, dies zu tun): Ändern Sie die Ergänzungen der Datei wie folgt:

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

Die Anwendung deklariert nun den Dateityp, teilt dem System jedoch mit, dass sie nicht weiß, wie sie damit umzugehen ist.

* Beachten Sie, dass eine permanente Zuweisung der Anwendung zum Dateityp das Symbol überschreibt, wahrscheinlich zur Art "unbekanntes Dokument".


Wenn Sie bereits eine Anwendung zugeordnet .scalahaben und nur das Dateisymbol ändern möchten, ohne die zugeordnete Anwendung zu ändern:

Öffnen Sie die Anwendung Info.plist, suchen Sie nach dem Dateitypeintrag in CFBundleDocumentTypesund rufen Sie den auf CFBundleTypeIconFile. Ändern Sie diese Datei in .../Contents/Resources/und sie sollte kurz danach im Finder angezeigt werden.


Bonus Informationen:

So ändern Sie das Symbol eines einzelnen Dokuments oder Ordners in eine Bilddatei

Angenommen, Sie haben ein Bild, für ~/Desktop/test.pngdas Sie ein Symbol verwenden möchten (der Screenshot oben zeigt die .scalaÄnderung des Symbols / TextMate / Ada.

Öffnen /Applications/Utilities/Terminal.appund eingeben:

sips -i ~/Desktop/test.png

Dadurch wird das test.pngDateisymbol in das entsprechende Bild geändert . Da ich gerne rekursiv bin, versuchen wir Folgendes:

Vorher das einfache Vorschausymbol png(Bildvorschau ist deaktiviert):

Alt-Text

Danach ist die Bilddatei selbst die Vorschau:

Alt-Text

Jetzt können wir die Datei öffnen , ist Get Info - Dialog, klicken Sie auf das gewünschte, Dokumentsymbol Zukunft auf dem oben links, Cmd-Cum es zu kopieren, öffnen für das Dokument Datei Get Info - Dialog, klicken Sie auf das unerwünschte, aktuelle Dokument - Symbol oben links, und Cmd-Vdie Paste Ikone, die wir wollen.


Alternativ können Sie die Bilddatei öffnen, die Sie als Symbol in der Vorschau verwenden möchten, Cmd-Aum alle auszuwählen und Cmd-Cdas Bild in die Zwischenablage zu kopieren. Öffnen Sie dann das Dialogfeld " Informationen " des Zieldokuments , wählen Sie das zu ändernde Symbol oben links aus und Cmd-Vfügen Sie das Bild darüber ein.

Daniel Beck
quelle
2
Eine zu überprüfende Sache: Macht dies die digitale Signatur der Anwendung ungültig? codesign --verify --verbose /Applications/TextMate.appoder so ähnlich. Wenn dies ungültig ist, tun Sie dies nicht für Anwendungen, die Ausnahmen in der Firewall oder den Schlüsselbund benötigen. Ich bin mir nicht sicher, was sonst noch schlimm werden könnte, wenn ich an der Signatur herumspiele. (+1 für Details!)
Arjan
1
Redigieren Sie BAH, ich überflog das erste Mal und sah nicht Ihre alternative Methode für das Erzwingen eines LS-Updates. meh, FWIW: Nur eines nach dem Ändern der Info.plist einer Anwendung (oder eines Bundles / Pakets): Sie müssen wahrscheinlich auf touchder Root-Ebene des Bundles sein Änderungsdatum aktualisieren. Deaktivieren Sie dann im Finder die Anwendung / das Paket / das Paket und wählen Sie es erneut aus. Wenn Sie feststellen, dass das Änderungsdatum nach dem Datum der zwischengespeicherten Informationen in der Launch Services-Datenbank liegt, wird es erneut registriert, um Änderungen zu erkennen du hast gemacht.
NSGod
1
@Arjan Da hast du einen Punkt. Leider, TextMate.app: code object is not signedund ich möchte das nicht noch einmal durchgehen. Ich vermute, es ist ein echtes Problem, ich habe nicht daran gedacht. Bearbeiten : Zum zweiten werden benutzerdefinierte Tastaturkürzel auch in gespeichert Info.plist. Das könnte also eigentlich kein Problem sein, wenn dies nicht der Fall ist. Das einzige Problem ist möglicherweise das Hinzufügen einer zusätzlichen Symboldatei im App-Bundle.
Daniel Beck
1
Ich habe genau die gleiche Methode angewendet (obwohl ich die Änderungen in der xml Info.plist von Sublime Text vorgenommen habe). Infolgedessen funktionierte die Dateizuordnung, das Symbol für die zugeordnete Datei wurde jedoch nicht geändert. Irgendeine Idee, warum das nicht funktionieren würde?
Gfrigon
2
Ein bisschen zu spät zur Party, aber ich muss @Arjan zustimmen. Wenn Sie eine App haben, die mit einem Code signiert ist, wie z. B. "Oh, ich weiß nicht", "Xcode", wird Ihnen in der Tat mitgeteilt, dass die App beschädigt ist. Löschen Sie sie und laden Sie sie erneut aus dem App Store herunter. Was ich wirklich nicht mag, ist, wie Apps wie Enthought Canopy alle Erweiterungssymbole für sich selbst hijacken. Apple sollte es wirklich wissen, wenn Sie den Standardeditor für einen Dateityp festlegen, den das System verwendet und alle erforderlichen Änderungen an Dingen wie der App-Zuordnung vornimmt.
AMR,
1

Sie müssen die ICNS-Datei innerhalb des Programms ersetzen, das als Standardprogramm für den jeweiligen Dateityp zugewiesen ist.

1 - Erstellen Sie ein Bild für das gewünschte Symbol und speichern Sie es als PNG-Dateityp (PNG unterstützt Transparenz).

2 - Konvertieren Sie die png-Datei in einen icns-Dateityp (FastIcns ist ziemlich gut und kostenlos).

3 - Klicken Sie auf CMD oder klicken Sie mit der rechten Maustaste auf die Anwendung, die als Standardanwendung für den jeweiligen Dateityp festgelegt ist, und wählen Sie dann Paketinhalt anzeigen aus.

4 - Suchen Sie nach der ICNS-Datei, die von der Anwendung als Symbol für den jeweiligen Dateityp festgelegt wurde. Sie befindet sich wahrscheinlich in einem Ordner namens Resources.

5 - Benennen Sie die von Ihnen erstellte icns-Datei genau so, wie Sie sie ersetzen möchten.

6 - Kopieren Sie die neu erstellte icns-Datei, fügen Sie sie ein, oder ziehen Sie sie in den Ordner, in dem sich die zu ersetzende befindet, und wählen Sie Ersetzen, wenn Sie die entsprechende Option haben.

7 - Fertig! Alle Symbole für diesen Dateityp wurden durch das neue gewünschte Symbol ersetzt.

daporterfizzle
quelle
Auf welche OSX-Version bezieht sich diese Antwort? Nur um sie mit einem Zeitstempel zu versehen, wenn sich die Methode zwangsläufig ändert.
JoshP
0

Ich gehe dabei immer so vor, dass ich eine Datei mit dieser Erweiterung finde, mit der rechten Maustaste auf »Get Info oder Command-i klicke und das Infofenster aufruft. Oben sehen Sie das Symbol, das aktuell für das Bild verwendet wird. Sie können eine Bilddatei auf diese ziehen, um sie zu ändern. Wenn Sie das Bild kopiert haben, können Sie auf das zu ändernde Bild klicken und es durch Einfügen ändern.

jakehschwartz
quelle
Siehe auch das Bild unter Wie kann ich ein Anwendungssymbol in Mac OS X ändern? und beachten Sie, dass jedes Bild, das Sie in der Vorschau öffnen können, als Symbol verwendet werden kann, indem Sie es in der Vorschau öffnen, auswählen und mit Command-C kopieren. Dadurch wird ein Bild in die Zwischenablage verschoben, das auch ein Format zur Verwendung als Symbol enthält. Wählen Sie dann das vorhandene Symbol aus und fügen Sie die Zwischenablage mit Command-V ein.
Arjan
3
Das geht nicht. Wenn ich eine PNG-Datei auf das Bild im Infobildschirm ziehe, wird das PNG-Symbol und nicht das Bild im PNG angezeigt. Und es ändert die spezifische Datei und nicht alle Dateien mit der gleichen Erweiterung im gesamten System.
Eran Kampf