Dotfile manager — track, sync, and restore config files across machines
Project description
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dotfiles_tool-0.1.0.tar.gz.
File metadata
- Download URL: dotfiles_tool-0.1.0.tar.gz
- Upload date:
- Size: 13.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0da832ccea9399bd8bd37a427fc54794be3f0fe00f0c390df959074f017e2ed1
|
|
| MD5 |
ada19d62891968d9ed9dca7a2cf4235b
|
|
| BLAKE2b-256 |
69a8355f42927c214738c45f985a142d7e186ed0d37ec7934d83b0788dc5d89d
|
File details
Details for the file dotfiles_tool-0.1.0-py3-none-any.whl.
File metadata
- Download URL: dotfiles_tool-0.1.0-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e8a8b1f12c854a4f18b785c677d0337af1af89a5c937a4f37e75a480168bc46
|
|
| MD5 |
0897f099fdb9d9c8c4e15729088fe527
|
|
| BLAKE2b-256 |
a7135ff89eca50110e5afbca7661bafbb643946991942cdfb93751d01adb5524
|