跳转到内容

xdg-utils

来自 Arch Linux 中文维基
(重定向自Xdg-open

xdg-utils 提供了官方工具,用于管理 XDG MIME 应用程序

安装[编辑 | 编辑源代码]

安装 xdg-utils 包。

使用[编辑 | 编辑源代码]

环境变量[编辑 | 编辑源代码]

注意:正常运行的桌面环境应该会自动设置这些变量。本节仅在理解 xdg-utils 的工作原理时需要,即用于故障排除。

xdg-utils 尝试通过调用其提供的专用程序来与您的桌面环境集成,在适用的情况下。当前环境的评估如下[1]

  • 如果设置了标准化的 XDG_CURRENT_DESKTOP 环境变量,并且该值属于已识别的桌面环境,则使用相应的值。
  • 如果存在任何经典回退或特定环境变量,例如 KDE 的 KDE_FULL_SESSION,则使用相应的值。
  • 如果设置了遗留的 DESKTOP_SESSION 环境变量,并且该值属于已识别的桌面环境,则使用相应的值。

在此过程中,如果找到任何匹配项,则 DE 变量会被内部覆盖为检测到的桌面环境的标准化值。因此,DE 既是一个遗留的环境变量,也是 xdg-utils 的内部状态变量。例如,如果 XDG_CURRENT_DESKTOPKDExdg-utils 会将 DE 设置为 kde。如果没有找到匹配项,则会使用任何已存在的 DE 值, 这样 XDG_CURRENT_DESKTOP=KDE 就等于 XDG_CURRENT_DESKTOP 未设置并且 DE=kde。此实现细节值得注意,因为它导致如果桌面环境已被检测到,预设的 DE 会被忽略

xdg-utils 识别的环境变量值如下:

桌面环境 XDG_CURRENT_DESKTOP DE DESKTOP_SESSION
X-Generic1 generic
Cinnamon Cinnamon, X-Cinnamon cinnamon
Deepin Deepin, DEEPIN, deepin1 deepin
Enlightenment ENLIGHTENMENT1 enlightenment
GNOME GNOME2 gnome gnome
GNOME Flashback GNOME-Flashback, GNOME-Flashback:GNOME2 gnome gnome
KDE Plasma KDE kde
LXDE LXDE lxde LXDE
LXQt LXQt lxqt
MATE MATE mate mate
Xfce XFCE xfce xfce, xfce4, Xfce Session
  1. 这不是一个已在 freedesktop.org 上注册的环境。
  2. GNOME 变体,包括 GNOME Classic 模式,都被 xdg-utils 视为相同的。

请注意,这仅仅是 xdg-utils 提供的脚本能够检测的列表。脚本仍会在以下条件下执行通用的、与环境无关的操作:

  • 请求了通用例程,使用 XDG_CURRENT_DESKTOP=X-GenericDE=generic
  • 环境检测失败。所有相关的环境变量都无法识别或未设置,而经典回退也没有揭示任何信息。
  • 执行了特定环境的操作,但失败了,例如由于缺少程序。

xdg-mime[编辑 | 编辑源代码]

xdg-mime(1) 是一个用于直接查询和修改默认 MIME 应用程序的脚本。它在其他脚本中使用,例如 xdg-open,并且还是一个有用的故障排除工具。

确定文件的 MIME 类型:

$ xdg-mime query filetype photo.jpeg
image/jpeg

确定 MIME 类型的默认应用程序:

$ xdg-mime query default image/jpeg
gimp.desktop

更改 MIME 类型的默认应用程序:

$ xdg-mime default feh.desktop image/jpeg

将文件管理器设置为默认文件管理器(例如 -Thunar):

$ xdg-mime default thunar.desktop inode/directory

调试 MIME 类型的默认应用程序:

$ env XDG_UTILS_DEBUG_LEVEL=10  xdg-mime query default text/html
Checking /home/user/.config/mimeapps.list
Checking /home/user/.local/share/applications/defaults.list and /home/user/.local/share/applications/mimeinfo.cache
Checking /usr/local/share/applications/defaults.list and /usr/local/share/applications/mimeinfo.cache
Checking /usr/share/applications/defaults.list and /usr/share/applications/mimeinfo.cache
qutebrowser.desktop

当需要确定文件的 MIME 类型时,xdg-mime 会尝试使用适合桌面环境的程序:

桌面环境 程序
Cinnamon gio glib2
GNOME
GNOME Flashback
LXDE
MATE
Xfce
Deepin
Enlightenment
LXQt
KDE Plasma kmimetypefinder kde-cli-tools

在通用情况下,xdg-mime 将:

xdg-open[编辑 | 编辑源代码]

xdg-open(1) 是一个资源打开器,被许多应用程序使用,遵循 XDG MIME 应用程序标准,并尽可能与系统的桌面环境集成。

如果检测到桌面环境,将调用其提供的处理程序 [2]:

桌面环境 程序
Cinnamon gio glib2
GNOME
GNOME Flashback
MATE
Deepin dde-open deepin-api
Enlightenment enlightenment_open enlightenment
KDE Plasma kde-open1 kde-cli-tools
LXDE pcmanfm pcmanfm
LXQt
Xfce exo-open2 exo
  1. 如果 KDE_SESSION_VERSION 未设置,则会使用 kfmclient 来自 konqueror。不过,KDE Plasma 应该始终设置此变量。
  2. 还会尝试使用来自 glib2gio

在通用情况下,xdg-open 将:

提示:要查看 xdg-open 将使用哪个后端,请设置 XDG_UTILS_DEBUG_LEVEL=3

由于 xdg-mime 依赖于 perl-file-mimeinfo 包来实现 XDG MIME 应用程序标准,如果您没有使用桌面环境,应该安装 perl-file-mimeinfo,或考虑使用其他资源打开器

xdg-settings[编辑 | 编辑源代码]

请参见 xdg-settings(1)

设置所有 Web MIME 类型使用单个应用程序的快捷方式:

$ xdg-settings set default-web-browser firefox.desktop

设置 URL 方案的默认应用程序的快捷方式:

$ xdg-settings set default-url-scheme-handler irc xchat.desktop

提示与技巧[编辑 | 编辑源代码]

URL 方案处理程序[编辑 | 编辑源代码]

要设置 URL 方案的默认应用程序,您可能还需要更改 x-scheme-handler/* MIME 类型的默认应用程序:

$ xdg-mime default firefox.desktop x-scheme-handler/https x-scheme-handler/http