Skip to main content

Setting Up stow

stow is a useful tool for managing the symlinks of files in your home directory. It allows for easy organization and management of configuration files across multiple machines.

Installation

To install stow on Ubuntu or Debian-based systems, you can use the following command:

sudo apt install stow

Configuration

Once stow is installed, you can start using it to manage your configuration files. Here's a basic guide to get you started:

  1. Copy Over Configuration Files: Begin by copying the configuration files you want to manage into a directory. For example, let's say we want to manage our .zshrc file and our alacritty configuration.

  2. Create a Directory Structure: Create a directory structure where stow will manage the symlinks. Typically, users create a directory named dotfiles in their home directory to store their configuration files.

    mkdir ~/dotfiles
  3. Create your backup: Before moving the configuration files into the dotfiles directory and managing them with stow, it's a good practice to create backups of the original files. Here's how you can do it:

    mv ~/.zshrc ~/.zshrc.bak
    mv ~/.config/alacritty ~/.config/alacrittybackup

    This command will rename your original .zshrc file to .zshrc.bak and your original alacritty configuration directory to alacrittybackup. These backups will be useful in case you need to revert to your original configurations.

  4. Move Configuration Files: Move the copied configuration files into the dotfiles directory.

    cp ~/.zshrc ~/dotfiles
    cp -r ~/.config/alacritty ~/dotfiles/.config
  5. Stow the Configuration Files: Use stow to manage the symlinks.

    cd ~/dotfiles
    stow .

    Here, zsh and alacritty are the names of the directories where the configuration files are stored within the dotfiles directory. stow will create symlinks from the files in these directories to their appropriate locations in your home directory.

    If you ran into an error stating that the alacritty folder still exists, it means that there's a conflict because a file or directory with the same name already exists at the destination. This conflict prevents stow from creating symbolic links.

    The error message might look like this:

    WARNING! stowing . would cause conflicts:
    * existing target is neither a link nor a directory: .config/alacritty/alacritty.toml
    All operations aborted.

    To resolve this conflict and allow stow to create symbolic links, you can use the --adopt option. Here's what it does:

    stow --adopt .

    This command tells stow to adopt the existing files or directories at the destination into the dotfiles directory, allowing stow to then create symbolic links for them.

    After running stow --adopt ., you should be able to manage your configuration files with stow as intended.

  6. Verify Symlinks: You can verify that the symlinks were created correctly by using the ls command with the -l option in your home directory.

    tree -I ".git" -a .
    tree -a -I "*dotfiles" -P "alacritty.toml*" -P "*.zshrc*" --prune

    This should show you that the files are now symlinked to their respective locations within the dotfiles directory.

Directory Structure

Here's what your directory structure might look like after setting up stow:

.
├── .config
│   └── alacritty
│   └── alacritty.toml
└── .zshrc

Additional Notes

  • stow can be used with any type of configuration file, not just shell configurations like .zshrc. You can use it for managing configurations of various applications.
  • Remember to update your configuration files in the dotfiles directory. Changes made to these files will be reflected in your home directory automatically since they are symlinked.

That's it! You now have a basic understanding of how to set up and use stow for managing your configuration files.