---
title: "Linux Terminal Ricing: Kitty + Fish + Modern CLI Tools"
aliases: [terminal-customization, linux-ricing, terminal-setup]
tags: [linux, terminal, fish, kitty, neovim, ricing, cli, dotfiles]
sources: [raw/Как сделать терминал в Linux красивым, быстрым и удобным.md]
created: 2026-04-15
updated: 2026-04-15
---

## Overview

Full guide to transforming a bare bash terminal into a fast, beautiful, keyboard-driven environment. Stack: **Kitty** emulator + **Fish** shell + **modern Rust-based CLI replacements** + **LazyVim** + unified **Kanagawa** color theme.

Demonstrated on CachyOS with the Niri tiling Wayland compositor.

---

## Stack at a Glance

| Layer | Tool | Replaces |
|-------|------|----------|
| Terminal emulator | Kitty | Alacritty / GNOME Terminal |
| Shell | Fish | Bash |
| Prompt theme | Tide (via Fisher) | Manual PS1 |
| `ls` | lsd | ls |
| `cat` | bat | cat |
| `find` | fd | find |
| `grep` | ripgrep (rg) | grep |
| `cd` | zoxide (z) | cd |
| Fuzzy finder | fzf | — |
| System monitor | btop | htop |
| File manager | superfile | ranger |
| Git TUI | lazygit | CLI git |
| Editor/IDE | Neovim + LazyVim | VS Code |
| System info | fastfetch | neofetch |

---

## Installation Steps

### 1. Terminal Emulator — Kitty

```bash
sudo pacman -S kitty fish
```

Key config (`~/.config/kitty/kitty.conf`):
- **Font:** must use a **Nerd Font** (e.g. Hasklug Nerd Font) — required for icons in lsd, superfile, etc.
- `font_size 13`
- `background_opacity 0.95` — subtle transparency
- `cursor_shape beam` — thin vertical line, clearer than block
- `cursor_trail 1` — animated cursor trail (aesthetic only)
- `window_margin_width 8` — padding so text doesn't touch edges
- `confirm_os_window_close 0` — skip close confirmation
- `shell fish` — launch Fish directly in Kitty

### 2. Shell — Fish

```bash
# Make Fish default for all terminals + login
chsh -s /bin/fish

# Install Fisher (plugin manager)
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher

# Install Tide prompt
fisher install IlanCosman/tide@v6
```

Tide setup launches an **interactive wizard** — choose icon style, separators, Git status format. Result: prompt shows current dir, Git branch, last command status, execution time.

**Fish advantages over bash out-of-the-box:**
- Autosuggestions from history (grey ghost text)
- Syntax highlighting while typing (red = invalid command, before Enter)
- No config needed for basic usability

### 3. CLI Utilities

```bash
sudo pacman -S lsd bat btop zoxide fastfetch fzf fd ripgrep lazygit neovim
```

**superfile** — installed separately per its GitHub instructions.

**pokemon-colorscripts** — installed from GitLab page.

### 4. Fish Config (`~/.config/fish/config.fish`)

```fish
# Disable Fish welcome message
set fish_greeting

# Pokemon on terminal open
pokemon-colorscripts -r

# Aliases — replace standard tools
alias ls='lsd'
alias ll='lsd -la'
alias cat='bat'
alias find='fd'
alias grep='rg'

# Initialize zoxide
zoxide init fish | source
```

### 5. Neovim — LazyVim

```bash
# Backup existing config
mv ~/.config/nvim{,.bak}
mv ~/.local/share/nvim{,.bak}
mv ~/.local/state/nvim{,.bak}
mv ~/.cache/nvim{,.bak}

# Install LazyVim starter
git clone https://github.com/LazyVim/starter ~/.config/nvim
rm -rf ~/.config/nvim/.git
```

First launch auto-installs all plugins. Includes: file explorer, LSP, autocomplete, syntax highlighting (Tree-sitter), Telescope fuzzy search, Git integration.

### 6. Unified Color Theme — Kanagawa

Apply Kanagawa to each tool:
- **Kitty:** use built-in theme picker or `include kanagawa.conf` in kitty.conf
- **Neovim:** create `~/.config/nvim/lua/plugins/colorscheme.lua` with `rebelot/kanagawa.nvim`
- **superfile:** create custom theme file at `~/.config/superfile/themes/kanagawa.toml` (use LLM to map Kanagawa hex palette onto superfile's config format)

---

## Tool Demos

### fzf — Fuzzy Open/Edit
```fish
bat (fzf)      # open any file with bat
nvim (fzf)     # open any file in neovim
cd (fzf)       # jump to any directory
```
Fish `(cmd)` syntax substitutes the output — fzf runs first, result passes to outer command.

### zoxide — Smart `cd`
```fish
z kit    # jumps to ~/.config/kitty after visiting it once
z pac    # jumps to /etc/pacman.d
```
Learns from frequency + recency. Needs training — just navigate normally for a day.

### ripgrep — Fast Content Search
```bash
rg "font_family" ~/.config    # find which config file sets the font
```
Respects `.gitignore`, highlights matches, shows line numbers, massively faster than grep on large trees.

### fd — Simple File Find
```bash
fd kitty.conf    # recursive, no flags, colorized output
```

---

## Key Takeaways

- **Nerd Fonts are mandatory** — without them, lsd/superfile/Tide show `?` instead of icons
- **Fish replaces bash config complexity** — no PS1 escape sequences; Tide wizard covers 90% of prompt customization
- **zoxide needs training** — navigate your dirs normally for a day before relying on it
- **One-command install** for most tools: `sudo pacman -S lsd bat btop zoxide fastfetch fzf fd ripgrep lazygit neovim`
- **Unified theme requires manual work** — superfile has no Kanagawa preset; use an LLM to convert hex palette
- **LazyVim** dramatically lowers Neovim entry barrier — full IDE features on first launch
- **fzf is a universal filter** — pipe any list into it; `(fzf)` Fish substitution pattern is extremely versatile
- The whole stack is keyboard-only — ideal for tiling WMs (Niri, Hyprland) where mouse use is minimized

---

## Related Articles

- [[wiki/homelab/proxmox-install-setup-2025|Proxmox Install & Setup]] — another keyboard-heavy Linux environment setup
- [[wiki/dotfiles/fish-shell-config|Fish Shell Config Patterns]] *(planned)*

---

## Sources

- Raw source: `raw/Как сделать терминал в Linux красивым, быстрым и удобным.md`
- Original video: YouTube — Василий Ломагин (2026-03-20)
- Channel community: t.me/dotfiles_linux
