40

Как установить значок для некоторых типов файлов, продуманных всей системой?

Например, у меня есть текстовые файлы с расширением .scala, и я хочу связать значок для этих файлов во всей системе и для любого нового файла с таким расширением.

Благодарю.

3 ответа3

39

Значки для типов файлов обрабатываются Launch Services (служба, определяющая, помимо прочего, какое приложение обрабатывает тип файла). Значок файла всегда обеспечивается обработчиком приложения, открывающим файл по умолчанию. Таким образом, например, Предварительный просмотр предоставляет значки PDF по умолчанию и значки PNG, но если вы измените все файлы PNG, чтобы открывать их с помощью Pixelmator, эти файлы впоследствии получат значок в стиле Pixelmator.

Что вам нужно сделать, это добавить определение типа вашего файла в приложение, которое открывает его по умолчанию, или создать свое собственное "фиктивное" приложение для типа файла.


Например, моя система еще не знает о .scala , и я хочу, чтобы TextMate справился с этим.

Сначала я показываю содержимое пакета TextMate.app , перехожу к Contents/ и открываю Info.plist с помощью текстового редактора или Property List Editor , который является частью инструментов разработчика Apple.

TextMate использует необычный формат для Info.plist (обычно это двоичный файл или XML), фрагмент которого выглядит следующим образом:

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

Родительский ключ CFBundleDocumentTypes - это то, что нам нужно. Первый его дочерний элемент, заключенный в фигурные скобки, содержит определение типа файла, полное имя (для столбца типа файла в Finder), расширения файла и имя файла значка (ADA для TextMate.app/Contents/Resources/ADA.icns).

Чтобы поддерживать .scala , нам нужно добавить элемент одного уровня, аналогичный приведенному выше, под тем же родительским элементом CFBundleDocumentTypes:

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

Для простоты я использую тот же файл значков, но мы можем создать его сами, скопировать его в TextMate.app/Contents/Resources/SCALA.icns и обозначить его как SCALA в Info.plist .

Теперь закройте TextMate, если он запущен, переместите приложение TextMate.app в другую папку и снова откройте его. Закройте и переместите обратно, затем откройте еще раз. Это сделано для того, чтобы Launch Services забрал изменения в Info.plist мы только что выполнили.

Результат выглядит следующим образом (помните, мы повторно использовали значок Ada TextMate для .scala):

альтернативный текст

Если вы не хотите связывать приложение для открытия файлов .scala (не представляю, почему, но есть способ сделать это): Измените дополнения к файлу следующим образом:

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

Теперь приложение объявляет тип файла, но сообщает системе, что не знает, как с ним обращаться (Apple приводит пример объявления типов шрифтов в Finder, хотя сама не может их открыть).

* Обратите внимание, что любое постоянное назначение приложения типу файла переопределяет значок, возможно, к виду "неизвестный документ".


Если у вас уже есть приложение, связанное с .scala , и вы просто хотите изменить значок файла без изменения связанного приложения:

Откройте Info.plist приложения, найдите запись типа файла в CFBundleDocumentTypes и получите CFBundleTypeIconFile . Изменить этот файл в .../Contents/Resources/ и это должно быть отражено в Finder вскоре после этого.


Информация о бонусе:

Как изменить значок отдельного документа или папки на файл изображения

Предположим, у вас есть изображение ~/Desktop/test.png котором вы хотите использовать значок (это скриншот, использованный выше для иллюстрации изменения .scala/TextMate/Ada).

Откройте /Applications/Utilities/Terminal.app и введите:

sips -i ~/Desktop/test.png

Это изменит значок файла test.png на его изображение. Так как мне нравится рекурсия, давайте попробуем это:

Ранее, простой значок Preview png (предварительный просмотр изображения деактивирован):

альтернативный текст

После этого сам файл изображения является его предварительным просмотром:

альтернативный текст

Теперь мы можем открыть диалоговое окно Get Info для файла, щелкнуть по нужному значку будущего документа в левом верхнем углу, Cmd-C чтобы скопировать его, открыть диалоговое окно Get Info для файла документа, щелкнуть по ненужному текущему значку документа в верхнем левом углу и Cmd-V чтобы вставить значок, который мы хотим.


Кроме того, вы можете открыть файл изображения, который вы хотите использовать в качестве значка в Preview, Cmd-A чтобы выбрать все, Cmd-C чтобы скопировать изображение в буфер обмена. Затем откройте диалоговое окно « Get Info» целевого документа, выберите значок для изменения в левом верхнем углу и нажмите Cmd-V чтобы вставить изображение поверх него.

1

Вам необходимо заменить файл ICNS внутри программы, которая назначена в качестве программы по умолчанию для определенного типа файла.

1 - Создайте изображение для нужного значка, затем сохраните как тип файла png (png поддерживает прозрачность).

2. Преобразуйте файл png в тип файла icns (FastIcns довольно хорош и бесплатен).

3 - Нажмите CMD или щелкните правой кнопкой мыши приложение, которое установлено в качестве приложения по умолчанию для определенного типа файла, затем выберите Показать содержимое пакета.

4. Найдите файл icns, который приложение обозначает как значок для определенного типа файла, он, вероятно, будет находиться в папке с именем Resources.

5 - Назовите файл icns, который вы создали, точно такое же имя файла, которое вы хотите заменить.

6 - Скопируйте и вставьте или перетащите созданный вами новый файл icns в папку, в которой находится файл, который вы хотите заменить, и выберите замену, когда появится опция.

7 - Готово! Все значки для этого типа файлов были заменены новыми нужными значками.

0

Я всегда делаю так, чтобы найти файл с таким расширением, щелкнуть правой кнопкой мыши по кнопке «Получить информацию» или «Command-i», чтобы открыть информационную панель. Вверху вы видите значок, который в настоящее время используется для изображения. Вы можете перетащить на него файл изображения, чтобы изменить его, или, если вы скопировали изображение, вы можете щелкнуть изображение, которое хотите изменить, и выполнить вставку, чтобы изменить его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .