用于 Solaris 操作环境的 GNOME 2.0 桌面系统管理指南

第 4 章 MIME 类型

本章介绍应用程序如何检测 MIME 类型,如何注册 MIME 类型,以及如何将应用程序添加到 GNOME 桌面。

数据类型的介绍

多用途互联网邮件扩展 (MIME) 类型标识文件的格式。 MIME 类型使应用程序能够读取文件。 像互联网浏览器和电子邮件程序这样的应用程序使用 MIME 类型来处理不同类型的文件。 例如,电子邮件应用程序可以使用 MIME 类型来检测电子邮件的附件文件属于哪种类型。

The Nautilus 文件管理器使用 MIME 类型定义文件的类型。文件管理器需要知道文件的 MIME 类型才能执行以下任务:

如果您添加了一个新应用程序,您必须确保其他应用程序能够识别与该应用程序相关联的文件。 您必须执行几项任务使其他应用程序能够检测出应用程序文件的 MIME 类型。

本节介绍应用程序如何检测文件的 MIME 类型,以及如何将应用程序与 MIME 类型相关联。 本章还介绍添加新应用程序时必须遵循的步骤。

检测文件的 MIME 类型

应用程序检测文件的 MIME 类型的方法如下所示:

  1. 应用程序使用文件内容探测指令在文件中搜索一个特定样式。文件内容探测指令将文件中的一个特定样式与一种 MIME 类型相关联。 如果应用程序找到了与该样式相匹配的项,则该文件的 MIME 类型就是与该样式相关联的 MIME 类型。

  2. 如果内容探测指令无法确定文件的 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

该样式和掩码指定一个具有以下特性的文件:

  1. 文件以 BM 开头。

  2. BM 后面是长度为四个字节的任意值。

  3. 这四个字节后面是 \000\000

这个文件内容探测指令指定:与该样式和掩码匹配的文件的 MIME 类型为 image/bmp

MIME 类型注册表

MIME 类型注册表位于 /usr/gnome/share/mime-info 。MIME 类型注册表包含以下文件:

文件 

文件扩展名 

MIME 信息文件 

.mime

MIME 键文件 

.keys

下文介绍 MIME 信息文件和 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 类型的文件。

下面是 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 类型在文件类型和程序 (File Types and Programs) 首选项工具中的位置。

为 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 桌面,请执行以下步骤:

  1. 为该应用程序添加一个菜单项。有关如何添加菜单项的更多信息,请参阅第 2 章,定制菜单

  2. /usr/gnome/share/icons/主题名称/图标大小/apps 中为该应用程序添加一个图标。有关图标和主题的更多信息,请参阅第 3 章,安装主题

  3. 如果该应用程序使用新的 MIME 类型,请为那个新 MIME 类型添加一个文件内容探测指令。 有关文件内容探测指令的更多信息,请参阅文件内容探测指令

  4. 如果该应用程序使用新的 MIME 类型,请在 MIME 类型注册表中为该应用程序添加一个 MIME 信息文件。 有关 MIME 信息文件的更多信息,请参阅MIME 信息文件

  5. 在 MIME 类型注册表中为该应用程序添加一个 MIME 键文件。 有关 MIME 键文件的更多信息,请参阅MIME 键文件

  6. 如果该应用程序使用新的 MIME 类型,请在 /usr/gnome/share/icons/theme_name/ icon_size/mimetypes 中为该 MIME 类型添加一个图标。For more information on icons and themes, see 第 3 章,安装主题.

  7. 要将该应用程序与一个 MIME 类型相关联,请在应用程序注册表中添加一个应用程序注册文件。 有关应用程序注册表的更多信息,请参阅为 MIME 类型注册应用程序