Windows Basics
Windows in kitty are like terminal splits inside a single tab. Each window runs an independent shell process, and you can arrange them side by side or in a grid.
Use this lesson to get comfortable creating, navigating, and resizing windows for efficient multi-tool workflows.
Creating Windows
# from inside kitty
Ctrl+Shift+Enter → New window (vertical split — side by side)
Ctrl+Shift+Alt+Enter → New window (horizontal split — top/bottom)
# from the command line
kitty @ new-window
kitty @ new-window --cwd /var/log
kitty @ new-window --cwd /etc --title "config"
Window Splits Visual
Vertical split (Ctrl+Shift+Enter):
┌─────────────────────┬─────────────────────┐
│ │ │
│ Window 0 │ Window 1 │
│ (shell) │ (vim) │
│ │ │
└─────────────────────┴─────────────────────┘
Horizontal split (Ctrl+Shift+Alt+Enter):
┌───────────────────────────────────────────┐
│ Window 0 │
│ (shell) │
├───────────────────────────────────────────┤
│ Window 1 │
│ (htop) │
└───────────────────────────────────────────┘
Navigating Between Windows
| Shortcut | Action |
|---|---|
Ctrl+Shift+left | Focus window to the left |
Ctrl+Shift+right | Focus window to the right |
Ctrl+Shift+up | Focus window above |
Ctrl+Shift+down | Focus window below |
Ctrl+Shift+o | Focus next window (cycle) |
Resizing Windows
| Shortcut | Action |
|---|---|
Ctrl+Shift+Alt+left | Widen focused window |
Ctrl+Shift+Alt+right | Narrow focused window |
Ctrl+Shift+Alt+up | Shorten focused window |
Ctrl+Shift+Alt+down | Taller focused window |
Ctrl+Shift+Alt+= | Reset window sizes (equal) |
From the command line:
# resize by percentage
kitty @ resize-window --increment 5
# reset to equal sizes
kitty @ resize-window --reset
Maximizing Windows
Ctrl+Shift+z → Toggle maximize on current window
One window fills the entire tab area. Press Ctrl+Shift+z again to return to the split layout.
Use maximize when you need to focus on one task (e.g., reading logs), then unmaximize to return to your multi-window layout.
Closing Windows
# inside the window
exit
# force close current window
Ctrl+Shift+q
# close from command line
kitty @ close-window
Closing the last window in a tab closes the tab. Closing the last tab closes the kitty window (but not the server — it stays running for remote control).
Moving and Swapping Windows
# from the command line
kitty @ neighboring_window left
kitty @ neighboring_window right
You can also use mouse drag to reorder windows (if enabled in config).
Window Layouts
Kitty offers several layouts that control how windows are arranged (see Layouts and Tiling):
| Layout | Behavior |
|---|---|
fat | Equal sized vertical splits |
grid | Balanced grid arrangement |
horizontal | Side by side (default for new windows) |
splits | Manual split-based layout |
stack | Only one window visible at a time |
tall | One main window on left, rest stack on right |
vertical | Windows stacked top to bottom |
Common Window Workflow: Monitoring
# start kitty, then inside a tab:
# Ctrl+Shift+Enter → split vertically (left: shell, right: empty)
# Ctrl+Shift+Alt+Enter → split right side horizontally (right-top, right-bottom)
# Ctrl+Shift+arrows → navigate between all three
# Result:
# ┌─────────────────────┬─────────────────────┐
# │ │ htop │
# │ tail -f app.log ├─────────────────────┤
# │ │ watch df -h │
# └─────────────────────┴─────────────────────┘
Common Pitfalls
| Pitfall | Symptom | Fix |
|---|---|---|
| Too many windows in one tab | Cramped, unreadable splits | Use multiple tabs instead |
| Window resize not working | Modifier conflict with window manager | Remap resize keys, or use Ctrl+Shift+Alt+arrows |
Ctrl+Shift+q closes whole tab | Only one window left | Create more windows first, or add a second tab |
| Mouse drag not reordering | Feature disabled | Enable mouse_map in kitty.conf |
Hands-On Practice
Try this inside kitty:
# Step 1: Create a vertical split
# Ctrl+Shift+Enter
# Step 2: Create a horizontal split on the right
# Ctrl+Shift+Alt+Enter (with focus on right window)
# Step 3: Navigate between windows
# Ctrl+Shift+arrows
# Step 4: Run different commands
# Window 0: watch -n 1 'date'
# Window 1: ping -c 10 localhost
# Window 2: echo "hello from window 3"
# Step 5: Maximize one window
# Ctrl+Shift+z
# Step 6: Return to split view
# Ctrl+Shift+z
# Step 7: Resize windows
# Ctrl+Shift+Alt+left (widen current window)
# Step 8: Close windows
# Ctrl+Shift+q on each, or exit