xdg-utils
xdg-utils 提供用于管理 XDG MIME Applications 的官方工具。
- xdg-desktop-menu(1) - 安装桌面菜单项
- xdg-desktop-icon(1) - 将 桌面条目 复制到用户的桌面
- xdg-email(1) - 在用户首选的电子邮件客户端中撰写新邮件,可能已填写主题和其他信息
- xdg-icon-resource(1) - 安装图标资源
- xdg-mime(1) - 查询和安装 MIME 类型及关联
- xdg-open(1) - 在用户首选的应用程序中打开文件或 URI
- xdg-screensaver(1) - 启用、禁用或挂起屏幕保护程序
- xdg-settings(1) - 获取或设置默认网页浏览器和 URL 处理程序
安装
安装 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 |
- 这不是一个 在 freedesktop.org 注册的环境。
- 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 会尝试使用适合桌面环境的程序。
| 桌面环境 | 程序 | 软件包 (Package) |
|---|---|---|
| Cinnamon | gio
|
glib2 |
| GNOME | ||
| GNOME Flashback | ||
| LXDE | ||
| MATE | ||
| Xfce | ||
| Deepin | – | – |
| Enlightenment | ||
| LXQt | ||
| KDE Plasma | kmimetypefinder |
kde-cli-tools |
在通用情况下,xdg-mime 将:
- 委托给 mimetype(如果存在)。需要 perl-file-mimeinfo 软件包已安装。
- 委托给 file(如果存在)。
xdg-open
xdg-open(1) 是一个由许多应用程序使用的 资源打开器,它实现了 XDG MIME Applications 标准,同时尽可能多地与系统的桌面环境集成。
如果检测到桌面环境,则会调用其提供的处理程序:[2]
| 桌面环境 | 程序 | 软件包 (Package) |
|---|---|---|
| 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 |
- 如果
KDE_SESSION_VERSION未设置,则将改用来自 konqueror 的kfmclient。不过,KDE Plasma 在任何情况下都应设置此变量。 - 来自 glib2 的
gio也将被尝试。
在通用情况下,xdg-open 将:
- 查询 #xdg-mime 以获取与资源关联的默认桌面条目,解析该桌面条目,并执行其命令。
- 委托给 run-mailcap(如果存在)。需要 run-mailcapAUR 软件包已安装。
- 委托给 mimeopen(如果存在)。需要 perl-file-mimeinfo 软件包已安装。
XDG_UTILS_DEBUG_LEVEL=3。由于 xdg-mime 依赖于 perl-file-mimeinfo 软件包来实现 XDG MIME Applications 标准,如果您不使用桌面环境,则应安装 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