Chi*_*ron 46 mac osx-snow-leopard macos
如何为整个系统的某些文件类型设置图标?
例如,我有以 .scala 扩展名结尾的文本文件,我想在整个系统中为该文件关联一个图标,并为该扩展名的任何新创建的文件关联一个图标。
谢谢。
Dan*_*eck 43
文件类型的图标由启动服务处理(该服务确定哪个应用程序处理文件类型等)。默认情况下,文件图标始终由处理打开文件的应用程序提供。这样,例如预览默认提供 PDF 图标和 PNG 图标,但是如果您将所有 PNG 文件更改为使用 Pixelmator 打开,这些文件之后会获得一个 Pixelmator 样式的图标。
您需要做的是将您的文件类型定义添加到默认打开它的应用程序中,或者为该文件类型创建您自己的“虚拟”应用程序。
例如,我的系统还不知道.scala
,我想TextMate
处理它。
首先,我显示包内容的TextMate.app
,导航到Contents/
开放的Info.plist
,无论是用文本编辑器,或者Property List Editor
,苹果的开发者工具的一部分。
TextMate 使用一种不寻常的格式Info.plist
(通常是二进制或 XML),其摘录如下所示:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
Run Code Online (Sandbox Code Playgroud)
父键CFBundleDocumentTypes
就是我们想要的。它的第一个子元素用大括号括起来,包含一个文件类型定义,包括名称(对于 Finder 中的文件类型列)、文件扩展名和图标文件的名称(ADA
for TextMate.app/Contents/Resources/ADA.icns
)。
为了支持.scala
,我们需要在同一个父元素下添加一个类似于上面的兄弟元素CFBundleDocumentTypes
:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
},
Run Code Online (Sandbox Code Playgroud)
为了简便起见,我使用的是相同的图标文件,但我们可以创建一个自己,把它复制到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";
},
Run Code Online (Sandbox Code Playgroud)
现在,应用程序声明了文件类型,但告诉系统它不知道如何处理它(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
Run Code Online (Sandbox Code Playgroud)
这会将test.png
文件图标更改为其图像。由于我喜欢递归,让我们试试这个:
之前,纯预览png
图标(禁用图像预览):
之后,图像文件本身就是它的预览:
现在我们可以打开文件的获取信息对话框,单击左上角所需的未来文档图标,Cmd-C
复制它,打开文档文件的获取信息对话框,单击左上角不需要的当前文档图标,然后Cmd-V
粘贴我们想要的图标。
或者,您可以在预览中打开要用作图标的图像文件,Cmd-A
选择全部,Cmd-C
将图像复制到剪贴板。然后打开目标文档的“获取信息”对话框,选择左上角要更改的图标,然后Cmd-V
将图像粘贴到其上。
归档时间: |
|
查看次数: |
69582 次 |
最近记录: |