GNU Stow wrapper
Project description
Cstow
About
There's lots of dotfiles managers, but my favorite is GNU Stow.
It has only two problems: boring UI and no config. Cstow solves them.
Name
C
onst
antine's GNU Stow
wrapper.
Some GNU Stow Terminology
A target directory is the root of a tree in which one or more packages wish to appear to be installed.
A stow directory is the root of a tree containing separate packages in private subtrees.
Installation
Use pipx
pipx install cstow
Or pip
pip install cstow
Configuration
Set CSTOW_CONFIG_PATH
to path/to/your/cstow_config.toml
.
Use any file name you want.
Examples
- My cstow.toml.
- More examples.
Config Contents
Cstow expands ~
and $AN_ENVIRONMENT_VARIABLE
.
Name | Type | Description | Default |
---|---|---|---|
root_dir | String | The root of stow directories | / |
cmd_template | String | The template for GNU Stow commands | See below |
targets_dirs | Table | Targets (keys) and dirs (values) | |
targets_dirs (key) | String | A target directory | |
targets_dirs (value) | Array of strings | Stow directories for the target |
root_dir
You might set it to ~/dotfiles
or $DOTFILES
.
If you don't set root_dir
, use absolute paths in targets_dirs
.
cmd_template
You can set it to any shell command, but every variable must be used at least once.
Cstow escapes variables so don't even try shell-injecting yourself!
Variables
Variable | Description |
---|---|
action | A GNU Stow action (no, stow, restow, delete) |
target | A target directory |
dir | A stow directory |
Default
stow --$action --no-folding --verbose --target=$target --dir=$dir . \
2>&1 | grep --invert-match --regexp="^BUG" --regexp="^WARN"
Usage
# Get some help
cstow -h
cstow --help
# Run an action
cstow # Default action is 'no'
cstow no # Action is a positional argument
cstow -a no # But flags also work
cstow --action no
# Print plain text
cstow stow -p
cstow restow --plain
cstow -p -a delete
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.