Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/erickm13/Salchipapa.Dots/llms.txt

Use this file to discover all available pages before exploring further.

Fish is the recommended shell in Salchipapa.Dots. On every interactive session it automatically launches Zellij, activates vi key bindings, and renders your prompt through Starship — all themed with the Solarized Osaka color palette. Completions are powered by Carapace, history search by Atuin, and directory jumping by Zoxide, giving you a fully integrated terminal workflow out of the box.

Setup

The Fish configuration lives at SalchipapaFish/fish/ and is symlinked into place by the installer. To link it manually:
ln -s ~/Salchipapa.Dots/SalchipapaFish/fish ~/.config/fish
The installer (sudo ./install.sh) handles this symlink automatically when you select Fish as your shell. You do not need to run this command if you used the installer.

Zellij Auto-Start

Every time Fish starts an interactive session it checks whether it is already running inside Zellij. If not, it launches Zellij immediately:
if status is-interactive && not set -q ZELLIJ
    zellij
end
This means opening a new terminal always drops you into a Zellij session — no manual zellij command required.

Fisher & Plugins

Fisher is the plugin manager for Fish. The installer bootstraps it automatically on the first interactive session:
if not functions -q fisher
    curl -sL https://git.io/fisher | source
    fisher install jorgebucaran/fisher
end
To install Fisher manually in a fresh environment:
curl -sL https://git.io/fisher | source && fisher install jorgebucaran/fisher
The following plugins are managed by Fisher:
PluginPurpose
jorgebucaran/nvm.fishNode Version Manager for Fish
patrickf1/fzf.fishFuzzy finder key bindings and completions
oh-my-fish/plugin-pjProject jump — quickly switch between project directories

Tool Initializations

After Zellij starts, config.fish initializes all the major CLI integrations in sequence:
starship init fish | source
zoxide init fish | source
atuin init fish | source
fzf --fish | source
carapace _carapace | source

Starship

Cross-shell prompt with Git status, language versions, and more — rendered on every line.

Zoxide

Smarter cd — tracks your most-visited directories and lets you jump with z <name>.

Atuin

Replaces shell history with a searchable, synced SQLite database. Press Ctrl+R to search.

fzf

Fuzzy finder integrated into Fish key bindings for files, history, and processes.

Carapace

Unified multi-shell completion bridge — provides completions for hundreds of CLI tools.
Carapace bridges are configured to span multiple shells:
set -Ux CARAPACE_BRIDGES 'zsh,fish,bash,inshellisense'

Vi Key Bindings

Vi mode is enabled globally. The fish_user_key_bindings function layers vi bindings on top of the default emacs bindings so that insert-mode shortcuts (like Ctrl+A/Ctrl+E) remain available:
function fish_user_key_bindings
    # Apply emacs bindings in insert mode first
    fish_default_key_bindings -M insert

    # Then apply vi bindings without erasing emacs ones
    fish_vi_key_bindings --no-erase insert
end
Vi mode is activated in config.fish with:
fish_vi_key_bindings

Aliases

All aliases use eza as a modern replacement for ls, with Nerd Font icon support and Git integration.

Listing Aliases

AliasCommandDescription
lseza --iconsBasic listing with icons
lleza -la --icons --gitLong listing with hidden files and Git status
lteza --tree --iconsRecursive tree view
lt2eza --tree --icons --level=2Tree — 2 levels deep
lt3eza --tree --icons --level=3Tree — 3 levels deep
lt4eza --tree --icons --level=4Tree — 4 levels deep
ldeza -lD --iconsDirectories only
lfeza -la --icons -fFiles only
lreza -la --icons --sort=modified --reverseSorted by modified date (newest first)
lSeza -la --icons --sort=size --reverseSorted by size (largest first)

Fuzzy Finder Aliases

AliasCommandDescription
fzfbatfzf --preview="bat --theme=\"Solarized (dark)\" --color=always {}"fzf with bat syntax-highlighted preview
fzfnvimnvim (fzf --preview="bat --theme=\"Solarized (dark)\" --color=always {}")Open fzf selection directly in Neovim

Git Aliases

