1 unstable release
Uses new Rust 2024
new 0.1.26 | May 8, 2025 |
---|
#221 in Filesystem
40KB
698 lines
boxunbox
boxunbox
is a simple symlinker inspired by GNU stow
.
Comparison to GNU stow
In all honesty, I wanted to be able to control where each individual folder got linked and the way stow
handles the .stowrc
files isn't very intuitive in my opinion. Therefore, boxunbox
stores its config files in the packages themselves. For example, unbox zsh
would use the config inside the zsh/
folder, not the current working directory like stow
. This means you can also nest config files and they'll be respected by design.
boxunbox |
stow |
---|---|
Absolute (default) and relative links | Relative links only |
Per-package configs | Per-operation config |
OS-specific configs | N/A |
Only symlinks files by default, creating directories as needed | Creates as few symlinks as possible |
Re-creates directory structure in target until nested config is found | Re-creates directory structure in target |
Installation
At the time of writing, there are currently three supported installation methods.
Arch User Repository (AUR)
There are two AUR packages:
- boxunbox: latest tagged release
- boxunbox-git: latest commit on
main
They aren't usually different by much. I recommend installing with an AUR helper:
paru -S boxunbox
# or
paru -S boxunbox-git
Cargo
You can install boxunbox
from crates.io:
cargo install boxunbox
Manual Local Installation
First, clone the repostiory, then compile/install with one command:
git clone https://github.com/dablenparty/boxunbox.git
cargo install --path boxunbox
Explore cargo install --help
for more installation options.
Configuration
For CLI args, read the output of unbox --help
. See the example config for an overview of the config file. Alternatively, you can just view the package config struct definition if you're comfortable with Rust.
Package config files are stored as .unboxrc.ron
or .unboxrc.<platform>.ron
for OS-specific configs. See this doc page for a list of possible values for <platform>
, although the CLI has a flag -o
that can create one for you automatically. OS-specific configs are always preferred when they exist.
Dependencies
~6–15MB
~177K SLoC