XDG MIME 應用程式 - Arch Linux 中文维基

跳至內容

# XDG MIME 應用程式

出自 Arch Linux 中文维基

相關文章

- 桌面項
- 桌面環境
- 窗口管理器
- 默認應用程式
- xdg-utils

翻譯狀態：

- 本文（或部分內容）譯自 XDG MIME Applications，最近一次同步於 2026-07-20，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

XDG MIME 應用程式規範基於#共享 MIME 資料庫和桌面項，提供默認應用程式。

1. 應用程式通過桌面項描述它們能夠處理哪些 MIME 類型。
2. desktop-file-utils包 註冊了一個 pacman 鉤子，用於構建由桌面項處理的 MIME 類型的緩存資料庫，詳見 update-desktop-database(1)。
3. 應用程式可以通過將 XML 文件放置在 `/usr/share/mime/packages/` 中來安裝新的 MIME 類型。
4. shared-mime-info包 註冊了一個 pacman 鉤子，用於構建共享 MIME 信息資料庫緩存，詳見 update-mime-database(1)。
5. 桌面環境和用戶可以通過 mimeapps.list 文件更改默認應用程式並添加或刪除 MIME 類型與應用程式的關聯。

## 共享 MIME 資料庫

XDG 共享 MIME 信息資料庫規範促進了桌面環境之間的共享 MIME 資料庫，並允許應用程式輕鬆地在系統範圍內註冊新的 MIME 類型。

該資料庫是由軟體包在 `/usr/share/mime/packages/` 中安裝的 XML 文件構建的，使用來自 shared-mime-info包 的工具。

`/usr/share/mime/` 中的文件不應直接編輯，但可以在 `~/.local/share/mime/` 樹中為每個用戶維護單獨的資料庫。

「URI 方案處理 [...] 通過處理 `x-scheme-handler/foo` MIME 類型的應用程式來進行，其中 foo 是相關的 URI 方案。」[1]

### 新的 MIME 類型

這篇文章的某些內容需要擴充。

原因：將擴展名分配給現有 MIME 類型的過程是否不同？ (在 Talk:XDG MIME 應用程式 中討論)

此示例定義了一個新的 MIME 類型 `application/x-foobar`，並將其分配給任何以 .foo 結尾的文件。只需創建以下文件：

    ~/.local/share/mime/packages/application-x-foobar.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
        <mime-type type="application/x-foobar">
            <comment>foo 文件</comment>
            <icon name="application-x-foobar"/>
            <glob-deleteall/>
            <glob pattern="*.foo"/>
        </mime-type>
    </mime-info>

然後更新 MIME 資料庫：

    $ update-mime-database ~/.local/share/mime

當然，如果沒有桌面條目與 MIME 類型關聯，這不會產生任何效果。您可能需要創建新的桌面項或修改 mimeapps.list。

## mimeapps.list

XDG 標準是配置桌面環境最常用的方式。每個 MIME 類型的默認應用程式存儲在 `mimeapps.list` 文件中，該文件可以存儲在多個位置。它們按照以下順序搜索，前面的關聯優先於後面的關聯：

路徑 | 用途
--- | ---
`~/.config/mimeapps.list` | 用戶覆蓋
`/etc/xdg/mimeapps.list` | 系統範圍的覆蓋
`~/.local/share/applications/mimeapps.list` | （已廢棄）用戶覆蓋
`/usr/local/share/applications/mimeapps.list` `/usr/share/applications/mimeapps.list` | 分發提供的默認值

此外，還可以在名為 `桌面環境-mimeapps.list` 的文件中定義桌面環境特定的默認應用程式，其中 `桌面環境` 是桌面環境的名稱（來自 `XDG_CURRENT_DESKTOP` 環境變量）。例如，`/etc/xdg/xfce-mimeapps.list` 定義了 Xfce 的系統範圍默認應用程式覆蓋。這些特定桌面的覆蓋優先於相應的非特定桌面文件。例如，`/etc/xdg/xfce-mimeapps.list` 優先於 `/etc/xdg/mimeapps.list`，但仍會被 `~/.config/mimeapps.list` 覆蓋。

