12.3. 配置文件关联

12.3.1. 什么是 MIME 类型?

在 GNOME 系统中,通过 MIME(多用途 Internet 邮件扩展)的类型来识别文件格式。 GNOME 桌面使用 MIME 类型来:
  • 确定默认用哪个应用程序打开某种特定的文件格式。
  • 注册同样能打开某种特定文件格式的其它应用程序。
  • 在例如 文件 应用程序的文件属性对话框中,提供了描述文件类型的字符串。
  • 在例如 文件 应用程序的文件属性对话框中,提供了代表某种特定文件格式的图标。
MIME 类型名字遵循指定的格式:
media-type/subtype-identifier

例 12.7. MIME 类型格式

image/jpeg”是 MIME 类型的一个例子,其中“image”是媒体类型,“jpeg”是子类型识别符。
GNOME 系统根据 freedesktop.org Shared MIME Info(freedesktop.org 共享 MIME 信息)规范来确定:
  • 存储所有 MIME 类型说明文件的位置,包括计算机范围的位置和用户特定的位置。
  • 如何注册一种 MIME 类型,使得桌面环境知道哪些应用程序可以用来打开某种特定的文件格式。
  • 用户如何更改哪种应用程序打开哪种文件格式。

12.3.1.1. 什么是 MIME 数据库?

MIME 数据库是 GNOME 系统用来存储关于已知 MIME 类型信息的所有 MIME 类型说明文件的集合。
从系统管理员的角度来看,MIME 数据库最重要的部分是 /usr/share/mime/packages/ 目录,其中存储着对已知 MIME 类型信息进行说明的 MIME 类型相关文件。这种文件的一个例子是 /usr/share/mime/packages/freedesktop.org.xml,它对默认设置下系统中可用的标准 MIME 类型的信息作了说明。该文件由 shared-mime-info 软件包提供。

12.3.1.2. 获得更多信息

描述 MIME 类型系统的详细信息,请参见位于网站 freedesktop.org 上的〈freedesktop.org Shared MIME Info specification(freedesktop.org 共享 MIME 信息说明)〉。

12.3.2. 为所有用户添加某种自定义的 MIME 类型

如需为系统上的所有用户添加一个自定义的 MIME 类型,并为该 MIME 类型注册一个默认的应用程序,您需要在 /usr/share/mime/packages/ 目录下创建一个新的 MIME 类型说明文件,在 /usr/share/applications/ 目录下创建一个 .desktop 文件。

过程 12.3. 为所有用户添加自定义的“application/x-newtype”MIME 类型。

  1. 创建 /usr/share/mime/packages/application-x-newtype.xml 文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
      <mime-type type="application/x-newtype">
        <comment>new mime type</comment>
        <glob pattern="*.xyz"/>
      </mime-type>
    </mime-info>
    上述 application-x-newtype.xml 样本文件定义了一种新的 MIME 类型“application/x-newtype”,并指定拓展名是.xyz 的文件为该 MIME 类型。
  2. 创建一个名为例如 myapplication1.desktop 的新的 .desktop 文件,并将它放置在 /usr/share/applications/ 目录下:
    [Desktop Entry]
    Type=Application
    MimeType=application/x-newtype
    Name=My Application 1
    Exec=myapplication1
    上述 myapplication1.desktop 样本文件将“application/x-newtype”MIME 类型与一个名为 My Application 1 的应用程序相关联,该应用程序由 myapplication1 命令运行。
  3. 请以 root 身份更新 MIME 数据库以使您的更改生效:
    # update-mime-database /usr/share/mime
  4. 请以 root 身份更新应用程序数据库:
    # update-desktop-database /usr/share/applications
  5. 如需确认您已成功将 *.xyz 文件与“application/x-newtype”MIME 类型相关联,首先需要创建一个空白文档,例如文件 test.xyz
    $ touch test.xyz
    然后运行 gvfs-info 命令:
    $ gvfs-info test.xyz | grep "standard::content-type"
      standard::content-type: application/x-newtype
  6. 如需确认 myapplication1.desktop 文件已被正确设置为“application/x-newtype”MIME 类型的默认注册应用程序,请运行 gvfs-mime --query 命令:
    $ gvfs-mime --query application/x-newtype
    Default application for 'application/x-newtype': myapplication1.desktop
    Registered applications:
    	myapplication1.desktop
    Recommended applications:
    	myapplication1.desktop

12.3.3. 为个别用户添加自定义的 MIME 类型

如需为个别用户添加自定义的 MIME 类型,并为该 MIME 类型注册一个默认的应用程序,您需要在 ~/.local/share/mime/packages/ 目录下创建一个 新的 MIME 类型说明文件,并在 ~/.local/share/applications/ 目录下创建一个 .desktop 文件。

