Skip to main content

Dotfile manager — track, sync, and restore config files across machines

Project description

dotman

Dotfile manager — track, sync, and restore config files across machines.

PyPI Python License Stars


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dotfiles_tool-0.1.0.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dotfiles_tool-0.1.0-py3-none-any.whl (15.4 kB view details)

Uploaded Python 3

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

Hashes for dotfiles_tool-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0da832ccea9399bd8bd37a427fc54794be3f0fe00f0c390df959074f017e2ed1
MD5 ada19d62891968d9ed9dca7a2cf4235b
BLAKE2b-256 69a8355f42927c214738c45f985a142d7e186ed0d37ec7934d83b0788dc5d89d

See more details on using hashes here.

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

Hashes for dotfiles_tool-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5e8a8b1f12c854a4f18b785c677d0337af1af89a5c937a4f37e75a480168bc46
MD5 0897f099fdb9d9c8c4e15729088fe527
BLAKE2b-256 a7135ff89eca50110e5afbca7661bafbb643946991942cdfb93751d01adb5524

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page