Kitty terminal supports displaying images directly in the terminal using its graphics protocol. Here are several ways to output images:
## 1. Using the built-in `kitten icat` command
The easiest method is using kitty's built-in image viewer:
```bash
kitten icat image.png
```
### Common options for `icat`:
```bash
# Display image with specific width/height
kitten icat --width=80 --height=24 image.png
# Display image and remove it after keypress
kitten icat --hold image.png
# Display image with transparency
kitten icat --background=white image.png
# Display multiple images
kitten icat image1.png image2.jpg image3.gif
```
## 2. Using the `kitty +kitten` syntax
Alternative syntax (equivalent to above):
```bash
kitty +kitten icat image.png
```
## 3. Programming with the graphics protocol
### Python example:
```python
import base64
import sys
def display_image(image_path):
with open(image_path, 'rb') as f:
image_data = base64.b64encode(f.read()).decode('ascii')
# Kitty graphics protocol
print(f'\033_Ga=T,f=100;{image_data}\033\\')
display_image('image.png')
```
### Shell script example:
```bash
#!/bin/bash
# Display image using kitty graphics protocol
image_file="$1"
encoded_image=$(base64 < "$image_file")
printf '\033_Ga=T,f=100;%s\033\\' "$encoded_image"
```
## 4. Other tools that work with kitty
```bash
# Using ranger file manager (supports kitty preview)
ranger
# Using feh with kitty support
feh --bg-scale image.png
# Using neofetch (will show images in kitty)
neofetch --source image.png
```
## Tips:
- Make sure you're running a recent version of kitty
- Images work best in full kitty terminal (may not work over SSH unless using kitty's SSH kitten)
- Supported formats: PNG, JPEG, GIF, WebP, and more
- Use `kitten icat --help` for full list of options
The `kitten icat` command is the most user-friendly option for most use cases.