提示：雖然已廢棄，但許多應用程式仍然讀寫 `~/.local/share/applications/mimeapps.list`。為了簡化維護，可以將其符號連結到 `~/.config/mimeapps.list`：

    $ ln -s ~/.config/mimeapps.list ~/.local/share/applications/mimeapps.list

注意：您還可能會在這些位置找到名為 `defaults.list` 的文件。此文件類似於 `mimeapps.list`，但僅列出默認應用程式（而不是已添加/刪除的關聯）。它現在已廢棄，應手動與 `mimeapps.list` 合併。

要發現所有被掃描的文件，可以通過設置環境變量 `XDG_UTILS_DEBUG_LEVEL=2` 啟用調試模式：例如，`xdg-mime query default 類型` 命令將列印它搜索 MIME 信息的每個配置文件。

### 格式

考慮以下示例：

    mimeapps.list

    [Added Associations]
    image/jpeg=bar.desktop;baz.desktop
    video/H264=bar.desktop
    [Removed Associations]
    video/H264=baz.desktop
    [Default Applications]
    image/jpeg=foo.desktop

每個部分將一個或多個桌面條目分配給 MIME 類型。

- Added Associations 表示應用程式支持打開該 MIME 類型。例如，`bar.desktop` 和 `baz.desktop` 可以打開 JPEG 圖像。這可能會影響您在文件瀏覽器中右鍵點擊文件時看到的應用程式列表。
- Removed Associations 表示應用程式不支持該 MIME 類型。例如，`baz.desktop` 無法打開 H.264 視頻。
- Default Applications 表示該應用程式應為打開該 MIME 類型的默認選擇。例如，JPEG 圖像應使用 `foo.desktop` 打開。這隱式地在應用程式和 MIME 類型之間添加了一個關聯。如果有多個應用程式，它們會按順序嘗試。

每個部分都是可選的，如果不需要可以省略。

## 工具

雖然可以通過直接編輯 mimeapps.list 和#共享 MIME 資料庫來配置默認應用程式和 MIME 類型，但有許多工具可以簡化這一過程。這些工具也很重要，因為應用程式可能將文件的打開委託給這些工具，而不是自己嘗試實現 MIME 類型標準。

如果您使用的是桌面環境，應首先檢查它是否提供了自己的工具。應該優先使用這些工具，而不是其他替代方案。

官方的 xdg-utils 包含用於根據 XDG 標準管理 MIME 類型和默認應用程式的工具（xdg-mime）。最重要的是，它提供了 xdg-open，許多應用程式用它來用默認應用程式打開文件。

### lsdesktopf

lsdesktopfAUR 提供了幾種搜索 MIME 資料庫和桌面 MIME 條目的方法。

例如，要查看系統中所有與 MIME 類型 `video` 相關聯的 .desktop 文件的 MIME 擴展名，可以使用 `lsdesktopf --gm -gx video`，或要在 XML 資料庫文件中搜索，請使用 `lsdesktopf --gdx -gx video`。要快速了解有多少個且哪些 .desktop 文件可以與某個 MIME 類型關聯，請使用 `lsdesktopf --gen-mimeapps`。要查看 XML 資料庫文件中的所有文件名擴展名，可以使用 `lsdesktopf --gdx -gfx`。

### selectdefaultapplication

selectdefaultapplication-gitAUR 是一個 GUI 應用程式，列出了所有支持各種 MIME 類型的應用程式，並允許您快速將其設置為所有或一些它支持的 MIME 類型的默認應用程式（通過修改 `mimeapps.list`）。

它還顯示了「可讀」的名稱和文件擴展名，因此您不需要記住 MIME 類型的名稱。

### mime-tui

