Modern, modular terminal environment optimised for productivity. Designed for WSL (Ubuntu 22.04/24.04/26.04) but works on any Linux.
- Fish — autosuggestions, syntax highlighting and completions built-in, zero plugins required
- Tide — native Fish prompt, async, configurable via
tide configure
These tools coexist with their native equivalents — they don't replace them, they add to them.
| Native command | Installed tool | Command |
|---|---|---|
grep |
ripgrep |
rg |
cat |
bat |
bat |
ls |
eza |
eza / ll / l / lt |
find |
fd |
fd |
cd |
zoxide |
z |
top |
btop |
btop |
| — | fzf |
fzf |
| — | jq + yq |
jq / yq |
grep -r "TODO" src/ # native
rg "TODO" src/ # rg: respects .gitignore, coloured, faster
grep -rn "func " --include="*.go"
rg "func " -t go # rg: built-in file type filtering
grep -rl "pattern" . # list matching files
rg -l "pattern"
rg "error" --ignore-case
rg "fn \w+" -t rust # PCRE2 regex by defaultcat main.go # native: plain text
bat main.go # bat: syntax colours, line numbers, header
bat -n main.go # line numbers only, no decoration
bat --paging=never main.go # behaves like cat, no pager
bat *.json # multiple files with separators
bat -l yaml config.txt # force language when extension is misleadingls -la # native
ll # alias → eza -alh --git: size, perms, Git status
ls --tree # not native on Linux
lt # alias → eza --tree: full directory tree
eza --tree --level=2 # limit depth
eza -l --git-ignore # respect .gitignore
eza -l --sort=modified # sort by modification datefind . -name "*.ts" -type f # native
fd "\.ts$" # fd: ignores node_modules/.git by default
find . -name "*.log" -exec rm {} \;
fd "\.log$" --exec rm # fd: more readable
find . -mtime -7 -type f # files modified this week
fd --changed-within 7d
fd -e py -x black {} # run black on every .py filecd ~/workspace/warp-shell # native: full path required
z warp # zoxide: jumps to the most frequent match for "warp"
cd - # native: previous directory
z - # same
zi # interactive mode with fzf to pick from known dirstop # native: sparse interface
btop # btop: CPU/RAM/network/disk graphs, click-to-sort, built-in kill# Fuzzy command history search (replaces Ctrl+R)
history | fzf
# Open a file interactively
vim $(fd -t f | fzf)
# Pipe a selection into another command
rg "TODO" -l | fzf | xargs batcat data.json | python3 -m json.tool # native: basic reformatting
cat data.json | jq '.' # jq: reformatted + coloured
jq '.users[].name' data.json # extract fields
jq 'select(.age > 18)' data.json # filter
yq '.spec.containers[].image' pod.yaml # same syntax as jq, for YAML
yq -i '.replicas = 3' deployment.yaml # in-place edit- mise — multi-language version manager (Python, Node, Rust, Terraform...)
- lazygit — Git TUI
- lazydocker — Docker TUI
- delta — improved git diff
- pre-commit — Git hooks
- kubectl + kubectx + kubens — Kubernetes
- k9s — Kubernetes TUI
- yq — YAML processor (like jq for YAML)
- Terraform/Terragrunt via mise
- Ghostty — GPU-accelerated terminal with Fish integration and cyberpunk theme
- Zellij — terminal multiplexer with pre-configured layouts
- pi (
@mariozechner/pi-coding-agent) — terminal coding agent - Claude Code (
@anthropic-ai/claude-code) — Claude in the terminal
Neon palette (cyan #00ffff / magenta #ff00ff / yellow #ffff00) coordinated across Starship and Zellij.
- Ubuntu 22.04, 24.04 or 26.04 (WSL recommended)
- Internet connection
- sudo rights
git clone https://github.com/ikarys/warp-shell.git
cd warp-shell
just setupjust setup launches an interactive TUI where you pick exactly which modules to install.
gum is bootstrapped automatically on first run — no manual setup required.
just installjust install-shell # Fish + Tide
just install-cli-tools # ripgrep, bat, eza, fzf, zoxide, btop...
just install-dev # mise, lazygit, lazydocker, delta, pre-commit
just install-terminal # Zellij
just install-ghostty # Ghostty + cyberpunk theme
just install-infra # kubectl, k9s, kubectx, yq
just install-ai-tools # pi, Claude Code
just install-theme # Cyberpunk themejust deploy-dotfileszj-dev # dev layout
zj-ops # ops layoutmise use -g python@latest
mise use -g node@lts
mise use -g terraform@latestk9s # Kubernetes TUI
kx # switch context (kubectx)
kns # switch namespace (kubens)just --list # All available commands
just setup # Interactive TUI module selector
just install # Full install (all modules, no prompts)
just deploy-dotfiles # Deploy config.fish + starship.toml
just update # Update all tools
just check # System health check
just info # Current install statewarp-shell/
├── Justfile
├── scripts/
│ ├── tui.sh # Interactive TUI module selector
│ ├── install-theme.sh # Cyberpunk theme deployer
│ ├── modules/
│ │ ├── 00-base.sh # Base dependencies
│ │ ├── 10-shell.sh # Fish + Tide
│ │ ├── 20-cli-tools.sh # Modern CLI tools
│ │ ├── 30-dev.sh # Dev tools
│ │ ├── 35-docker.sh # Docker CE
│ │ ├── 40-terminal.sh # Zellij
│ │ ├── 45-ghostty.sh # Ghostty terminal
│ │ ├── 50-infra.sh # kubectl, k9s, yq
│ │ └── 60-ai-tools.sh # pi, Claude Code
│ └── utils/
│ ├── colors.sh
│ └── checks.sh
├── dotfiles/
│ ├── config.fish # Main Fish config
│ └── dot_config/
│ ├── starship.toml # Cyberpunk prompt
│ ├── ghostty/config # Ghostty config
│ └── zellij/ # Layouts and theme
└── themes/cyberpunk/ # Coordinated palette (Starship, Zellij, Ghostty)
echo 'alias myalias="command"' >> ~/.config/fish/local.fishFish automatically loads ~/.config/fish/local.fish if it exists.
MIT — do whatever you want with it.