Manage and edit $HOME dotfiles using Python + git = <3
Project description
mydot -- A Python module for managing dotfiles
Super-charged version of the Atlassian approach to managing
dotfiles using a bare git repo + fzf
magic! Quickly edit files, add
changes, run scripts, grep through dotfiles, or discard work-tree changes with
ease.
Quick Start
-
Install dependencies:
sudo apt install fzf git # Ubuntu/Debian brew install fzf git # MacOS/Homebrew
-
Configure shell: At the bottom of your
~/.bashrc
or~/.zshhrc
add:export DOTFILES="$HOME/.config/dotfiles" alias config='/usr/bin/git --git-dir=$DOTFILES --work-tree=$HOME'
what and why?:
DOTFILES
: variable pointing to your local--bare
dotfiles repositoryconfig
: git alias to directly address the--bare
dotfiles repository
-
Initialize dotfiles repository:
# reload shell configu source ~/.bashrc # if using bash source ~/.zshrcc # if using zsh mkdir -pv $DOTFILES # create directory git init --bare $DOTFILES # initialize --bare git repository
-
Install
mydot
and disable viewing of untracked filespip install --user mydot # if using pip pipx install mydot # if using pipx mydot git config --local status.showUntrackedFiles no
-
Add files to your dotfiles repo
mydot git add ~/.vimrc ~/.tmux.conf ~/.bashrc ~/.bash_aliases ~/.zshrc mydot git commit -m "the journey of a thousand miles begins with one step"
protip: You can use all your regular git commands, including aliases, when calling
mydot git
-
Feel the power with
mydot
(and the pre-installed aliasd.
)d. -e # modify tracked files in your $EDITOR (tab in fzf for multiselect) d. -a # choose which modified files to stage for commit d. git commit # commit changes d. -g "EDITOR" # find all files with lines containing the string EDITOR # works with regex too! e.g, EDITOR$ something.*var ^$ d. -r # run any executable script in your dotfiles repo d. -s # see the state of your repo d. -l # list all files under version control d. --export # make a tarball of your dotfiles + bare git repo d. --clip # put file paths into the clipboard d. --restore # remove files from staging area d. --discard # discard unstaged changes from work tree d. # see the help message detailing available commands
Going Deeper
Useful aliases
alias es="mydot --edit" # quick select a file to edit
alias rs="mydot --run" # quick select a script to run
If you ever run into an issue where the mydot
CLI is reading flags meant for
mydot git
you can fallback to the config
alias from step 1 which acts as a
special git command that only applies for the dotfiles repo.
For example mydot git rm -r ~/.tmux
would see the -r
flag and try to run an
executable in your dotfiles. Instead use config rm -r ~/.tmux
and the files
in the directory will be removed recursively.
Source of Truth
This project is available on GitHub and GitLab. Each push
to master
automatically goes to both so choose whichever platform you prefer.
All releases are published to PyPi
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.