_____ _
| __ \ | |
| | | | ___ | |_ _ __ ___ __ _ _ __
| | | |/ _ \| __| '_ ` _ \ / _` | '_ \
| |__| | (_) | |_| | | | | | (_| | | | |
|_____/ \___/ \__|_| |_| |_|\__,_|_| |_|
It was originally named dotshadow, since I wanted to try some different approaches to manage dotfiles… but those ideas didn’t really work out.
But hey, here it is — my own take on a dotfile manager, now called Dotman.
Dotman is highly inspired by GNU Stow. But it works in reverse — and maybe even better (I hope).
This is an early release, so Dotman is still fresh and evolving. Things might break, and it definitely needs more testing and refinement.
init
- initialize dotman storestrack <file>
- copy a file into the store and replace it with symlinkrestore <file|all>
- restore a broken/missing link
sync
- track file hashes and detect changesstatus
- show which files are dirty, missing or brokenuntrack
- undo tracking (optionally for restoring file)
Dotman is designed to be simple and intuitive — no reverse folder magic or clunky layout rules like GNU Stow. Just track files in-place and let Dotman do the rest.
-
Init
dotman init
Creates a .dotfiles/ store in your home directory.
-
Track a file
dotman track ~/Desktop/test.md
What it does:
- Copies the file to .dotfiles/Desktop/test.md
- Replaces the original with a symlink
- Stores a mapping in .dotfiles/index.json
So now:
~/Desktop/test.md → ~/.dotfiles/Desktop/test.md
-
Restore a file
Let’s say you deleted a file (but still have it in your dotman store):
dotman restore ~/Desktop/test.md
Or restore everything at once:
dotman restore --all
This will re-create the symlinks using whatever is stored in
.dotfiles/index.json.
Download the latest binary from the Releases page.
chmod +x dotman
mv dotman /usr/local/bin
Dotman does not reverse your folder structure.
You track files from where they are (usually in $HOME
), and Dotman keeps a copy of them in .dotfiles/
. It handles linking, indexing, and (soon) syncing — while staying out of your way.
No weirdness. No reverse symlinks. No need to move all your dotfiles into one mega repo manually.
This project is still evolving, and any feedback, ideas, or issues are very welcome.
Feel free to open an issue or just yell at me nicely.
Made with love and a lot of ln -s
by me.