xdg-utils
xdg-utils 提供了官方工具,用於管理 XDG MIME 應用程式。
- 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) - 獲取或設置默認的 Web 瀏覽器和 URL 處理程序
安裝[編輯 | 編輯原始碼]
使用[編輯 | 編輯原始碼]
環境變量[編輯 | 編輯原始碼]
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-Generic 1 |
generic |
– |
Cinnamon | Cinnamon , X-Cinnamon |
cinnamon |
– |
Deepin | Deepin , DEEPIN , deepin 1 |
deepin |
– |
Enlightenment | ENLIGHTENMENT 1 |
enlightenment |
– |
GNOME | GNOME 2 |
gnome |
gnome
|
GNOME Flashback | GNOME-Flashback , GNOME-Flashback:GNOME 2 |
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 會嘗試使用適合桌面環境的程序:
桌面環境 | 程序 | 包 |
---|---|---|
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 應用程式標準,並儘可能與系統的桌面環境集成。
如果檢測到桌面環境,將調用其提供的處理程序 [2]:
桌面環境 | 程序 | 包 |
---|---|---|
Cinnamon | gio
|
glib2包 |
GNOME | ||
GNOME Flashback | ||
MATE | ||
Deepin | dde-open |
deepin-api包 |
Enlightenment | enlightenment_open
|
enlightenment包 |
KDE Plasma | kde-open 1 |
kde-cli-tools包 |
LXDE | pcmanfm |
pcmanfm包 |
LXQt | – | – |
Xfce | exo-open 2 |
exo包 |
- 如果
KDE_SESSION_VERSION
未設置,則會使用kfmclient
來自 konqueror包。不過,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 應用程式標準,如果您沒有使用桌面環境,應該安裝 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