譯自 freedesktop.org:
- xdg-user-dirs 是一個幫助管理用戶常用目錄(如桌面文件夾和音樂文件夾)的工具。它還處理這些文件夾名稱的本地化(即翻譯)。
- 其工作原理是在登錄階段的早期運行 xdg-user-dirs-update(1) 程序。該程序會讀取一個配置文件和一組默認目錄,然後在用戶的主目錄中創建這些目錄的本地化版本,並在
$XDG_CONFIG_HOME/user-dirs.dirs
(XDG_CONFIG_HOME
默認為~/.config
)中設置一個配置文件,供應用程式讀取以找到這些目錄。
大多數文件管理器會使用特殊圖標標識 XDG 用戶目錄。
安裝
創建默認目錄
可以用以下命令在 $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.dirs
下 XDG_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
應僅在使用硬編碼或經過嚴格審核的參數時使用。