Skip to main content

Manage dotfiles with stow

Project description

dotstow (DEPRICATED)

GitHub stars

Manage dotfiles with stow

Please ★ this repo if you found it useful ★ ★ ★

DEPRICATED

The pypi dotstow module is deprecated.

Please use the one found on npm. https://npmjs.org/package/dotstow

You can install it by running the following command.

npm install -g dotstow

The new and improved dotstow module on npm supports the following features.

  • Group dotfiles into units (stow packages)

  • Automatically symlink (stow) files

  • Backup dotfiles with git

  • Keep track of simultaneous dotfile configurations for multiple environments

  • Supports shell autocompletion

If you were using the python version of dotstow, you should upgrade to this version to get the benefits of multiple environments. If you switch you will have to move your stash plugins into an environment folder (global is recommended).

You can do that by running the following commands.

mkdir ~/tmp_global
mv ~/.dotfiles/* ~/tmp_global
mv ~/tmp_global mkdir ~/.dotfiles/global

Features

  • Group dotfiles into units (stow packages)

  • Automatically symlink (stow) files

  • Backup dotfiles with git

Screenshots

Screenshot 1

Screenshot 1

Installation

pip3 install dotstow

Dependencies

Usage

Note that unlike many dotfile syncing tools, this is powered by GNU Stow. This means your dotfiles must be stored inside stow packages (subfolders) instead of the root of your repo. This prevents cluttering your home directory with unwanted files, like your README.md. It also enables you to only install dotfiles you want on that computer.

The idea behind dotstow is twofold: 1. You don’t need to maintain a shell script that symlinks all of your dotfiles to the correct places in your $HOME directory upon a new dotfile install 2. Individual directories in you .dotfiles become packages that can be installed independently using dotstow [package]

For example:

When setting up your dotfiles on a new computer 1. Run dotstow sync, give it your dotfiles github repo link, and watch as it’s cloned into ~/.dotfiles. 2. Rundotstow zsh emacs vim ... etc for each of the stow packages you’d like to install (aka symlink to $HOME). 3. When you update a file in a package, you only need to dotstow sync to update your linked github repo with the changes. If you add new files to your stow package you will need to restow the package. For example, when adding .zshrc to .dotfiles/zsh/, you will need to dotstow zsh to restow the package and then dotstow sync to update your linked github repo with the changes.

Setup

Create a remote dotfiles repo. You can create one at GitHub.

Run the following command

dotstow sync

Creating a stow package

mkdir ~/.dotfiles/my-stow-package

Adding dotfiles to stow package

mv ~/.some-dotfile ~/.dotfiles/my-stow-package

Syncing dotfiles

dotstow sync

Example

The following example demonstrates syncing your .zshrc file with dotstow

mkdir ~/.dotstow/zsh       # creates a new stow package called 'zsh'
mv ~/.zshrc ~/.dotstow/zsh # adds dotfiles to the 'zsh' stow package
dotstow zsh                # symlinks the 'zsh' stow package
dotstow sync               # syncs your dotfiles

Support

Submit an issue

Contributing

Review the guidelines for contributing

License

MIT License

Jam Risser © 2018

Changelog

Review the changelog

Credits

Support on Liberapay

A ridiculous amount of coffee ☕ ☕ ☕ was consumed in the process of building this project.

Add some fuel if you’d like to keep me going!

Liberapay receiving Liberapay patrons

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dotstow-0.1.5.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

dotstow-0.1.5-py2.py3-none-any.whl (9.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file dotstow-0.1.5.tar.gz.

File metadata

  • Download URL: dotstow-0.1.5.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.9

File hashes

Hashes for dotstow-0.1.5.tar.gz
Algorithm Hash digest
SHA256 ef6e6a15995d6b97845185b2f823b912616a9845d24b14e5c21ce00bbac495ab
MD5 fe037d2637c288d76680fb71e81a35cd
BLAKE2b-256 a1d0d7b9b812262764942ae96bf824648d9a877c9e55444bd4892db7f24d496f

See more details on using hashes here.

File details

Details for the file dotstow-0.1.5-py2.py3-none-any.whl.

File metadata

  • Download URL: dotstow-0.1.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 9.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.6.2 requests-toolbelt/0.9.1 tqdm/4.39.0 CPython/3.6.9

File hashes

Hashes for dotstow-0.1.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2c3323bd2ecac11da6d9582a85af7809f587199d78aac4705cdae206ff7cc6dc
MD5 a5fa93c22e45794e06b081505ac544f0
BLAKE2b-256 a529da59264298eef6403a7a84a865e182755ac763854a6b0521265b6854f748

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page