AliasCommandDescription
gsgit statusShow working tree status
gpgit pushPush to remote
glgit log --oneline --graphCompact graphical log
gcgit commit -mCommit with inline message
AliasCommandDescription
obsgit -C ~/.config/obsidian add . && git -C ~/.config/obsidian commit -m 'update notes' && git -C ~/.config/obsidian pushSync Obsidian vault to GitHub
winz /mnt/c/Users/SalchipapaJump to Windows user directory (WSL)

Solarized Osaka Colors

The Solarized Osaka theme is applied directly in config.fish by setting Fish syntax highlighting variables. The theme is also available as a standalone file at SalchipapaFish/fish/themes/SolarizedOsaka.theme.
# Color palette
set -l foreground 839395
set -l selection  073642
set -l comment    586e75
set -l red        db302d
set -l orange     c94c16
set -l yellow     b28500
set -l green      849900
set -l blue       268bd3
set -l cyan       29a298
set -l magenta    d23681

# Syntax Highlighting Colors
set -g fish_color_normal     $foreground
set -g fish_color_command    $blue
set -g fish_color_keyword    $magenta
set -g fish_color_quote      $green
set -g fish_color_redirection 9eabac
set -g fish_color_end        $cyan
set -g fish_color_error      $red
set -g fish_color_param      $foreground
set -g fish_color_comment    $comment
set -g fish_color_selection  --background=$selection
set -g fish_color_search_match --background=$selection
set -g fish_color_operator   $cyan
set -g fish_color_escape     $green
set -g fish_color_autosuggestion $comment

# Completion Pager Colors
set -g fish_pager_color_progress    $foreground
set -g fish_pager_color_prefix      $blue
set -g fish_pager_color_completion  $foreground
set -g fish_pager_color_description $comment

# Valid path — no underline
set -g fish_color_valid_path $blue
The theme file at SalchipapaFish/fish/themes/SolarizedOsaka.theme can be loaded through fish_config theme choose SolarizedOsaka as an alternative to the inline variable approach.

PATH Configuration

PATH is configured depending on the detected platform. All platforms prepend ~/.cargo/bin as a final step.
set -x PATH $HOME/.local/bin $HOME/.opencode/bin $HOME/.volta/bin $HOME/.bun/bin \
            $HOME/.nix-profile/bin /nix/var/nix/profiles/default/bin \
            /usr/local/bin $HOME/.config $HOME/.cargo/bin /usr/local/lib/* $PATH
set -x PATH $HOME/.local/bin $HOME/.opencode/bin $HOME/.volta/bin $HOME/.bun/bin \
            $HOME/.nix-profile/bin /nix/var/nix/profiles/default/bin \
            /usr/local/bin $HOME/.config $HOME/.cargo/bin /usr/local/lib/* $PATH
macOS also detects the correct Homebrew prefix — /opt/homebrew/bin/brew for Apple Silicon or /usr/local/bin/brew for Intel — and evaluates the Homebrew shell environment automatically.
set -x PATH $PREFIX/bin $HOME/.local/bin $HOME/.cargo/bin $PATH
Termux uses $PREFIX/bin instead of the standard system paths and skips the Homebrew evaluation entirely.
Key PATH entries across all platforms:
EntryPurpose
~/.local/binUser-installed binaries
~/.opencode/binOpenCode AI CLI
~/.volta/binVolta Node.js toolchain manager
~/.bun/binBun JavaScript runtime
~/.cargo/binRust/Cargo binaries
~/.nix-profile/binNix-managed packages

Default Editor

Both EDITOR and VISUAL are set to Neovim:
set -gx EDITOR nvim
set -gx VISUAL nvim
This ensures tools like git commit, crontab -e, and opencode all open Neovim by default.

WSL Color Fix

To prevent Windows-owned directories (which have the “other-writable” permission bit) from rendering with a garish green background in ls output, LS_COLORS is explicitly overridden:
set -gx LS_COLORS "di=01;34:ow=01;34:ln=01;36:ex=01;32:*.tar=01;31:*.zip=01;31"
Termux is fully supported. When $TERMUX_VERSION is set or /data/data/com.termux exists, the Fish config switches to Termux-specific PATH handling using $PREFIX/bin and skips Homebrew shell environment evaluation entirely.

Build docs developers (and LLMs) love