本章介绍应用程序如何检测 MIME 类型,如何注册 MIME 类型,以及如何将应用程序添加到 GNOME 桌面。
多用途互联网邮件扩展 (MIME) 类型标识文件的格式。 MIME 类型使应用程序能够读取文件。 像互联网浏览器和电子邮件程序这样的应用程序使用 MIME 类型来处理不同类型的文件。 例如,电子邮件应用程序可以使用 MIME 类型来检测电子邮件的附件文件属于哪种类型。
The Nautilus
文件管理器使用 MIME 类型定义文件的类型。文件管理器需要知道文件的 MIME 类型才能执行以下任务:
使用适当的应用程序打开该文件。
显示一个表示文件类型的字符串。
显示一个适当的图标来表示该文件。
显示一组可以打开该文件的其他应用程序。
如果您添加了一个新应用程序,您必须确保其他应用程序能够识别与该应用程序相关联的文件。 您必须执行几项任务使其他应用程序能够检测出应用程序文件的 MIME 类型。
本节介绍应用程序如何检测文件的 MIME 类型,以及如何将应用程序与 MIME 类型相关联。 本章还介绍添加新应用程序时必须遵循的步骤。
应用程序检测文件的 MIME 类型的方法如下所示:
应用程序使用文件内容探测指令在文件中搜索一个特定样式。文件内容探测指令将文件中的一个特定样式与一种 MIME 类型相关联。 如果应用程序找到了与该样式相匹配的项,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。
如果内容探测指令无法确定文件的 MIME 类型,那么应用程序可以检查文件名。 应用程序将根据 MIME 类型注册表检查文件名。MIME 类型注册表将特定的文件扩展名和文件名样式与特定的 MIME 类型相关联。 如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。
下文提供了有关文件内容探测指令和 MIME 类型注册表的详细信息。
文件内容探测指令在 /usr/gnome/etc/gnome-vfs-mime-magic 文件中指定。以下是文件内容探测指令的一个示例:
0 string \x89PNG image/png
文件内容探测指令的语法如下所示:
offset_start[:offset_end] pattern_type pattern [&pattern_mask] type
表 4–1介绍文件内容探测指令中的各个字段。
表 4–1 文件内容探测指令中的字段
字段 |
说明 |
---|---|
offset_start |
指定在文件中搜索文本样式之前要忽略的字符数。 |
pattern_type |
指定要搜索的样式类型。 发布本指南时,string 样式类型是唯一受支持的样式类型。 |
pattern |
指定要搜索的样式。 |
pattern_mask |
指定样式掩码,格式为十六进制。有关样式掩码的更多信息,请参阅下一节。 此字段是可选字段。 上面的示例中没有此字段。 |
type |
指定与此项匹配的文件的相应 MIME 类型。 |
样式掩码标识在文件中搜索样式时忽略样式中的哪些数据位。下面是一个带有样式掩码的文件内容探测指令的示例:
0 string BMxxxx\000\000 &0xffff00000000ffff image/bmp
上例中的样式和掩码如下所示:
样式 |
B |
M |
x |
x |
x |
x |
\000 |
\000 |
掩码 |
ff |
ff |
00 |
00 |
00 |
00 |
ff |
ff |
该样式和掩码指定一个具有以下特性的文件:
文件以 BM 开头。
BM 后面是长度为四个字节的任意值。
这四个字节后面是 \000\000。
这个文件内容探测指令指定:与该样式和掩码匹配的文件的 MIME 类型为 image/bmp。
MIME 类型注册表位于 /usr/gnome/share/mime-info 。MIME 类型注册表包含以下文件:
文件 |
文件扩展名 |
---|---|
MIME 信息文件 |
.mime |
MIME 键文件 |
.keys |
下文介绍 MIME 信息文件和 MIME 键文件。
MIME 信息文件将 MIME 类型与以下两项,或两项中的任意一项相关联。
文件扩展名
文件名样式
当应用程序搜索文件的 MIME 类型时,应用程序将根据 MIME 信息文件检查文件名。 如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。
在 MIME 信息文件中,要搜索的文件名样式以范式编写。
MIME 信息文件中的 MIME 类型项的格式如下所示:
MIME_type ext[,priority]: list_of_extensions regex[,priority]: list_of_regular_expressions
可以为文件扩展名或范式指定一个优先级。可以使用优先级来区别复合文件名。 例如,可将 .gz 扩展名的优先级指定为 1,并为 .tar.gz 扩展名指定一个更高的优先级,2。在这种情况下, 文件 abc.tar.gz 的 MIME 类型将被确定为 .tar.gz 。
必须用制表符 (\t) 将 ext 字段和 regex 字段缩进。
以下 MIME 类型项取自 gnome-vfs.mime MIME 信息文件:
application/x-compressed-tar regex,2: tar\.gz$ ext: tgz audio/x-real-audio ext: rm ra ram image/jpeg ext: jpe jpeg jpg image/png ext: png text/html ext: html htm HTML text/plain ext: asc txt TXT text/x-readme regex: README.*
文件管理器将按照字母顺序读取 MIME 信息文件。 MIME 信息文件的字母顺序决定将 MIME 类型指定给文件扩展名或范式的顺序。 例如,如果在 abc.mime 文件和 def.mime 文件中为不同的 MIME 类型指定了同一个文件扩展名,则将使用 abc.mime 文件中指定的 MIME 类型。
MIME 键文件提供有关用户界面中使用的一个 MIME 类型的信息。 例如,MIME 键文件提供有关某个 MIME 类型的说明,并指定一个图标来表示属于该 MIME 类型的文件。
下面是 MIME 键文件的一个示例:
text/html description=HTML page icon_filename=gnome-text-html default_action_type=application short_list_application_ids_for_novice_user_level=mozilla,netscape,galeon category=Documents/World Wide Web
必须使用制表符 (\t) 将 MIME 键文件中的键缩进。
表 4–2介绍 MIME 键文件中最重要的键。 通常,description 键和 category 键会被本地化。
表 4–2 MIME 键文件中的键
键 |
说明 |
---|---|
can_be_executable |
指定属于该 MIME 类型的文件是否可以执行。 |
description |
提供有关该 MIME 类型的说明。 这些说明可在文件管理器和其他应用程序中显示。 |
icon_filename |
指定表示该 MIME 类型的图标的文件名。 不指定该文件名的路径,或文件扩展名。 该图标可在文件管理器和其他应用程序中显示。 |
default_action_type |
指定当用户打开属于该 MIME 类型的文件时,执行哪类操作。 对于大多数应用程序,应输入该 MIME 类型的相应 application。 |
short_list_application_ids _for_novice_user_level |
指定当用户打开属于该 MIME 类型的文件时,使用哪个应用程序。可以按照优先顺序指定一个或多个应用程序。这些应用程序也必须在应用程序注册表中注册。 |
category |
为该 MIME 类型指定一个类别。 此键的值决定该 MIME 类型在 |
应用程序注册表包含注册应用程序的文本文件。 应用程序注册文件包含一系列键值对,指定应用程序的详细信息。 例如,应用程序注册文件包含以下信息:
用于启动该应用程序的命令。
与该应用程序相关联的 MIME 类型。
一个应用程序注册文件可以包含一个或多个应用程序注册项。 应用程序注册文件的扩展名为 .applications 。
应用程序注册表位于 /usr/share/gnome/application-registry 。该目录包含一个名为 gnome-vfs.applications 的默认应用程序注册文件。
要注册应用程序,可在应用程序注册表中为该应用程序添加一个注册文件。
下面是应用程序注册文件的一个示例:
eog command=eog name=Eye of Gnome can_open_multiple_files=true expects_uris=false requires_terminal=false mime_types=image/bmp,image/gif,image/jpeg,image/png,image/tiff, image/x-xpixmap,image/x-bmp,image/x-png,image/x-portable-anymap, image/x-portable-bitmap,image/x-portable-graymap, image/x-portable-pixmap
表 4–3介绍应用程序注册文件中的键。
表 4–3 应用程序注册文件中的键
键 |
说明 |
---|---|
应用程序标识符 |
为该应用程序指定一个唯一的标识符。这个标识符必须与该应用程序的 MIME 键文件中的 short_list_application_ids_for_novice_user_level 键中的标识符相同。 |
command |
指定用于启动该应用程序的命令,以及与该命令一起使用的各个选项。 |
name |
为该应用程序指定一个名称。该名称在用户界面中使用。 例如,文件管理器的打开方式子菜单中使用该名称。 |
can_open_multiple_files |
指定该应用程序是否能同时打开多个文件。 |
expects_uris |
指定该应用程序是否能处理 URI。 如果此键的值为 true,那么该应用程序注册项还必须包含一个 supported_uri_schemes 键。 |
supported_uri_schemes |
指定该应用程序能够处理的 URI 方案。 |
requires_terminal |
指定是否在终端窗口中运行该应用程序。 对于不创建窗口以在其中运行的应用程序,应在此字段中输入 true。 |
mime_types |
指定该应用程序可以使用的 MIME 类型。 |
要将应用程序添加到 GNOME 桌面,请执行以下步骤:
为该应用程序添加一个菜单项。有关如何添加菜单项的更多信息,请参阅第 2 章,定制菜单。
在 /usr/gnome/share/icons/主题名称/图标大小/apps 中为该应用程序添加一个图标。有关图标和主题的更多信息,请参阅第 3 章,安装主题。
如果该应用程序使用新的 MIME 类型,请为那个新 MIME 类型添加一个文件内容探测指令。 有关文件内容探测指令的更多信息,请参阅文件内容探测指令。
如果该应用程序使用新的 MIME 类型,请在 MIME 类型注册表中为该应用程序添加一个 MIME 信息文件。 有关 MIME 信息文件的更多信息,请参阅MIME 信息文件。
在 MIME 类型注册表中为该应用程序添加一个 MIME 键文件。 有关 MIME 键文件的更多信息,请参阅MIME 键文件。
如果该应用程序使用新的 MIME 类型,请在 /usr/gnome/share/icons/theme_name/ icon_size/mimetypes 中为该 MIME 类型添加一个图标。For more information on icons and themes, see 第 3 章,安装主题.
要将该应用程序与一个 MIME 类型相关联,请在应用程序注册表中添加一个应用程序注册文件。 有关应用程序注册表的更多信息,请参阅为 MIME 类型注册应用程序。