使用 Bun/TypeScript 编写的交互式工具,可根据 folder.kdl 描述同步 Linux XDG user-dirs 及自定义目录结构。
bun run src/index.ts \
--kdl ./folder.kdl \
--config ~/.config/user-dirs.dirs参数说明:
--kdl: KDL 布局文件路径,默认./folder.kdl。--config:user-dirs.dirs文件路径,默认~/.config/user-dirs.dirs。--dry-run: 仅输出计划与提示,不执行任何写操作。
- KDL 布局解析:
home { ... }树定义目录层级;user-dirs(desktop/download/...)可使用"新名称"重命名并支持嵌套。 - 迁移与备份:对 8 个固定 XDG 目录生成迁移计划,逐步确认;目标存在且非空时提供 备份后替换、合并、删除、跳过 选项。备份统一存储于
$HOME/.bak/<timestamp>/...。 - 配置同步:迁移后写回
user-dirs.dirs,写入前自动备份;流程结束可选择执行xdg-user-dirs-update。 - 自定义目录创建:对非 user-dirs 节点统一
mkdir -p,已存在则跳过。 - 安全模式:所有写操作均需确认;
--dry-run用于审阅计划。
项目依赖 Bun 1.3+,无需额外 npm 包。可参考 user-dirs.dirs.sample 与示例 folder.kdl 做 dry-run:
bun run src/index.ts --dry-run \
--config ./user-dirs.dirs.sample \
--kdl ./folder.kdl- 根节点必须为
home。 - 8 个 XDG 目录以英文小写键名:
desktop, download, templates, publicshare, documents, music, pictures, videos。 - 需要重命名时使用字符串值:
music "audio";普通目录仅保留名称(可继续嵌套子节点)。