A capture-based configuration switcher for Hyprland. Manage multiple Hyprland shells/rices (skwd, brainshell, HyDE, custom dotfiles, etc.) side by side — including everything they touch beyond just hyprland.lua: kitty, rofi, waybar, fastfetch, and a curated set of dotfiles directly in $HOME like .zshrc.
Caution
Updating a shell while it is active modifies its captured files in place. Because every managed config path is a symlink into that shell's storage, running its update script directly edits the stored baseline. This is safe only if the update modifies files in place. If the update replaces directories (e.g. rm -rf ~/.config/kitty && cp -r new_kitty ~/.config/kitty), it will break the symlink invariant and future switches will abort. For updates that replace directories, use hypr-switch capture-start <name> before updating and hypr-switch capture-finish <name> after.
git clone https://github.com/bobincraft1/hypr-switch.git
cd hypr-switch
chmod +x install-hypr-switch.sh hypr-switch
./install-hypr-switch.shOr one-line:
curl -fsSL https://raw.githubusercontent.com/bobincraft1/hypr-switch/main/install-hypr-switch.sh | bashThe installer copies hypr-switch to ~/.local/bin, adds it to your PATH, and runs the one-time bootstrap to capture your current config as default.
# List discovered shells
hypr-switch --list
# Switch to a shell
hypr-switch <name>
# Capture a new shell
hypr-switch capture-start <name>
# ... run the shell's installer ...
hypr-switch capture-finish <name>
# Abort a capture in progress
hypr-switch capture-cancel
# Show what a shell owns
hypr-switch show <name>For detailed documentation, see docs/hypr-switch.md.