В Finder.app вы можете нажать Enter, чтобы изменить имя выбранного в данный момент файла или папки.
OS X автоматически выберет только часть имени файла, а не расширение:
Это очень удобно, потому что таким образом вы можете просто начать вводить новое имя, не беспокоясь о случайном изменении расширения файла.
Однако это работает только для «известных» типов файлов. Если вы попробуете это с неизвестным расширением, будет выбрано все имя файла (включая расширение):
Я попытался сопоставить приложение, которое может открывать все .bar
файлы через ⌘+ I→ «Изменить все», но все равно получаю поведение, описанное выше.
Где хранится список «известных» типов файлов? Есть ли способ заставить OS X распознавать новые типы файлов?
Этот пост SuperUser сработал для меня:
Вам нужно перейти к приложению, которое вы хотите использовать для открытия этих файлов, и отредактировать его пакет. Щелкните правой кнопкой мыши приложение для обработки этих расширений файлов и выберите « Показать содержимое пакета» . Перейдите к
Contents
и отредактируйтеInfo.plist
. Вам может понадобиться Редактор списка свойств , который является частью инструментов разработчика Apple. Если вам повезет, то в формате XML. Отредактируйте этот файлCFBundleDocumentTypes
и добавьте запись для нужного вам расширения.
Я использовал TextEdit в качестве приложения по умолчанию для открытия .bar
файлов. Единственное, что я сделал по-другому, это изменил XML, который был в TextEdit, Info.plist
на:
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>bar</string>
</array>
<key>CFBundleTypeIconFile</key>
<string>BarDocument</string>
<key>CFBundleTypeName</key>
<string>Bar Document</string>
<key>CFBundleTypeRole</key>
<string>Document</string>
</dict>
…а затем я использовал LSRefresh.app для обновления TextEdit в базе данных служб запуска. Тогда это сработало, как вы предложили, хотя, вероятно, сломает подпись кода Textedit (и любого другого подписанного приложения) на Lion.
Где хранится список «известных» типов файлов?
Официальный термин для «типов файлов» — унифицированные идентификаторы типов (UTI), а база данных UTI поддерживается Launch Services .
Используя Терминал , вы можете просмотреть содержимое базы данных Launch Services с помощью lsregister
инструмента, который хранится по адресу:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
Вместо того, чтобы указывать этот длинный путь каждый раз, когда вы хотите запустить lsregister
, вы можете временно добавить его каталог в свой PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
а затем вы можете запустить lsregister
, просто введя:
lsregister
Чтобы просмотреть содержимое базы данных Launch Services:
lsregister -dump
Есть ли способ заставить OS X распознавать новые типы файлов?
В этой статье Apple «Объявление новых унифицированных идентификаторов типов» содержится полезная информация о том, как это сделать. Вот полный процесс:
Создайте фиктивное приложение для регистрации в Launch Services:
На выбор два ключа:
UTExportedTypeDeclarations
- для ваших собственных пользовательских расширений имен файлов.UTImportedTypeDeclarations
– для расширений имен файлов, которые уже существуют, но не распознаются OS X.Выберите ключ, наиболее подходящий для ваших нужд.
Затем в файле Info.plist перед двумя последними строками ( </dict></plist>
) добавьте следующий код:
<key>KEY</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>IDENTIFIER</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>EXTENSION</string>
</array>
</dict>
</dict>
</array>
внесение следующих изменений:
KEY
выбранным ключом ( UTExportedTypeDeclarations
или UTImportedTypeDeclarations
).IDENTIFIER
подходящим идентификатором обратного DNS:
com.mycompany.mytype
com.idsoftware.wad
EXTENSION
расширением имени файла (без точки в начале), например: wad
.Это минимальный код, необходимый для того, чтобы службы запуска могли принять ваш новый UTI. Вы также можете добавить следующие необязательные свойства:
UTTypeConformsTo
– См. Приложение ниже.UTTypeDescription
– Видимое пользователю описание, которое будет отображаться в Finder.UTTypeIconFile
– Если вы добавите файл изображения значка Apple в папку Contents/Resources вашего фиктивного приложения и добавите его имя файла в это свойство, то файлы с вашим новым расширением имени файла будут использовать этот значок.UTTypeReferenceURL
– URL-адрес справочного документа, описывающего этот тип.Вот полный пример, показывающий все необязательные свойства:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.idsoftware.wad</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>wad</string>
</array>
</dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Doom WAD file</string>
<key>UTTypeIconFile</key>
<string>DoomWAD.icns</string>
<key>UTTypeReferenceURL</key>
<string>http://en.wikipedia.org/wiki/Doom_WAD</string>
</dict>
</array>
Запустите эту команду в Терминале:
lsregister <PATH_TO_APP>
заменив <PATH_TO_APP>
путь к вашему фиктивному приложению, например:
lsregister ~/Desktop/MyDummyApp.app
Если теперь вы создадите файл с новым расширением имени файла, а затем выберете его в Finder и нажмете Enter, Finder должен автоматически выбрать только часть имени файла, а не расширение.
Если вы просматриваете содержимое базы данных Launch Services:
lsregister -dump
вы должны найти свой новый UTI в списке:
type id: 50364
bindableKey: 12608
generation: 1
uti: com.idsoftware.wad
description: Doom WAD file
flags: imported active apple-internal untrusted
icon: DoomWAD.icns
conforms to: public.data
tags: .wad
Если позже вы захотите отменить регистрацию новой UTI, передайте -u
опцию lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
OS X объявляет иерархию UTI, которые перечислены здесь: System-Declared Uniform Type Identifiers .
Вот несколько UTI в иерархии:
public.content
public.text
public.rtf
public.html
public.xml
public.plain-text
public.source-code
public.c-source
public.c-header
com.sun.java-source
public.image
public.jpeg
public.tiff
public.png
public.audiovisual-content
public.movie
public.audio
Каждый UTI «соответствует» своему родительскому UTI:
Например, UTI
public.html
, определяющий текст HTML, соответствует базовому текстовому идентификаторуpublic.text
. В этом случае соответствие позволяет приложениям, которые могут открывать обычные текстовые файлы, идентифицировать HTML-файлы как те, которые они также могут открывать. ( ссылка )
При создании нового UTI рекомендуется установить для UTTypeConformsTo
свойства один из существующих UTI.
Например, если ваш новый UTI представляет собой тип исходного кода, то вы должны установить для этого UTTypeConformsTo
свойства значение public.source-code
, чтобы его можно было открыть любыми приложениями, которые могут открывать или public.source-code
файлы .public.plain-text
public.text
Следуй этим шагам:
Выберите файл с неизвестным расширением (скажем, .txt
).
Щелкните правой кнопкой мыши и выберите Get Info
или используйте сочетание клавиш Commandiдля отображения информационного окна.
Нажмите на индикатор раскрытия, кроме « Открыть с помощью: » , чтобы открыть подробный вид. Выберите нужное приложение из выпадающего списка. Это свяжет документ с выбранным приложением (например, TextEdit).
Нажмите кнопку « Изменить все...» . Сначала он покажет диалоговое окно с просьбой подтвердить ваше намерение и свяжет все .txt
документы, которые нужно открыть с помощью TextEdit, и оставит расширение невыбранным, когда вы нажмете «Возврат» в имени документа.
ТахионВихрь
CFBundleTypeExtensions
является устаревшим ключом, который устарел в OS X 10.5 . Предпочтительным методом с 2007 года является объявление новых UTI, как упоминалось здесь и описано в моем ответе .Боб
Пасьер
xxx.bar
и не выбратьopen with
?Пасьер
Боб
Гвинет Ллевелин