 
Powerful Raycast extension for dotfile management
A powerful Raycast extension for managing your dotfiles with ease. Keep your configuration files synchronized between your local machine and your dotfiles repository.
DotMate expects your dotfiles repository to have a specific structure:
your-dotfiles-repo/
├── config/
│   ├── shell/
│   │   ├── aliases
│   │   ├── env
│   │   ├── exports
│   │   ├── functions
│   │   ├── inputrc
│   │   └── path
│   ├── zsh/
│   │   ├── zlogin
│   │   ├── zlogout
│   │   ├── zprofile
│   │   ├── zshenv
│   │   ├── zshrc
│   │   └── p10k.zsh
│   ├── bash/
│   │   ├── bash_login
│   │   ├── bash_logout
│   │   ├── bash_profile
│   │   ├── bashrc
│   │   └── profile
│   ├── fish/
│   │   └── config.fish
│   ├── starship/
│   │   └── starship.toml
│   ├── git/
│   │   ├── attributes
│   │   ├── config
│   │   ├── gh-config.yml
│   │   ├── glab-config.yml
│   │   ├── gitconfig
│   │   ├── gitignore
│   │   └── gitignore_global
│   ├── vim/
│   │   └── vimrc
│   ├── nvim/
│   │   └── init.lua
│   ├── emacs/
│   │   ├── emacs
│   │   └── init.el
│   ├── vscode/
│   │   ├── keybindings.json
│   │   ├── mcp.json
│   │   ├── settings.json
│   │   └── vscode-extensions
│   ├── zed/
│   │   └── settings.json
│   ├── kitty/
│   │   └── kitty.conf
│   ├── alacritty/
│   │   └── alacritty.yml
│   ├── wezterm/
│   │   └── wezterm.lua
│   ├── ghostty/
│   │   └── config
│   ├── iterm2/
│   │   └── com.googlecode.iterm2.plist
│   ├── warp/
│   │   └── dev.warp.Warp-Stable.plist
│   ├── terminal/
│   │   └── com.apple.Terminal.plist
│   ├── tmux/
│   │   ├── tmux.conf
│   │   └── tmux.conf.xdg
│   ├── screen/
│   │   └── screenrc
│   ├── ruff/
│   │   └── ruff.toml
│   ├── python/
│   │   ├── flake8
│   │   └── pylintrc
│   ├── prettier/
│   │   ├── prettierignore
│   │   ├── prettierrc
│   │   └── prettierrc.json
│   ├── editor/
│   │   └── editorconfig
│   ├── clang/
│   │   └── clang-format
│   ├── rust/
│   │   ├── cargo-config.toml
│   │   └── rustfmt.toml
│   ├── eslint/
│   │   ├── eslintrc.js
│   │   ├── eslintrc.json
│   │   └── eslintignore
│   ├── stylelint/
│   │   ├── stylelintrc
│   │   ├── stylelintrc.json
│   │   └── stylelintignore
│   ├── shellcheck/
│   │   └── shellcheckrc
│   ├── bat/
│   │   └── config
│   ├── delta/
│   │   └── delta.toml
│   ├── tldr/
│   │   └── config.json
│   ├── fzf/
│   │   ├── fzf.bash
│   │   └── fzf.zsh
│   ├── ripgrep/
│   │   └── ripgreprc
│   ├── ignore/
│   │   ├── agignore
│   │   └── ignore
│   ├── net/
│   │   ├── curlrc
│   │   └── wgetrc
│   ├── asdf/
│   │   └── tool-versions
│   ├── sdkman/
│   │   └── config
│   ├── pyenv/
│   │   └── version
│   ├── rbenv/
│   │   └── version
│   ├── nodenv/
│   │   └── version
│   ├── swiftenv/
│   │   └── version
│   ├── ruby/
│   │   ├── gemrc
│   │   ├── irbrc
│   │   └── pryrc
│   ├── go/
│   │   └── env
│   ├── node/
│   │   ├── npmrc
│   │   ├── pnpmrc
│   │   ├── yarnrc
│   │   └── yarnrc.yml
│   ├── brew/
│   │   └── Brewfile
│   ├── ssh/
│   │   ├── config
│   │   └── known_hosts
│   └── gdb/
│       ├── gdbinit
│       └── gdbinit.xdg
└── ...
/Users/yourname/dotfilesconfig/ subdirectory where your dotfiles are storedBacks up your local configuration files to your dotfiles repository.
Usage: Open Raycast → Type "Backup Configs" → Press Enter
What it does:
Restores configuration files from your dotfiles repository to your local machine.
Usage: Open Raycast → Type "Restore Configs" → Press Enter
What it does:
View differences between your local configuration files and those in your repository.
Usage: Open Raycast → Type "Show Diffs" → Press Enter
What it shows:
Check the synchronization status of all your dotfiles.
Usage: Open Raycast → Type "Show Status" → Press Enter
What it shows:
DotMate currently manages these configuration files:
| Category | Application | Local Path | Repository Path | 
|---|---|---|---|
| Shell | Generic includes | ~/.aliases, ~/.env, ~/.exports, ~/.functions, ~/.inputrc, ~/.path | config/shell/aliases, config/shell/env, config/shell/exports, config/shell/functions, config/shell/inputrc, config/shell/path | 
| Shell | Zsh | ~/.zlogin, ~/.zlogout, ~/.zprofile, ~/.zshenv, ~/.zshrc, ~/.p10k.zsh | config/zsh/zlogin, config/zsh/zlogout, config/zsh/zprofile, config/zsh/zshenv, config/zsh/zshrc, config/zsh/p10k.zsh | 
| Shell | Bash | ~/.bash_login, ~/.bash_logout, ~/.bash_profile, ~/.bashrc, ~/.profile | config/bash/bash_login, config/bash/bash_logout, config/bash/bash_profile, config/bash/bashrc, config/bash/profile | 
| Shell | Fish | ~/.config/fish/config.fish | config/fish/config.fish | 
| Prompts | Starship | ~/.config/starship.toml | config/starship/starship.toml | 
| Git | Core | ~/.gitconfig, ~/.gitignore_global | config/git/gitconfig, config/git/gitignore_global | 
| Git | XDG | ~/.config/git/config, ~/.config/git/attributes, ~/.config/git/ignore | config/git/config, config/git/attributes, config/git/ignore | 
| Git | GitHub CLI | ~/.config/gh/config.yml | config/git/gh-config.yml | 
| Git | GitLab CLI | ~/.config/glab-cli/config.yml | config/git/glab-config.yml | 
| Editors | Vim | ~/.vimrc | config/vim/vimrc | 
| Editors | Neovim | ~/.config/nvim/init.lua | config/nvim/init.lua | 
| Editors | Emacs | ~/.emacs, ~/.emacs.d/init.el | config/emacs/emacs, config/emacs/init.el | 
| Editors | VS Code (settings) | ~/Library/Application Support/Code/User/settings.json | config/vscode/settings.json | 
| Editors | VS Code (keybindings) | ~/Library/Application Support/Code/User/keybindings.json | config/vscode/keybindings.json | 
| Editors | VS Code (MCP) | ~/Library/Application Support/Code/User/mcp.json | config/vscode/mcp.json | 
| Editors | VS Code (extensions list) | ~/.vscode/vscode-extensions | config/vscode/vscode-extensions | 
| Editors | Zed | ~/.config/zed/settings.json | config/zed/settings.json | 
| Terminals | Kitty | ~/.config/kitty/kitty.conf | config/kitty/kitty.conf | 
| Terminals | Alacritty | ~/.config/alacritty/alacritty.yml | config/alacritty/alacritty.yml | 
| Terminals | WezTerm | ~/.wezterm.lua | config/wezterm/wezterm.lua | 
| Terminals | Ghostty | ~/.config/ghostty/config | config/ghostty/config | 
| Terminals | iTerm2 | ~/Library/Preferences/com.googlecode.iterm2.plist | config/iterm2/com.googlecode.iterm2.plist | 
| Terminals | Warp | ~/Library/Preferences/dev.warp.Warp-Stable.plist | config/warp/dev.warp.Warp-Stable.plist | 
| Terminals | Terminal.app | ~/Library/Preferences/com.apple.Terminal.plist | config/terminal/com.apple.Terminal.plist | 
| Multiplexers | Tmux | ~/.tmux.conf, ~/.config/tmux/tmux.conf | config/tmux/tmux.conf, config/tmux/tmux.conf.xdg | 
| Multiplexers | Screen | ~/.screenrc | config/screen/screenrc | 
| Linters/Formatters | Ruff | ~/.config/ruff/ruff.toml | config/ruff/ruff.toml | 
| Linters/Formatters | Python | ~/.pylintrc, ~/.flake8 | config/python/pylintrc, config/python/flake8 | 
| Linters/Formatters | Prettier | ~/.prettierrc, ~/.prettierrc.json, ~/.prettierignore | config/prettier/prettierrc, config/prettier/prettierrc.json, config/prettier/prettierignore | 
| Linters/Formatters | EditorConfig | ~/.editorconfig | config/editor/editorconfig | 
| Linters/Formatters | Clang-Format | ~/.clang-format | config/clang/clang-format | 
| Linters/Formatters | Rustfmt | ~/.rustfmt.toml | config/rust/rustfmt.toml | 
| Linters/Formatters | ESLint | ~/.eslintrc.js, ~/.eslintrc.json, ~/.eslintignore | config/eslint/eslintrc.js, config/eslint/eslintrc.json, config/eslint/eslintignore | 
| Linters/Formatters | Stylelint | ~/.stylelintrc, ~/.stylelintrc.json, ~/.stylelintignore | config/stylelint/stylelintrc, config/stylelint/stylelintrc.json, config/stylelint/stylelintignore | 
| Linters/Formatters | ShellCheck | ~/.shellcheckrc | config/shellcheck/shellcheckrc | 
| CLI Tools | bat | ~/.config/bat/config | config/bat/config | 
| CLI Tools | delta | ~/.config/delta/delta.toml | config/delta/delta.toml | 
| CLI Tools | tldr | ~/.config/tldr/config.json | config/tldr/config.json | 
| CLI Tools | fzf | ~/.fzf.bash, ~/.fzf.zsh | config/fzf/fzf.bash, config/fzf/fzf.zsh | 
| CLI Tools | ripgrep | ~/.ripgreprc | config/ripgrep/ripgreprc | 
| CLI Tools | ignore files | ~/.agignore, ~/.ignore | config/ignore/agignore, config/ignore/ignore | 
| CLI Tools | curl, wget | ~/.curlrc, ~/.wgetrc | config/net/curlrc, config/net/wgetrc | 
| Env Managers | asdf | ~/.tool-versions | config/asdf/tool-versions | 
| Env Managers | SDKMAN! | ~/.sdkman/etc/config | config/sdkman/config | 
| Env Managers | pyenv | ~/.pyenv/version | config/pyenv/version | 
| Env Managers | rbenv | ~/.rbenv/version | config/rbenv/version | 
| Env Managers | nodenv | ~/.nodenv/version | config/nodenv/version | 
| Env Managers | swiftenv | ~/.swiftenv/shims/.version | config/swiftenv/version | 
| Language Tooling | Ruby | ~/.gemrc, ~/.irbrc, ~/.pryrc | config/ruby/gemrc, config/ruby/irbrc, config/ruby/pryrc | 
| Language Tooling | Rust | ~/.cargo/config.toml | config/rust/cargo-config.toml | 
| Language Tooling | Go | ~/.config/go/env | config/go/env | 
| Package Managers | npm | ~/.npmrc | config/node/npmrc | 
| Package Managers | pnpm | ~/.config/pnpm/rc | config/node/pnpmrc | 
| Package Managers | yarn | ~/.yarnrc, ~/.yarnrc.yml | config/node/yarnrc, config/node/yarnrc.yml | 
| Package Managers | RubyGems | ~/.gemrc | config/ruby/gemrc | 
| Package Managers | Homebrew | ~/Brewfile | config/brew/Brewfile | 
| SSH | OpenSSH | ~/.ssh/config, ~/.ssh/known_hosts | config/ssh/config, config/ssh/known_hosts | 
| Debuggers | GDB | ~/.gdbinit, ~/.config/gdb/gdbinit | config/gdb/gdbinit, config/gdb/gdbinit.xdg | 
Notes:
code --list-extensions > ~/.vscode/vscode-extensions.brew bundle dump --file=~/Brewfile --force.config/ directoryWhen setting up a new machine:
MIT
Issues and pull requests are welcome! Please feel free to contribute to make DotMate even better.