GNU Stow

Use GNU Stow to symlink config files to corresponding directories.

Stow everything:

stow -t ~ $(ls -d */) -v

When in some case a symlink becomes unmanaged, you can remove them with either of those two commands

stow -t ~ $(ls -d */) 2>&1 | grep existing | awk '{ print $11}' | xargs -I % sh -c 'rm ~/%'
# or
stow -t ~ $(ls -d */) 2>&1 | grep existing | awk '{ print $9}' | xargs -I % sh -c 'rm ~/%'