Jak ustawić ikonę typu pliku na komputerze Mac?


42

Jak ustawić ikonę dla niektórych typów plików, pomyślał cały system?

Na przykład mam pliki tekstowe, które kończą się rozszerzeniem .scala i chcę skojarzyć ikonę dla tych plików przez cały system i dla każdego nowo utworzonego pliku tego rozszerzenia.

Dzięki.


Właśnie zauważyłem, że jesteś MAC ... ale w każdym razie w systemie Windows zmieniłbyś domyślną aplikację powiązaną z tym typem pliku. Plik następnie przyjmuje ikonę tej aplikacji.
— MrWhite

12
@ w3d: Nie ma go na Macu, jest na Macu.
— Wuffers

Odpowiedzi:


41

Ikony typów plików są obsługiwane przez usługi uruchamiania (usługa określająca między innymi, która aplikacja obsługuje typ pliku). Ikona pliku jest zawsze dostarczana przez obsługę aplikacji domyślnie otwierającą plik. W ten sposób np. Preview udostępnia domyślnie ikony PDF i ikony PNG, ale jeśli zmienisz wszystkie pliki PNG, aby otworzyć je za pomocą Pixelmator, pliki te otrzymają później ikonę w stylu Pixelmator.

To, co musisz zrobić, to dodać definicję typu pliku do aplikacji, która ją domyślnie otwiera, lub utworzyć własną „obojętną” aplikację dla tego typu pliku .


Na przykład mój system jeszcze nie wie .scalai chcę TextMatesobie z tym poradzić.

Najpierw Pokaż Zawartość opakowania z TextMate.appprzejdź do Contents/i otwarte Info.plist, albo za pomocą edytora tekstu, lub Property List Editor, część narzędzi Apple'a deweloperskich.

TextMate używa nietypowego formatu Info.plist(zazwyczaj binarnego lub XML), którego fragment wygląda następująco:

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

Klucz nadrzędny CFBundleDocumentTypesjest tym, czego chcemy. Pierwszy element potomny, zawarty w nawiasach klamrowych, zawiera definicję typu pliku wraz z nazwą (dla kolumny typu pliku w Finderze), rozszerzeniami plików i nazwą pliku ikony ( ADAdla TextMate.app/Contents/Resources/ADA.icns).

Aby wesprzeć .scala, musimy dodać element siostrzany podobny do powyższego, w ramach tego samego elementu nadrzędnego CFBundleDocumentTypes:

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

Dla uproszczenia używam tego samego pliku ikon, ale możemy go sami stworzyć, skopiować go TextMate.app/Contents/Resources/SCALA.icnsi odwołać się do niego jak SCALAw Info.plist.

Teraz zamknij TextMate, jeśli jest uruchomiony, przenieś aplikację TextMate.appdo innego folderu i otwórz go ponownie. Zamknij i przesuń z powrotem, a następnie otwórz ponownie. Dokonuje się tego, więc usługi uruchamiania wychwytują zmiany, Info.plistktóre właśnie wykonaliśmy.

Wynik wygląda następująco (pamiętaj, że ponownie użyliśmy ikony TextMate Ada .scala):

alternatywny tekst

Jeśli nie chcesz kojarzyć aplikacji z otwartymi .scalaplikami (nie wyobrażasz sobie, dlaczego, ale jest na to sposób): Zmień dodatki do pliku na następujące:

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

Teraz aplikacja deklaruje typ pliku, ale informuje system, że nie wie, jak sobie z tym poradzić (Apple podaje przykład Findera deklarującego typy czcionek, chociaż sam nie może ich otworzyć).

* Uwaga: każde trwałe przypisanie aplikacji do typu pliku zastępuje ikonę, prawdopodobnie do rodzaju „nieznanego dokumentu”.


Jeśli masz już powiązaną aplikację .scalai po prostu chcesz zmienić ikonę pliku bez zmiany powiązanej aplikacji:

Otwórz aplikację Info.plist, poszukaj wpisu typu pliku CFBundleDocumentTypesi pobierz CFBundleTypeIconFile. Zmodyfikuj ten plik, .../Contents/Resources/a wkrótce potem powinien zostać odzwierciedlony w Finderze.


Informacje o bonusie:

Jak zmienić ikonę pojedynczego dokumentu lub folderu na plik obrazu

