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 repository
-
Initialize dotfiles repository: Reload shell config with
source ~/.bashrc
orsource ~/.zshhrc
then:mkdir -pv $DOTFILES # create directory git init --bare $DOTFILES # initialize the repository
-
Install
mydot
and disable viewing of untracked filespip install --user mydot 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
d. git
-
Feel the power with
mydot
(and the pre-installed aliasd.
)d. -e # choose file(s) to open in $EDITOR d. -a # choose modified files to add file(s) to staging area d. -r # select an executable file to run d. -g # grep through tracked dotfiles and open from matches 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 whihc details 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.
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.