mime-tuiAUR 是一個 TUI（文本用戶界面）應用程式，它允許用戶通過兩種方式之一來編輯 mimetype 關聯（通過修改 `mimeapps.list`）：一種是按應用程式編輯（此應用程式應支持哪些 mimetype 類型？），另一種是按 mimetype 編輯（此 mimetype 類型應與哪些應用程式關聯？）。此外，它還能標記與已卸載應用程式關聯的 mimetype 類型。

## 故障排除

如果文件未通過您期望的默認應用程式打開，可能有多個原因。您可能需要檢查每種情況。

### 缺少桌面條目

需要一個桌面項來將應用程式與 MIME 類型關聯。確保存在這樣的條目，並且可以用它來（手動）打開文件。

### 缺少關聯

如果應用程式的桌面條目沒有在其 `MimeType` 鍵下指定 MIME 類型，它在需要打開該類型時將不會被考慮。編輯 mimeapps.list，將桌面文件與 MIME 類型關聯起來。

### 非默認應用程式

如果桌面條目已與 MIME 類型關聯，可能只是沒有設置為默認值。編輯 mimeapps.list，將其設置為默認關聯。

### 非標準關聯

應用程式可以忽略或僅部分實現 XDG 標準。檢查是否使用了已廢棄的文件，如 `~/.local/share/applications/mimeapps.list` 和 `~/.local/share/applications/defaults.list`。如果您嘗試從其他應用程式（如 Web 瀏覽器或文件管理器）打開文件，請檢查該應用程式是否有自己的方法來選擇默認應用程式。

### .desktop 文件中影響應用程式啟動的變量

這篇文章的某些內容需要擴充。

原因：此處暗示了 `MimeType` 條目缺失的情況（「即使一個包含必要 MIME 類型描述的應用程式⋯⋯」），儘管這是常見的錯誤原因。有些啟動器可能還會關聯在桌面文件中未顯式列出的 MIME 類型（例如 exo包）。其他環境特定的因素也在起作用，例如 `Terminal=true` 是否會產生影響，儘管後者應當在桌面項中進一步擴展。 (在 Talk:XDG MIME 應用程式 中討論)

支持該規範的桌面環境和文件管理器根據 .desktop 文件中的定義啟動程序。參見桌面項#應用程式項。

通常不需要配置打包的 .desktop 文件，但它可能並非沒有缺陷。即使一個包含必要 MIME 類型描述的應用程式在 .desktop 文件中的 `MimeType` 變量被用於關聯，它也可能無法正確啟動，根本無法啟動，或者啟動時未能打開文件。

例如，這可能發生在 `Exec` 變量缺少打開文件所需的內部選項，或缺少如何在菜單中顯示應用程式的配置。`Exec` 變量通常以 `%` 開頭；有關當前支持的選項，請參見 exec-variables。

以下表格列出了影響應用程式啟動的 .desktop 文件中主要的變量條目，如果它與 MIME 類型關聯。

變量名稱 | 示例 1 內容 | 示例 2 內容 | 描述
--- | --- | --- | ---
DBusActivatable | DBusActivatable=true | DBusActivatable=false | 應用程式與 D-Bus 交互。 另見配置： D-Bus。
MimeType | MimeType=application/vnd.oasis.opendocument.text | MimeType=application/vnd.sun.xml.math | 應用程式支持的 MIME 類型列表
StartupWMClass | StartupWMClass=google-chrome | StartupWMClass=xpad | 將窗口與擁有該窗口的應用程式關聯
Terminal | Terminal=true | Terminal=false | 在默認終端中啟動

### 空的 MIME 關聯 / 在 KDE 中打開菜單

此頁面或章節適合移動到 KDE#疑難解答。

附註： KDE 特有的故障排除。（在 Talk:XDG MIME 應用程式 討論）

安裝 archlinux-xdg-menu 並運行 `XDG_MENU_PREFIX=arch- kbuildsycoca6`，或將 `export XDG_MENU_PREFIX=plasma-` 添加到 `.xinitrc`。

分類：​

- Freedesktop.org
- 使用「模板:Move」標記的頁面或章節

XDG MIME 應用程式
新增話題