Załóżmy, że masz obraz, ~/Desktop/test.pngktórego chcesz użyć ikony (to zrzut ekranu użyty powyżej, aby zilustrować .scalazmianę ikony / TextMate / Ada.

Otwórz /Applications/Utilities/Terminal.appi wprowadź:

sips -i ~/Desktop/test.png

Spowoduje to zmianę test.pngikony pliku na obraz. Ponieważ lubię rekurencję, spróbujmy tego:

Wcześniej zwykła pngikona podglądu (podgląd obrazu jest wyłączony):

alternatywny tekst

Następnie sam plik obrazu jest jego podglądem:

alternatywny tekst

Teraz możemy otworzyć okno dialogowe Pobierz informacje o pliku , kliknąć żądaną ikonę przyszłego dokumentu w lewym górnym rogu, Cmd-Caby ją skopiować, otworzyć okno dialogowe Pobierz informacje o pliku , kliknąć niepożądaną, bieżącą ikonę dokumentu w lewym górnym rogu i Cmd-Vwkleić ikona, którą chcemy.


Alternatywnie możesz otworzyć plik obrazu, którego chcesz użyć jako ikony w Podglądzie, Cmd-Aaby wybrać wszystko, Cmd-Caby skopiować obraz do schowka. Następnie otwórz okno dialogowe Uzyskaj informacje w dokumencie docelowym , wybierz ikonę, którą chcesz zmienić w lewym górnym rogu, i Cmd-Vwklej nad nią obraz.


2
Jedną rzecz do zweryfikowania: czy to unieważnia podpis cyfrowy aplikacji? codesign --verify --verbose /Applications/TextMate.applub coś podobnego. W przypadku unieważnienia nie rób tego w przypadku aplikacji, które wymagają wyjątków w zaporze ogniowej lub potrzebują pęku kluczy. Nie jestem pewien, co jeszcze może pójść nie tak, jeśli zadzieramy z podpisem. (+1 za szczegół!)
— Arjan,

1
Edytuj BAH, przejrzałem pierwszy raz i nie widziałem twojej alternatywnej metody wymuszania aktualizacji LS. meh, FWIW: Tylko jedna rzecz po zmianie aplikacji Info.plist (lub dowolnego pakietu / pakietu): prawdopodobnie będziesz potrzebować touchpoziomu głównego pakietu, aby zaktualizować datę modyfikacji. Następnie w Finderze usuń zaznaczenie i ponownie wybierz aplikację / pakiet / pakiet, a gdy zauważy, że data modyfikacji jest późniejsza niż data pamięci podręcznej w bazie danych Launch Services, ponownie ją zarejestruje, rozpoznając w ten sposób wszelkie zmiany zrobiłeś.
— NSGod

1
@Arjan Masz rację. Niestety TextMate.app: code object is not signedi nie chcę przez to przechodzić ponownie. Podejrzewam, że to prawdziwy problem, nie myślałem o tym. Edycja : Z drugiej strony przechowywane są również niestandardowe skróty klawiaturowe Info.plist. Więc to może nie być problem, jeśli tak nie jest. Jedynym problemem może być dodanie dodatkowego pliku ikony w pakiecie aplikacji.
— Daniel Beck

1
Użyłem dokładnie tej samej metody (chociaż wprowadzałem zmiany w xml Info.plist Sublime Text). W rezultacie skojarzenie pliku działało, ale nie zmieniło to ikony powiązanego pliku. Masz pomysł, dlaczego to nie zadziała?
— gfrigon

2
Trochę późno na imprezę, ale muszę się zgodzić z @Arjan. Jeśli masz aplikację podpisaną kodem, na przykład powiedzmy, och, nie wiem, ... Xcode ... w rzeczywistości powie ci, że aplikacja jest uszkodzona i usuniesz ją i ponownie pobierz z App Store. To, co naprawdę mi się nie podoba, to sposób, w jaki aplikacje takie jak Enthought Canopy przechwytują wszystkie ikony rozszerzeń dla siebie. Apple naprawdę powinno mieć to, że po ustawieniu domyślnego edytora dla typu pliku, system wchodzi i wprowadza wszystkie niezbędne zmiany w rzeczach takich jak powiązanie aplikacji.
— AMR

1

Musisz zastąpić plik ICNS w programie, który jest przypisany jako program domyślny dla określonego typu pliku.

1 - Utwórz obraz dla żądanej ikony, a następnie zapisz jako typ pliku png (png obsługuje przezroczystość).

2 - Konwertuj plik png na typ pliku icns (FastIcns jest całkiem świetny i darmowy).

3 - Kliknij CMD lub kliknij prawym przyciskiem aplikację, która jest ustawiona jako domyślna aplikacja dla określonego rodzaju pliku, a następnie wybierz opcję pokaż zawartość pakietu.

4 - Poszukaj pliku icns, który aplikacja określa jako ikonę określonego typu pliku, prawdopodobnie znajdzie się on w folderze o nazwie Zasoby.

5 - Nazwij utworzony plik icns, dokładnie taką samą nazwę, jak plik, który chcesz zastąpić.

6 - Skopiuj i wklej lub przeciągnij i upuść nowy plik icns, który utworzyłeś, do folderu, w którym znajduje się ten, który chcesz zastąpić, i wybierz opcję zamień, gdy pojawi się opcja.

7 - Gotowe! Wszystkie ikony dla tego typu plików zostały zastąpione nową, pożądaną ikoną.


Która wersja OSX odpowiada tej odpowiedzi ... tylko po to, by oznaczyć ją czasem, gdy metoda nieuchronnie się zmieni.
— JoshP,

0

Zawsze podchodzę do tego, szukając pliku z tym rozszerzeniem, klikając prawym przyciskiem myszy »Uzyskaj informacje lub Command-i, a to wyświetli Panel informacyjny. U góry widoczna jest ikona aktualnie używana dla obrazu. Możesz przeciągnąć plik obrazu na ten, aby go zmienić, lub jeśli skopiowałeś obraz, możesz kliknąć obraz, który chcesz zmienić, i wkleić, aby go zmienić.


Zobacz także obraz na stronie Jak mogę zmienić ikonę aplikacji w Mac OS X? i pamiętaj, że każdy obraz, który można otworzyć w podglądzie, może być używany jako ikona, otwierając go w podglądzie, wybierając i kopiując za pomocą Command-C. Spowoduje to umieszczenie obrazu w schowku, który zawiera również format do użycia jako ikona. Następnie wybierz istniejącą ikonę i wklej schowek za pomocą Command-V.
— Arjan,

3
To nie działa Kiedy przeciągam plik .PNG do obrazu na ekranie informacyjnym, dostaję ikonę PNG zamiast obrazu w PNG. I zmienia określony plik, a nie wszystkie pliki z tym samym rozszerzeniem w całym systemie.
— Eran Kampf
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.