Installation and First Run
This lesson walks through installing kitty and completing your first session: launch, open tabs and windows, navigate, and close cleanly.
Learning Focus
Leave this lesson with kitty installed, a working terminal session, and a clear mental model for window/tab management and configuration.
Install Kitty
# curl-based install (recommended — always up to date)
curl -L https://sw.kovidgoyal.net/kitty/installer.sh | sh /dev/stdin
# Debian/Ubuntu
sudo apt install -y kitty
# Fedora/RHEL
sudo dnf install -y kitty
# Arch Linux
sudo pacman -S kitty
info
The curl installer places kitty in ~/.local/kitty.app/. Package manager versions may be older but are fine for most uses.
Verify Installation
kitty --version
Expected output:
kitty 0.35.2 (or similar)
Your First Session (Full Workflow)
Step 1: Launch Kitty
kitty &
Your terminal window is now a kitty terminal. You will see the kitty status bar at the bottom (if enabled in config).
Step 2: Create a Window Split
Inside kitty, press:
Ctrl+Shift+Enter → Create a vertical split (new window beside current)
You now have two independent terminal shells side by side.
Step 3: Navigate Between Windows
Ctrl+Shift+←/↑/→/↓ → Move focus between windows
Step 4: Create a Tab
Ctrl+Shift+t → Create a new tab
Ctrl+Shift+←/→ → Navigate between tabs
Step 5: Run a Command in One Window
# in one window, run something continuous
ping google.com
Step 6: Close Windows and Tabs
Ctrl+Shift+q → Close current window or tab
exit → Or just exit the shell
Session Lifecycle Summary
┌──────────┐ Ctrl+Shift+Enter ┌──────────┐
│ Launch │ ──────────────────────→│ Active │
│ kitty │ │ Session │
└──────────┘ └────┬─────┘
│
┌──────────────┼──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ New Tab │ │ New Win │ │ Navigate │
│ Ctrl+Sh+t│ │Ctrl+Sh+En│ │ Arrows │
└──────────┘ └──────────┘ └──────────┘
│ │ │
▼ ▼ ▼
┌──────────────────────────────────────┐
│ exit or Ctrl+Shift+q │
│ → window/tab closes │
└──────────────────────────────────────┘
The Status Bar
Kitty's tab bar appears at the top by default (configurable). It shows:
┌─ kitty ───────────────────────────────────────────────────┐
│ [main] [logs*] [config] [bash] [bash] │
│ │
│ <your terminal content here> │
│ │
└────────────────────────────────────────────────────────────┘
- Square brackets show tab names,
*= active tab - The OS window title shows the active tab name
- Window/tab bar can be styled via
kitty.conf
Common Setup Check
| Check | Command | Expected |
|---|---|---|
| kitty installed | kitty --version | Version number printed |
| Kitty launches | kitty & | New terminal window appears |
| Window split works | Ctrl+Shift+Enter | Two shells side by side |
| Tab creation works | Ctrl+Shift+t | New tab created |
| Config file exists | ls ~/.config/kitty/kitty.conf | File exists (or can be created) |
Common Pitfalls
| Pitfall | Symptom | Fix |
|---|---|---|
| Default terminal not changed | Kitty launches but system still uses xterm | Set kitty as default: sudo update-alternatives --set x-terminal-emulator /usr/bin/kitty |
Ctrl+Shift conflicts with IME | Shortcuts don't fire | Remap keys in kitty.conf or change IME settings |
| Old kitty version | Missing features | Use the curl installer instead of OS packages |
| GPU not available | Falls back to CPU (slow) | Check with kitty --debug-rendering |
Hands-On Practice
Try this complete workflow:
# launch kitty
kitty &
# inside kitty:
# Step 1: Create two windows
# Ctrl+Shift+Enter (vertical split)
# Ctrl+Shift+Alt+Enter (horizontal split)
# Step 2: Navigate between them
# Ctrl+Shift+arrows
# Step 3: Run different commands in each
# Left window: htop
# Right top: watch -n 1 date
# Right bottom: ping -c 10 localhost
# Step 4: Create a second tab
# Ctrl+Shift+t
# Step 5: Name the tab
# Ctrl+Shift+Alt+t, type "monitoring", Enter
# Step 6: Close everything
# exit in each shell, or Ctrl+Shift+q on each window
# verify kitty process is gone
pgrep -la kitty 2>/dev/null || echo "kitty closed cleanly"