过程 12.4. 为个别用户添加自定义的 application/x-newtype MIME 类型

  1. 创建 ~/.local/share/mime/packages/application-x-newtype.xml 文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
      <mime-type type="application/x-newtype">
        <comment>new mime type</comment>
        <glob pattern="*.xyz"/>
      </mime-type>
    </mime-info>
    上述 application-x-newtype.xml 样本文件定义了一种新的 MIME 类型“application/x-newtype”,并指定拓展名是 .xyz 的文件为该 MIME 类型。
  2. 创建一个名为例如 myapplication1.desktop 的新的 .desktop 文件,并将它放置在 ~/.local/share/applications/ 目录下:
    [Desktop Entry]
    Type=Application
    MimeType=application/x-newtype
    Name=My Application 1
    Exec=myapplication1
    上述 myapplication1.desktop 样本文件将 application/x-newtype MIME 类型与一个名为 My Application 1 的应用程序相关联,该应用程序由 myapplication1 命令运行。
  3. 更新 MIME 数据库以使您的更改生效:
    $ update-mime-database ~/.local/share/mime
  4. 更新应用程序数据库:
    $ update-desktop-database ~/.local/share/applications
  5. 如需确认您已成功将 *.xyz 文件与“application/x-newtype”MIME 类型相关联,首先需要创建一个空白文档,例如文件 test.xyz
    $ touch test.xyz
    然后运行 gvfs-info 命令:
    $ gvfs-info test.xyz | grep "standard::content-type"
      standard::content-type: application/x-newtype
  6. 如需确认 myapplication1.desktop 文件已被正确设置为“application/x-newtype”MIME 类型的注册默认应用程序,请运行 gvfs-mime --query 命令:
    $ gvfs-mime --query application/x-newtype
    Default application for 'application/x-newtype': myapplication1.desktop
    Registered applications:
    	myapplication1.desktop
    Recommended applications:
    	myapplication1.desktop

12.3.4. 为所有用户覆盖默认注册的应用程序

/usr/share/applications/defaults.list 文件说明了哪个应用程序被注册默认打开特定的 MIME 类型。如需为系统所有用户覆盖系统默认设置,您需要创建一个 /usr/share/applications/mimeapps.list 文件,其中包括了您想要覆盖的默认注册应用程序所对应的 MIME 类型的清单。

过程 12.5. 为所有用户覆盖默认注册的应用程序

  1. 查阅 /usr/share/applications/defaults.list 文件来确定您想要更改的默认注册应用程序所对应的 MIME 类型。例如,如下 defaults.list 样本文件中说明了 text/htmlapplication/xhtml+xml MIME 类型所对应的默认注册应用程序:
    [Default Applications]
    text/html=firefox.desktop
    application/xhtml+xml=firefox.desktop
    通过规定对应的 .desktop 文件(firefox.desktop)来定义默认应用程序(Firefox)。其它应用程序的 .desktop 文件的默认位置是 /usr/share/applications/
  2. 创建 /usr/share/applications/mimeapps.list 文件。在文件中说明 MIME 类型和它们对应的默认注册应用程序:
    [Default Applications]
    text/html=myapplication1.desktop
    application/xhtml+xml=myapplication2.desktop
    
    [Added Associations]
    text/html=myapplication1.desktop;
    application/xhtml+xml=myapplication2.desktop;
    这将 text/html MIME 类型的默认注册应用程序设置为 myapplication1.desktop,将 application/xhtml+xml MIME 类型的默认注册应用程序设置为 myapplication2.desktop
    为了使这些设置正确起作用,请确保 myapplication1.desktop 文件和 myapplication2.desktop 文件都放置于 /usr/share/applications/ 目录下。
  3. 您可以使用 gvfs-mime --query 命令来确认默认注册应用程序已正确设置:
    $ gvfs-mime --query text/html
    Default application for 'text/html': myapplication1.desktop
    Registered applications:
    	myapplication1.desktop
    	firefox.desktop
    Recommended applications:
    	myapplication1.desktop
    	firefox.desktop

12.3.5. 为个别用户覆盖默认注册的应用程序

/usr/share/applications/defaults.list 文件说明了哪个应用程序被注册默认打开特定的 MIME 类型。如需为个别用户覆盖系统默认设置,您需要创建一个 ~/.local/share/applications/mimeapps.list 文件,其中包括了您想要覆盖的默认注册应用程序所对应的 MIME 类型的清单。

过程 12.6. 为个别用户覆盖默认注册的应用程序

  1. 查阅 /usr/share/applications/defaults.list 文件来确定您想要更改的默认注册应用程序所对应的 MIME 类型。例如,如下 defaults.list 样本文件中说明了 text/htmlapplication/xhtml+xml MIME 类型所对应的默认注册应用程序:
    [Default Applications]
    text/html=firefox.desktop
    application/xhtml+xml=firefox.desktop
    通过规定对应的 .desktop 文件(firefox.desktop)来定义默认应用程序(Firefox)。其它应用程序的 .desktop 文件的系统默认位置是 /usr/share/applications/。个别用户的 .desktop 文件可以储存在 ~/.local/share/applications/ 中。
  2. 创建 ~/.local/share/applications/mimeapps.list 文件。在文件中说明 MIME 类型和它们对应的默认注册应用程序:
    [Default Applications]
    text/html=myapplication1.desktop
    application/xhtml+xml=myapplication2.desktop
    
    [Added Associations]
    text/html=myapplication1.desktop;
    application/xhtml+xml=myapplication2.desktop;
    这将 text/html MIME 类型的默认注册应用程序设置为 myapplication1.desktop,将 application/xhtml+xml MIME 类型的默认注册应用程序设置为 myapplication2.desktop
    为了使这些设置正确起作用,请确保 myapplication1.desktop 文件和 myapplication2.desktop 文件都放置于 /usr/share/applications/ 目录下。
  3. 您可以使用 gvfs-mime --query 命令来确认默认注册应用程序已正确设置:
    $ gvfs-mime --query text/html
    Default application for 'text/html': myapplication1.desktop
    Registered applications:
    	myapplication1.desktop
    	firefox.desktop
    Recommended applications:
    	myapplication1.desktop
    	firefox.desktop