Skip to content

rogue-sly/dotbee

Repository files navigation

Dotbee

Gitlab License Gitlab Version Crates.io Downloads (recent)

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.

Features

  • Profile Support: Switch between different environments (e.g., Desktop, Server, Termux).
  • Global Configs: Define links that apply across all profiles.
  • Health Checks: dotbee doctor and repair help you identify and fix broken symlinks.
  • LSP Support: Full JSON schema provided for autocompletion in dotbee.toml.
  • Dry Run: Preview changes with --dry-run before applying them.

Documentation

For more details, see the GitLab Wiki.

Check the Roadmap to see current progress of dotbee's development.

Installation

Using Mise

mise use gitlab:rogue-sly/dotbee

From Source

  1. From crates.io:

    cargo install dotbee
  2. Directly From Repository:

    cargo install --git https://gitlab.com/rogue-sly/dotbee

Quick Start

  1. Initialize:

    dotbee init

    This creates a default dotbee.toml in your current directory.

  2. Configure: Edit dotbee.toml to define your links.

    [global.links]
    "~/.gitconfig" = "git/gitconfig"
    
    [profiles.desktop.links]
    "~/.config/i3/config" = "i3/config"
  3. List Available Profiles:

    dotbee list
  4. Switch Profile:

    dotbee switch desktop
  5. Check Status:

    dotbee doctor
  6. Remove All Symlinks:

    dotbee purge

Shell Completions

Dotbee can generate completion scripts for your shell.

dotbee completion <SHELL>

Supported shells: bash, zsh, fish, elvish.

Permanent Installation

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

On the fly

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)

Configuration

Dotbee uses TOML for configuration.

Example dotbee.toml

[settings]
on_conflict = "ask"

[global.links]
"~/.bashrc" = "bashrc"

Development & Testing

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

Acknowledgments

  • 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.

About

Github mirror for dotbee

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors