跳转到内容

xdg-utils

来自 Arch Linux 中文维基

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_DESKTOP 是 KDE,xdg-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-Generic 或 DE=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. 还会尝试使用来自 glib2包 的 gio。

在通用情况下,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