Dotbee is a simple, symlink-based dotfiles manager. It focuses on doing one thing well: managing your configuration files without the complexity of shell scripts or bloated feature sets.
Warning
Dotbee is in Alpha. While functional, it is recommended to back up your dotfiles before use. For testing, use the provided containerized environment.
- Profile Support: Switch between different environments (e.g., Desktop, Server, Termux).
- Global Configs: Define links that apply across all profiles.
- Health Checks:
dotbee doctorandrepairhelp you identify and fix broken symlinks. - LSP Support: Full JSON schema provided for autocompletion in
dotbee.toml. - Dry Run: Preview changes with
--dry-runbefore applying them.
For more details, see the GitLab Wiki.
Check the Roadmap to see current progress of dotbee's development.
Using Mise
mise use gitlab:rogue-sly/dotbee-
From crates.io:
cargo install dotbee
-
Directly From Repository:
cargo install --git https://gitlab.com/rogue-sly/dotbee
-
Initialize:
dotbee init
This creates a default
dotbee.tomlin your current directory. -
Configure: Edit
dotbee.tomlto define your links.[global.links] "~/.gitconfig" = "git/gitconfig" [profiles.desktop.links] "~/.config/i3/config" = "i3/config"
-
List Available Profiles:
dotbee list
-
Switch Profile:
dotbee switch desktop
-
Check Status:
dotbee doctor
-
Remove All Symlinks:
dotbee purge
Dotbee can generate completion scripts for your shell.
dotbee completion <SHELL>Supported shells: bash, zsh, fish, elvish.
| Shell | Command |
|---|---|
| Bash | dotbee completion bash > ~/.local/share/bash-completion/completions/dotbee |
| Zsh | dotbee completion zsh > ~/.zfunc/_dotbee |
| Fish | dotbee completion fish > ~/.config/fish/completions/dotbee.fish |
| Elvish | dotbee completion elvish > ~/.config/elvish/lib/dotbee.elv |
You can also load completions directly into your current session:
Tip
For Zsh, ensure ~/.zfunc is in your $fpath by adding fpath+=~/.zfunc to your .zshrc before calling compinit.
For Elvish, after permanent installation, add use dotbee to your rc.elv.
# Fish
dotbee completion fish | source
# Bash
source <(dotbee completion bash)
# Zsh
source <(dotbee completion zsh)
# Elvish
eval (dotbee completion elvish | slurp)Dotbee uses TOML for configuration.
[settings]
on_conflict = "ask"
[global.links]
"~/.bashrc" = "bashrc"To avoid accidental data loss on your host system during development, use the provided mise tasks to run Dotbee in a container:
mise run try-dotbee --profile dev-
Dotsy: My project was initially named dotsy until I discovered there's another project that does the same stuff as mine on crates.io lol xD.
-
Stow: While I kinda hated how stow works, I have to admit it's very plain and simple dotfiles management tool which is something I really appreciate. I don't like that fact that I have to organize my files in a specific way and run some scripts to make things work. It was also kind difficult to undo things with stow or fix up any broken symlinks.