出自 Arch Linux 中文维基

譯自 freedesktop.org

xdg-user-dirs 是一個幫助管理用戶常用目錄(如桌面文件夾和音樂文件夾)的工具。它還處理這些文件夾名稱的本地化(即翻譯)。
其工作原理是在登錄階段的早期運行 xdg-user-dirs-update(1) 程序。該程序會讀取一個配置文件和一組默認目錄,然後在用戶的主目錄中創建這些目錄的本地化版本,並在 $XDG_CONFIG_HOME/user-dirs.dirsXDG_CONFIG_HOME 默認為 ~/.config)中設置一個配置文件,供應用程式讀取以找到這些目錄。

大多數文件管理器會使用特殊圖標標識 XDG 用戶目錄。

安裝

安裝 xdg-user-dirs

注意: 某些桌面環境可能已默認安裝,例如 GNOME

創建默認目錄

可以用以下命令在 $HOME 下創建一整套默認的經本地化的用戶目錄:

$ xdg-user-dirs-update
提示:可以使用 LC_ALL=C.UTF-8 xdg-user-dirs-update --force 命令強制創建英文命名的目錄。

運行後該命令還會自動地:

  • 創建一個本地的 ~/.config/user-dirs.dirs 配置文件:應用程式通過他來查找使用特定帳號指定的用戶目錄。
  • 創建一個本地的 ~/.config/user-dirs.locale 配置文件:根據使用的 locale 指定語言。

用戶服務 xdg-user-dirs-update.service 也將默認安裝並啟用,以便在每次登錄會話開始時運行此命令,保持您的目錄是最新的。

創建自定義目錄

本地 ~/.config/user-dirs.dirs 和全局 /etc/xdg/user-dirs.defaults 配置文件使用以下環境變量格式指向用戶目錄:XDG_DIRNAME_DIR="$HOME/directory_name"。一個示例配置文件可能如下所示(這些都是模板目錄):

~/.config/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/桌面"
XDG_DOCUMENTS_DIR="$HOME/文檔"
XDG_DOWNLOAD_DIR="$HOME/下載"
XDG_MUSIC_DIR="$HOME/音樂"
XDG_PICTURES_DIR="$HOME/圖片"
XDG_PUBLICSHARE_DIR="$HOME/公共"
XDG_TEMPLATES_DIR="$HOME/模板"
XDG_VIDEOS_DIR="$HOME/視頻"

因為 xdg-user-dirs 會參照本地配置文件來了解正確的用戶目錄,所以可以自定義。比如若將 ~/.config/user-dirs.dirsXDG_DOWNLOAD_DIR 變量設為了 $HOME/Internet,那麼任何參照了該變量的程序都會改用這個目錄。

注意: 和其他的配置文件一樣,本地設定覆蓋全局設定。另外自定義的目錄要自己創建。

或者也可以用命令行修改默認目錄。下列命令會產生和上面一樣的效果:

$ xdg-user-dirs-update --set DOWNLOAD ~/Internet

查詢配置好的目錄

一旦設置完成,任何用戶目錄都可以通過 xdg-user-dirs 查看。例如,以下命令將顯示 Templates 目錄的位置,該目錄當然對應於本地配置文件中的 XDG_TEMPLATES_DIR 變量:

$ xdg-user-dir TEMPLATES
警告: xdg-user-dir 不應從未經檢查的輸入中獲取其參數,因為它會將參數直接傳遞給 eval,而不進行任何有效性檢查,代碼行如下:
eval echo \${XDG_${1}_DIR:-$HOME}
這意味著 xdg-user-dir 會從未經清理的輸入中執行任意代碼。除非上游修復了這個不安全的實現,否則 xdg-user-dir 應僅在使用硬編碼或經過嚴格審核的參數時使用。