#stow #error #boxunbox

app boxunbox

A simple symlinker inspired by GNU stow

1 unstable release

Uses new Rust 2024

new 0.1.26 May 8, 2025

#221 in Filesystem

Custom license

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:

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