Shell & frameworks
shell: zsh # the simple form, and it still means what it didshell: name: zsh framework: oh-my-zsh theme: agnoster plugins: [git, docker, fzf]Why shell: is declared and not detected
Section titled “Why shell: is declared and not detected”On a fresh machine you are usually running bash while installing and
configuring zsh. The shell Bedouin detects is the one you are about to stop
using, so shell.rc_dir, the PATH file and every rc block key off the one you
declare. shell.detected is still there if you need it.
Frameworks
Section titled “Frameworks”The framework is installed if absent, and never updated — the same shape as brew or rustup: fetch the installer, run it as a file, argv only.
The ordering, which is the whole difficulty
Section titled “The ordering, which is the whole difficulty”oh-my-zsh reads ZSH_THEME and plugins as it loads. Every other Bedouin
block is appended at the end of your rc file — and a framework block there
would be set after omz had already loaded, so the theme would not change, the
plugins would not load, and nothing would say why.
So the framework block is anchored: written immediately above the line that sources the framework.
# >>> bedouin: framework >>>ZSH_THEME='agnoster'plugins=(git docker)# <<< bedouin: framework <<<
source $ZSH/oh-my-zsh.sh # ← reads them, so it must come afterPlugins are names, not installations
Section titled “Plugins are names, not installations”oh-my-zsh bundles most of what people list. The ones it does not —
zsh-autosuggestions, zsh-syntax-highlighting — are git clones, so they are
a repo:
shell: name: zsh framework: oh-my-zsh plugins: [git, zsh-autosuggestions]
repos: - url: https://github.com/zsh-users/zsh-autosuggestions dest: "{{ home }}/.oh-my-zsh/custom/plugins/zsh-autosuggestions"Listing one without a repo for it is a warning naming the entry to write — Bedouin will not pretend a name is an installation. The framework is installed before repos run, since a plugin clones into its directory.
The honest cut
Section titled “The honest cut”framework: means oh-my-zsh, on zsh. Declaring it on bash or fish is an error
naming what is supported, rather than a half-working port. fish’s own ecosystem
can follow when someone wants it.