如何为某些文件类型设置图标所有的系统?
例如,我有一个以 .scala 扩展名结尾的文本文件,我想在整个系统中为该文件以及任何新创建的以此扩展名的文件关联一个图标。
谢谢。
答案1
文件类型的图标由启动服务处理(该服务除其他事项外,还确定哪个应用程序处理文件类型)。默认情况下,文件图标始终由处理打开文件的应用程序提供。这样,例如预览默认提供 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
我们刚刚执行的更改。
结果如下所示(记住,我们重用了 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
将图像粘贴到其上。
答案2
您需要替换被指定为特定文件类型的默认程序的程序内的 ICNS 文件。
1 - 为所需的图标创建图像,然后保存为 png 文件类型(png 支持透明度)。
2 - 将 png 文件转换为 icns 文件类型(FastIcns 非常棒而且免费)。
3 - CMD 单击或右键单击设置为特定文件类型的默认应用程序的应用程序,然后选择显示包内容。
4 - 查找应用程序指定为特定文件类型的图标的 icns 文件,它可能位于名为 Resources 的文件夹中。
5-将您创建的 icns 文件命名为与您要替换的文件名完全相同。
6 - 复制并粘贴,或将您创建的新 icns 文件拖放到您想要替换的文件夹所在的文件夹中,并在给出选项时选择替换。
7 – 您已完成!该文件类型的所有图标都已替换为所需的新图标。
答案3
我通常的做法是找到一个带有该扩展名的文件,右键单击 » 获取信息,或按 Command-i,这样就会调出信息面板。在顶部,您会看到当前用于该图像的图标。您可以将图像文件拖到该图标上进行更改,或者如果您复制了该图像,则可以单击要更改的图像并进行粘贴以进行更改。