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/dotfiles
config/
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.