dotcli: add dot setup folders (XDG short-name migration)
Adds a dot setup subcommand family (idempotent, re-runnable machine-setup tasks) with a folders task that brings the 8 standard XDG user directories under a fixed short-name convention (Desktop -> .desktop, Documents -> doc, Downloads -> dwn, Music -> mus, Pictures -> pic, Videos -> vid, Templates/Public -> .ignoreme), hardcoded rather than read from ~/.config/user-dirs.dirs -- that file is a separate, manually tracked dotfile whose values can drift or go stale, and the migration must not depend on it being correct. The nested Pictures/Screenshots folder is renamed to pic/screenshots in the same pass. Content left behind in a legacy full-named folder by a fresh XDG-defaults install -- empty or not -- is merged into its short-named replacement. A same-named collision between a legacy folder and its target is never overwritten: it is skipped, reported, and the legacy folder is left in place rather than deleted while something in it could not be merged. --dry-run previews what would move/skip without touching the filesystem. xdg-user-dirs-update runs once afterward to notify running apps/portals.
This commit is contained in:
16
.config/user-dirs.dirs
Normal file
16
.config/user-dirs.dirs
Normal file
@@ -0,0 +1,16 @@
|
||||
# This file is written by xdg-user-dirs-update
|
||||
# If you want to change or add directories, just edit the line you're
|
||||
# interested in. All local changes will be retained on the next run.
|
||||
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||
# absolute path. No other format is supported.
|
||||
#
|
||||
XDG_DESKTOP_DIR="$HOME/.desktop"
|
||||
XDG_DOWNLOAD_DIR="$HOME/dwn"
|
||||
XDG_TEMPLATES_DIR="$HOME/.ignoreme"
|
||||
XDG_PUBLICSHARE_DIR="$HOME/.ignoreme"
|
||||
XDG_DOCUMENTS_DIR="$HOME/doc"
|
||||
XDG_MUSIC_DIR="$HOME/mus"
|
||||
XDG_PICTURES_DIR="$HOME/pic"
|
||||
XDG_VIDEOS_DIR="$HOME/vid"
|
||||
XDG_PROJECTS_DIR="$HOME/wrk"
|
||||
Reference in New Issue
Block a user