Значки для типов файлов обрабатываются Launch Services (служба, определяющая, помимо прочего, какое приложение обрабатывает тип файла). Значок файла всегда обеспечивается обработчиком приложения, открывающим файл по умолчанию. Таким образом, например, Предварительный просмотр предоставляет значки PDF по умолчанию и значки PNG, но если вы измените все файлы PNG, чтобы открывать их с помощью Pixelmator, эти файлы впоследствии получат значок в стиле Pixelmator.
Что вам нужно сделать, это добавить определение типа вашего файла в приложение, которое открывает его по умолчанию, или создать свое собственное «фиктивное» приложение для типа файла .
Как пример, моя система еще не знает .scala
, и я хочу TextMate
справиться с этим.
Во- первых, я Show Package Contents из 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
в другую папку и снова откройте его. Закройте и переместите обратно, затем откройте еще раз. Это сделано для того, чтобы служба запуска запускала изменения, которые 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
значок файла на его изображение. Так как мне нравится рекурсия, давайте попробуем это:
Ранее простой png
значок предварительного просмотра (предварительный просмотр изображения деактивирован):
После этого сам файл изображения является его предварительным просмотром:
Теперь мы можем открыть диалоговое окно Get Info для файла , щелкнуть по нужному значку будущего документа в левом верхнем углу, Cmd-C
чтобы скопировать его, открыть диалоговое окно Get Info для файла документа , щелкнуть по нежелательному значку текущего документа в левом верхнем углу и Cmd-V
вставить значок, который мы хотим.
Кроме того, вы можете открыть файл изображения, который вы хотите использовать в качестве значка в окне предварительного просмотра, Cmd-A
чтобы выбрать все, Cmd-C
чтобы скопировать изображение в буфер обмена. Затем откройте диалоговое окно « Get Info» целевого документа , выберите значок для изменения в левом верхнем углу и Cmd-V
вставьте изображение поверх него.