Skip to content

A dotfiles manager, with real time fle watching and 100% less sym-links!

License

Notifications You must be signed in to change notification settings

StandingPadAnimations/kubo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kubo

A dotfile manager that watches files in real time.

Usage

Create a directory called .kubo in $HOME, then create a file called kubo.toml in .kubo. kubo.toml lists your dotfiles, and can look something like this:

hypr =  { source = "/home/USER/.config/hypr"  }
eww  =  { source = "/home/USER/.config/eww"   }
kitty = { source = "/home/USER/.config/kitty" }

(Note at the moment, ~ does not work for paths defined in kubo.toml yet, but I plan to fix that)

source defines where the dotfiles would be stored normally in the home directory, which is mirrored in .kubo.

To add dotfiles easily, you can run kubo add -n <name> -s <dotfiles>. Using Hyprland as an example:

kubo add -n hyprland -s ~/.config/hypr -t hypr

Finally, run kubo daemon to start the daemon.

Completions

Kubo can automatically generate completions using kubo --generate <shell>, and these completions can be used in your shell configuration.

# .bashrc
eval "$(kubo --generate bash)"

# .zshrc
eval "$(kubo --generate zsh)"

# Same for other shells...

Why another dotfile manager? Why a daemon of all things?

I wanted a dotfile manager that didn't do sym-links yet also updated by backed up dotfiles in real time. I used Chezmoi before, and while it's nice, it has the following issues:

  • Does not update in real time.
  • Deleting old configs is a pain.

In addition, I also wanted to declare my dotfiles with a config file. I tried toml-bombadil (sym-linked based, but I figured I would try it anyway) but it ended up deleting my dotfiles due to me thinking it would copy my config files first. I was able to restore those files, but it was a pain and I didn't want to do that again.

So I wrote Kubo, a dotfiles manager without sym links that updates in real time. Kubo's philosophy is the following:

  • Directories outside .kubo should only be modified after A. telling the user what will be modified and B. with user permission.
  • No sym-links; a backup is to be a second copy, not the only copy.
  • Declarative configs are amazing, let's do more of those.
  • Do only job only: properly manage and back up dotfiles.
  • Kubo should only copy to .kubo, the user decides what they want to do with .kubo.

Why the name Kubo?

When I tried toml-bombadil (i.e. the manager that deleted my dotfiles), I was also watching the anime "Kubo Won't Let Me Be Invisible". I figured Kubo made a good name (and naming things is hard).

What are some features planned?

Kubo is "mostly complete", I just got to iron out bugs, make the code cleaner, etc. I do want to add a packages option eventually, and have Kubo either list or install packages associated with one's dotfiles. After all, I also want to declare what packages use what set of dotfiles.

In addition, I want to add some subcommands to make adding dotfiles easier, like kubo add and kubo rm.

Are there other dotfile managers?

The Arch Wiki has a pretty large list of them, I suggest looking there.

Ew, Rust (Actual comment I've gotten)

You're not forced to use this, I created this for personal use and wanted to share it.

Contributing

Check out CONTRIBUTING.md in the GitHub repo for more information!

About

A dotfiles manager, with real time fle watching and 100% less sym-links!

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages