A shell plugin manager written in Golang.
Antibody can manage plugins for shells (
zsh, for example), both loading them
export-ing them to
PATH, for example.
I was using Antigen before. It is a good plugin manager, but at the same time it's bloated and slow - 5+ seconds to load on my Mac... that's way too much to wait for a prompt to load!
Antigen is focused in performance, and, since v2.0.0, manage more than just ZSH plugins, but also PATH plugins (those project with binaries) and it is easy enough to implement it for Fish and others.
I'm aware that there are other attempts, like antigen-hs, but I don't want to install a lot of stuff for this to work.
Well, the compiled Go program runs anywhere and doesn't depend on any shared libraries. I also don't need to source it as it would be necessary with plain simple shell. I also can do stuff in parallel with Go routines.
These are the only antigen commands I ever used:
Antibody does just those three things, but you don't even need to
antibody bundle will already download and apply the given bundle.
antibody home also shows where the repositories are being downloaded.
What doesn't work
themecommand (although most themes might just work with
- oh-my-zsh support: it looks very ugly to me and I won't do it;
The simplest way to install Antibody is to run:
$ curl -s https://raw.githubusercontent.com/getantibody/installer/master/install | bash -s $ echo 'source <(antibody init)' >> ~/.zshrc
This will put the binary in
/usr/local/bin/antibody and setup your
to load what is needed on startup.
Now, you can just
antibody bundle stuff, e.g.,
antibody bundle caarlos0/jvm. The repository will be cloned at
your OS cache folder (check
antibody home) folder.
The ZSH bundle implementation will try to load files that match:
The Path bundle implementation will just add the folder to your
You can change the impl by adding
kind:path to the argument, as
antibody bundle 'caarlos0/ports kind:path'
You can also specify a branch to download, for example,
antibody bundle caarlos0/jvm branch:v2 will download the
v2 branch of that
When you decide to update your bundles, just run
antibody update: it will
update all bundles inside the
antibody home folder.
Prefer to use it like this:
$ cat plugins.txt caarlos0/jvm caarlos0/ports kind:path djui/alias-tips caarlos0/zsh-mkc zsh-users/zsh-completions caarlos0/zsh-open-github-pr zsh-users/zsh-syntax-highlighting zsh-users/zsh-history-substring-search $ antibody bundle < plugins.txt
This way antibody can concurrently clone the bundles and find return the shell line, so it will probably be faster than call each one separately.
In the wild
- I did this mostly for myself, so, my dotfiles;
- @mkwmms' dotfiles;
- @oieduardorabelo's dotfiles;
- @nisaacson's dotfiles;
- @pragmaticivan's dotfiles;
- @wkentaro's dotfiles;
- @marceldias' dotfiles;
- @davidkna's dotfiles;
- and probably many others;
You can use antibody in a static-loading manner (so you don't need to exec antibody every time you open a shell).
$ antibody bundle < bundles.txt >> sourceables.sh # In your zshrc (or whatever): $ source sourceables.sh
Beware that antibody does stuff in parallel, so bundle order is not guaranteed.
PS: since v2.0.0, this is the default behavior.
This section is empty.
This section is empty.
Antibody the main thing
New creates a new Antibody instance with the given parameters