Fish configuration#
fish is our interative shell set in tmux and the terminals.
Apart from
config.fish, we have separate files for setting various pices of config such that the separate scripts “look” similar in structure to ourbashcounterparts.Machine-specific customization is overlayed via os and user sepcific files.
Exactly which os and which user file gets included is determined via
chezmoigenerated symlinks.
Directory layout#
Show layout
home/dot_config/fish#
$ lsd --almost-all --tree home/dot_config/fish
fish
├── completions
│ ├── .keep
│ └── mg.fish
├── conf.d
│ ├── fzf-config.fish
│ └── git-config.fish
├── config.fish
├── functions
│ ├── .keep
│ └── mg.fish
├── generated
│ └── fzf-fragments.fish.tmpl
├── linux-arch-config.fish
├── linux-config.fish
├── linux-ubuntu-config.fish
├── no-op.fish
├── symlink_os-config.fish.tmpl
├── symlink_user-config.fish.tmpl
└── vvnraman-config.fish
Load order#
Implicit Fish startup behavior
First
fishauto-loadsconf.d/*.fishscriptsThen it loads
config.fishas the main startup file.config.fishexplicitly loads os and user specific config files.config.fish#10# custom binaries in `bin` 11# Add other entries to path above. 12fish_add_path --path --prepend "$HOME/.local/bin" 13fish_add_path --path --prepend "$HOME/bin" 14 15source_script ~/.config/fish/user-config.fish 16source_script ~/.config/fish/os-config.fish
Linux distro agnostic config is present in
dot_config/fish/linux-config.fish, which is loaded by distro specific configslinux-arch-config.fish#1if test -f "$HOME/.config/fish/linux-config.fish" 2 source "$HOME/.config/fish/linux-config.fish" 3end 4 5set --universal --export SSH_AUTH_SOCK $XDG_RUNTIME_DIR/ssh-agent.socket 6 7fish_add_path --path --prepend "$HOME/.local/bin/vvnraman/arch/"
linux-ubuntu-config.fish#1if test -f "$HOME/.config/fish/linux-config.fish" 2 source "$HOME/.config/fish/linux-config.fish" 3end