暗无天日

=============>DarkSun的个人博客

TIL: Linux 家目录的新成员——Projects

Linux 家目录下那些固定的 DocumentsMusicPictures 文件夹不是随便起的,它们由 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 作为一个有意义的分类来处理,就像 DocumentsPictures 一样

有趣的是,这个需求最早在 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"

参考:Linux Gets a New "Projects" Directory - It's FOSS

linux TIL xdg