gearsix.net » software » dotfm

dotfm

gearsix

a clean & simple terminal dotfile manager


About

dotfm is a simple and easy to use terminal dotfile manager.

It's basically just a Python script to short-hand managment of symlinking dotfiles. It's goal is to allow you to keep all your dotfiles in a single directory (ideally without any nesting inside that dir) and allowing you to name the dotfiles whatever you want (not forcing you to use hidden file naming).

If you don't want to remember or type out the location of a dotfile everytime you want to modify it, if you just want to keep your dotfiles tidy in a repo/directory (see fig.1), maybe you swap dotfiles around a lot:

dotfiles/
├───src/
│   ├───bashrc
│   ├───nvimrc
│   ├───tmux.conf
│   ├───ssh_config
│   └───user-dirs.dirs
└───README

Opposed to the traditional approach, where you re-create the home directory structure and just clone it to your home folder (which I think is messy):

dotfiles/
├───.bashrc
├───.tmux.conf
├───.ssh/
│   └───config
└───.config/
    ├───nvim/
    │   └─── nvimrc
    └───user-dirs.dirs

See the README for more details on using the tool.

Examples
  • dotfm install ~/dev/gearsix/dotfiles/bashrc
    • creates a symlink at ~/.bashrc -> ~/dev/gearsix/dotfiles/bashrc
  • dotfm edit bashrc
    • edit the dotfile at ~/dev/gearsix/dotfiles/bashrc
  • dotfm update bashrc ~/dev/gearsix/new-dotfiles/bashrc
    • update the ~/.bashrc dotfile to point to ~/dev/gearsix/new-dotfiles/bashrc
  • dotfm remove bashrc
    • remove the symlink pointing to the source dotfile (~/.bashrc), note that this makes a interactive rm call.

Download

Just download the latest release and run sudo make install or sudo make link. The difference is that make install copies the binary and make link just creates a symlink (useful if you want to make changes to source or update via git pull)

By default the install location of dotfm is /usr/local/bin/dotfm. To modify this, just edit the value of DESTBINDIR in the Makefile.

Here are the git repositories with latest changes: