本章介绍应用程序如何检测 MIME 类型,如何注册 MIME 类型,以及如何将应用程序添加到 GNOME 桌面。
多用途互联网邮件扩展 (MIME) 类型标识文件的格式。MIME 类型使应用程序能够读取文件。像互联网浏览器和电子邮件程序这样的应用程序使用 MIME 类型来处理不同类型的文件。例如,电子邮件应用程序可以使用 MIME 类型来检测电子邮件的附件文件属于哪种类型。
Nautilus
文件管理器使用 MIME 类型来标识文件的类型。文件管理器需要知道文件的 MIME 类型才能执行以下任务:
使用适当的应用程序打开该文件。
显示一个表示文件类型的字符串。
显示一个适当的图标来表示该文件。
显示一组可以打开该文件的其他应用程序。
如果您添加了一个新应用程序,您必须确保其他应用程序能够识别与该应用程序相关联的文件。您必须执行几项任务使其他应用程序能够检测出应用程序文件的 MIME 类型。
本节介绍应用程序如何检测文件的 MIME 类型,以及如何将应用程序与 MIME 类型相关联。本章还介绍添加新应用程序时必须遵循的步骤。
应用程序检测文件的 MIME 类型的方法如下所示:
应用程序使用文件内容探测指令在文件中搜索一个特定样式。文件内容探测指令将文件中的一个特定样式与一种 MIME 类型相关联。如果应用程序找到了与该样式相匹配的项,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。
如果内容探测指令无法确定文件的 MIME 类型,那么应用程序可以检查文件名。应用程序将根据 MIME 类型注册表检查文件名。MIME 类型注册表将特定的文件扩展名和文件名样式与特定的 MIME 类型相关联。如果找到了与该文件名相匹配的项,则该文件的 MIME 类型就是与该扩展名或样式相关联的 MIME 类型。
下文提供了有关文件内容探测指令和 MIME 类型注册表的详细信息。
文件内容探测指令在文件 /etc/gnome-vfs-mime-magic 中指定。以下是文件内容探测指令的一个示例:
0 string \x89PNG image/png
文件内容探测指令的语法如下所示:
offset_start[:offset_end] pattern_type pattern [&pattern_mask] type
表 5–1介绍文件内容探测指令中的各个字段。
表 5–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/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 会使用 .tar.gz 的 MIME 类型。
您必须用制表符 (\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 键文件中的键缩进。
表 5–2介绍 MIME 键文件中最重要的键。通常会本地化 description 键和 category 键。
表 5–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/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
表 5–3介绍应用程序注册文件中的键。
表 5–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/share/icons/theme-name/icon-size/apps 添加应用程序的图标。有关图标和主题的更多信息,请参阅第 3 章,安装主题。
如果该应用程序使用新的 MIME 类型,请为那个新 MIME 类型添加一个文件内容探测指令。有关文件内容探测指令的更多信息,请参阅文件内容探测指令 。
如果该应用程序使用新的 MIME 类型,请在 MIME 类型注册表中为该应用程序添加一个 MIME 信息文件。有关 MIME 信息文件的更多信息,请参阅MIME 信息文件 。
在 MIME 类型注册表中为该应用程序添加一个 MIME 键文件。有关 MIME 键文件的更多信息,请参阅MIME 键文件 。
如果应用程序使用新 MIME 类型,则向 /usr/share/icons/theme-name/icon-size/mimetypes 添加该 MIME 类型的图标。有关图标和主题的更多信息,请参阅第 3 章,安装主题。
要将该应用程序与一个 MIME 类型相关联,请在应用程序注册表中添加一个应用程序注册文件。有关应用程序注册表的更多信息,请参阅为 MIME 类型注册应用程序 。