Dot File Manager

by Brett on October 17, 2013

Today I finished putting together a dot file manager. This is a tool that helps manage all of the settings and configurations for multiple computers. I’m currently storing configs and settings for vim, sublime, bash, aliases, custom functions, bin files, thunar, diffuse, kupfer and the like. This tool allows building out a new computer with all of my settings very quickly and also helps me keep multiple computers/servers configs in sync. No more painful copying to usb, emailing or using scp/rsync to manually pull my settings and configs. YEAH!

The installation of this tool couldn’t be easier with a simple one line command:

bash <(wget -nv -O -

That command will download all settings/configs into a dotfiles directory and then ask if symbolic links should be created. The dot file manager tool (called dotm) can be used by anyone to store their custom configs (without being forced to use mine). I hope others find it useful, I know I have.

More detailed instructions about this tool can be viewed on my github account:

Below are some features that this tool currently supports. Please feel free to submit suggestions or issues on github.

  • Handles symlinks to files in sub directories of the dot file directory. This will match the directory structure in the users home directory. So ~/dotfiles/somedir/.somefile will have a link created in ~/somedir/.somefile.
  • Symlinks to directories in the dot files directory. Any directory name that ends in .lnk will have a corresponding symlink pointing to it from the home directory. So ~/dotfiles/somddir.lnk/ will have a symlink in ~/somdir.
  • Creates backups of files that exist in the users home directory. Places backup in a user defined directory (~/dotfiles/backup by default) and appends a timestamp to the filename
  • Automatically creates symlink for all files in the dot files directory (~/dotfiles by default) and sub directories except for special directories.
  • Custom directory (default ~/dotfiles/custom) to put files that won’t be symlinked.
  • Bin directory (default ~/dotfiles/bin) to put scripts that won’t be symlinked. Will be added to the path via .bashrc.
  • Source directory (default ~/dotfiles/source) to put source files that won’t be symlinked. Will be sourced via .bashrc.
  • Option to ask before creating each symlink.
  • Option to create symlinks from a minimal list. Allowing for only some symlinks to be created on specific servers.
  • Updates dot files from remote repository on each run.
  • Command line options to change default settings (remote repository, dotfile directory, etc).

Previous post:

Next post: