Піктограми для типів файлів обробляються послугами Launch Services (сервісом, серед іншого, визначає, яка програма обробляє тип файлу). Піктограма файлу завжди надається програмою, що відкриває файл за замовчуванням. Таким чином, наприклад, попередній перегляд надає піктограми PDF за замовчуванням та піктограми PNG, але якщо ви зміните всі файли PNG для відкриття за допомогою 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в іншу папку та відкрийте її знову. Закрийте його та перемістіть назад, а потім знову відкрийте. Це робиться для того, щоб послуги Launch Services вибирали зміни, які Info.plistми тільки що виконували.
Результат виглядає приблизно так (пам’ятайте, ми знову використовували піктограму TextMate Ada .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значок попереднього перегляду (попередній перегляд зображення відключений):

Після цього сам файл зображення - його попередній перегляд:

Тепер ми можемо відкрити діалогове вікно « Інформація про файл» , натиснути потрібний, майбутній значок документа у верхньому лівому куті, Cmd-Cскопіювати його, відкрити діалогове вікно « Інформація про файл документа» , натиснути небажаний, поточний значок документа у верхньому лівому куті та Cmd-Vвставити папку значок, який ми хочемо.
Ви також можете відкрити файл зображення, який ви хочете використовувати як піктограму в режимі попереднього перегляду, Cmd-Aщоб вибрати всі, Cmd-Cскопіювати зображення у буфер обміну. Потім відкрийте діалогове вікно " Інформація про цільовий документ" , виберіть піктограму, яку потрібно змінити у верхньому лівому куті, та Cmd-Vнаклейте на неї зображення.