dotman
Dotfile manager — track, sync, and restore config files across machines.
dotman is a fast, terminal-native dotfile manager that keeps your configuration files in sync across all your machines. It moves tracked files into a central dotfiles directory, creates symlinks at their original locations, and uses git to sync changes. Profiles let you maintain separate file sets for work, home, and server environments — all protected by optional AES-256-GCM encryption for sensitive configs.
- Symlink management — Move files to your dotfiles repo; symlinks stay in place transparently
- Git sync — Commit, push, and pull with a single command to keep machines in sync
- Profiles — Separate dotfile sets for
work,home,server, or any context - Diff view — See exactly what changed since your last backup
- Backup & restore — Timestamped snapshots; one command to restore all symlinks on a fresh machine
- AES-256-GCM encryption — Protect sensitive files (SSH keys, API tokens) at rest
- Rich terminal UI — Color-coded status tables, panels, and progress output
Installation
pip install dotfiles-tool
Usage
# Initialize dotman
dotman init --dir ~/.dotfiles
# Start tracking config files
dotman track ~/.bashrc ~/.vimrc ~/.tmux.conf
# Check status
dotman status
dotman list
# Sync to remote
dotman sync --init --remote git@github.com:you/dotfiles.git
dotman sync --push -m "add tmux config"
# Set up on a new machine
git clone git@github.com:you/dotfiles.git ~/.dotfiles
dotman restore
# Encrypt sensitive files
dotman encrypt ~/.ssh/config --password mysecret
dotman decrypt ~/.ssh/config.enc --password mysecret
Commands
| Command | Description |
|---|---|
dotman init |
Initialize dotfiles directory and git repo |
dotman track <files> |
Track file(s) — move to dotfiles dir and create symlinks |
dotman untrack <files> |
Remove tracking and restore files to original location |
dotman list |
List all tracked files with status |
dotman status |
Show overall status: tracked count, git state, profile |
dotman restore |
Re-create symlinks (use on a fresh machine after cloning) |
dotman diff <file> |
Show diff between current file and last backup |
dotman backup [files] |
Create timestamped backups of tracked files |
dotman sync |
Commit + push (or pull) dotfiles via git |
dotman log |
Show git commit history of dotfiles repo |
dotman profile list |
List all profiles |
dotman profile create <name> |
Create a new profile |
dotman profile switch <name> |
Switch active profile |
dotman profile delete <name> |
Delete a profile |
dotman profile export <name> <file> |
Export profile manifest to JSON |
dotman profile import <file> |
Import profile manifest |
dotman encrypt <file> |
Encrypt a file with AES-256-GCM |
dotman decrypt <file> |
Decrypt a dotman-encrypted file |
Configuration
dotman stores its config at ~/.config/dotman/config.json:
{
"dotfiles_dir": "~/.dotfiles",
"git_remote": "git@github.com:you/dotfiles.git",
"active_profile": "default",
"encrypt_secrets": false
}
Override the config location with DOTMAN_HOME:
export DOTMAN_HOME=/custom/path
Profiles
Profiles let you group dotfiles by context:
dotman profile create work
dotman track ~/.config/work-tool.conf --profile work
dotman profile create server
dotman track ~/.nanorc --profile server
# Switch active profile
dotman profile switch work
# Export/import for sharing
dotman profile export work work-manifest.json
dotman profile import work-manifest.json
License
MIT © shazeus
Metadata
Release files for dotfiles-tool 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dotfiles_tool-0.1.0.tar.gz | 13.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dotfiles_tool-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.5 kB
Release files / dotfiles_tool-0.1.0.tar.gz
| Download URL | dotfiles_tool-0.1.0.tar.gz |
|---|---|
| Size | 13.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0da832ccea9399bd8bd37a427fc54794be3f0fe00f0c390df959074f017e2ed1
|
|
BLAKE2b-256 checksum How to use checksums |
69a8355f42927c214738c45f985a142d7e186ed0d37ec7934d83b0788dc5d89d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|
Release files / dotfiles_tool-0.1.0-py3-none-any.whl
| Download URL | dotfiles_tool-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5e8a8b1f12c854a4f18b785c677d0337af1af89a5c937a4f37e75a480168bc46
|
|
BLAKE2b-256 checksum How to use checksums |
a7135ff89eca50110e5afbca7661bafbb643946991942cdfb93751d01adb5524
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.13
|