TIL: Linux 家目录的新成员——Projects
Linux 家目录下那些固定的 Documents 、 Music 、 Pictures 文件夹不是随便起的,它们由 xdg-user-dirs 这个工具统一管理。最近这个工具更新到了 0.20 版本,新增了一个标准目录: Projects 。
是什么
xdg-user-dirs 是 freedesktop.org 定义的一套标准,用来管理用户家目录下的各类文件夹。它在 /etc/xdg/user-dirs.defaults 里定义了默认的目录名:
cat /etc/xdg/user-dirs.defaults
DESKTOP=Desktop DOWNLOAD=Downloads TEMPLATES=Templates PUBLICSHARE=Public DOCUMENTS=Documents MUSIC=Music PICTURES=Pictures VIDEOS=Videos PROJECTS=Projects
0.20 版本新增了 PROJECTS 这一项,用来存放项目文件,比如代码仓库、3D 打印设计、CAD 工程文件等。那些既不算"文档"也不算"下载"的东西终于有了自己的位置。
值得一提的是, xdg-user-dirs 会根据系统语言翻译目录名。在中文 locale 下运行 xdg-user-dirs-update 后,生成的配置里是:
XDG_PROJECTS_DIR="$HOME/项目"
没错,它把 Projects 翻译成了"项目"。如果你更喜欢英文目录名(很多开发者确实如此),可以手动编辑配置。
为什么值得关注
这个目录不只是"多了一个文件夹"。它的意义在于给应用提供了一个 约定好的 存放位置:
- IDE 可以默认在
Projects下创建新仓库,而不是让用户自己建~/dev、~/code、~/workspace这样的自定义目录 - Flatpak 沙箱应用可以针对
Projects统一授权文件访问,而不需要逐个授权 - 备份和同步工具可以把
Projects作为一个有意义的分类来处理,就像Documents和Pictures一样
有趣的是,这个需求最早在 2014 年就有人提出了,等了 11 年才被采纳。
怎么用
Arch 等 rolling release 发行版已经可以通过包管理器获得 0.20 版本:
pacman -Q xdg-user-dirs
xdg-user-dirs 0.20-1
安装后运行一次 xdg-user-dirs-update ,它会自动在家目录创建对应的文件夹,并更新 ~/.config/user-dirs.dirs 配置文件。已有的配置不会被覆盖:如果你之前已经自定义过某些目录,更新不会改动它们,只会添加新的 XDG_PROJECTS_DIR 。
不想要这个目录?直接删除就行, xdg-user-dirs-update 不会重新创建已删除的目录。想自定义位置,编辑 ~/.config/user-dirs.dirs :
# 把中文"项目"改成英文"Projects",或者其他你喜欢的名字 XDG_PROJECTS_DIR="$HOME/Projects"