Provided by: kitty_0.39.1-1_amd64 

Name
kitten-icat - Display images in the terminal
Overview
Display images in the terminal
The icat kitten can be used to display arbitrary images in the kitty terminal. Using it is as simple as:
kitten icat image.jpeg
It supports all image types supported by ImageMagick. It even works over SSH. For details, see the kitty
graphics protocol.
You might want to create an alias in your shell's configuration files:
alias icat="kitten icat"
Then you can simply use icat image.png to view images.
NOTE:
ImageMagick must be installed for the full range of image types. Without it only
PNG/JPG/GIF/BMP/TIFF/WEBP are supported.
NOTE:
kitty's image display protocol may not work when used within a terminal multiplexer such as screen or
tmux, depending on whether the multiplexer has added support for it or not.
The icat kitten has various command line arguments to allow it to be used from inside other programs to
display images. In particular, --place, --detect-support and --print-window-size.
If you are trying to integrate icat into a complex program like a file manager or editor, there are a few
things to keep in mind. icat normally works by communicating over the TTY device, it both writes to and
reads from the TTY. So it is imperative that while it is running the host program does not do any TTY
I/O. Any key presses or other input from the user on the TTY device will be discarded. If you would
instead like to use it just as a backend to generate the escape codes for image display, you need to pass
it options to tell it the window dimensions, where to place the image in the window and the transfer mode
to use. If you do that, it will not try to communicate with the TTY device at all. The requisite options
are: --use-window-size, --place and --transfer-mode, --stdin=no. For example, to demonstrate usage
without access to the TTY:
zsh -c 'setsid kitten icat --stdin=no --use-window-size $COLUMNS,$LINES,3000,2000 --transfer-mode=file myimage.png'
Here, setsid ensures icat has no access to the TTY device. The values, 3000, 2000 are made up. They are
the window width and height in pixels, to obtain which access to the TTY is needed.
To be really robust you should consider writing proper support for the kitty graphics protocol in the
program instead. Nowadays there are many libraries that have support for it.
Source code for icat
The source code for this kitten is available on GitHub.
Command line interface
kitten icat [options] image-file-or-url-or-directory ...
A cat like utility to display images in the terminal. You can specify multiple image files and/or
directories. Directories are scanned recursively for image files. If STDIN is not a terminal, image data
will be read from it as well. You can also specify HTTP(S) or FTP URLs which will be automatically
downloaded and displayed.
Options
--align <ALIGN>
Horizontal alignment for the displayed image. Default: center Choices: center, left, right
--place <PLACE>
Choose where on the screen to display the image. The image will be scaled to fit into the
specified rectangle. The syntax for specifying rectangles is <width>x<height>@<left>x<top>. All
measurements are in cells (i.e. cursor positions) with the origin (0, 0) at the top-left corner of
the screen. Note that the --align option will horizontally align the image within this rectangle.
By default, the image is horizontally centered within the rectangle. Using place will cause the
cursor to be positioned at the top left corner of the image, instead of on the line after the
image.
--scale-up
When used in combination with --place it will cause images that are smaller than the specified
area to be scaled up to use as much of the specified area as possible.
--background <BACKGROUND>
Specify a background color, this will cause transparent images to be composited on top of the
specified color. Default: none
--mirror <MIRROR>
Mirror the image about a horizontal or vertical axis or both. Default: none Choices: both,
horizontal, none, vertical
--clear
Remove all images currently displayed on the screen.
--transfer-mode <TRANSFER_MODE>
Which mechanism to use to transfer images to the terminal. The default is to auto-detect. file
means to use a temporary file, memory means to use shared memory, stream means to send the data
via terminal escape codes. Note that if you use the file or memory transfer modes and you are
connecting over a remote session then image display will not work. Default: detect Choices:
detect, file, memory, stream
--detect-support
Detect support for image display in the terminal. If not supported, will exit with exit code 1,
otherwise will exit with code 0 and print the supported transfer mode to stderr, which can be used
with the --transfer-mode option.
--detection-timeout <DETECTION_TIMEOUT>
The amount of time (in seconds) to wait for a response from the terminal, when detecting image
display support. Default: 10
--use-window-size <USE_WINDOW_SIZE>
Instead of querying the terminal for the window size, use the specified size, which must be of the
format: width_in_cells,height_in_cells,width_in_pixels,height_in_pixels
--print-window-size
Print out the window size as <width>x<height> (in pixels) and quit. This is a convenience method
to query the window size if using kitten icat from a scripting language that cannot make termios
calls.
--stdin <STDIN>
Read image data from STDIN. The default is to do it automatically, when STDIN is not a terminal,
but you can turn it off or on explicitly, if needed. Default: detect Choices: detect, no, yes
--silent
Not used, present for legacy compatibility.
--engine <ENGINE>
The engine used for decoding and processing of images. The default is to use the most appropriate
engine. The builtin engine uses Go's native imaging libraries. The magick engine uses ImageMagick
which requires it to be installed on the system. Default: auto Choices: auto, builtin, magick
--z-index <Z_INDEX>, -z <Z_INDEX>
Z-index of the image. When negative, text will be displayed on top of the image. Use a double
minus for values under the threshold for drawing images under cell background colors. For example,
--1 evaluates as -1,073,741,825. Default: 0
--loop <LOOP>, -l <LOOP>
Number of times to loop animations. Negative values loop forever. Zero means only the first frame
of the animation is displayed. Otherwise, the animation is looped the specified number of times.
Default: -1
--hold Wait for a key press before exiting after displaying the images.
--unicode-placeholder
Use the Unicode placeholder method to display the images. Useful to display images from within
full screen terminal programs that do not understand the kitty graphics protocol such as
multiplexers or editors. See Unicode placeholders for details. Note that when using this method,
images placed (with --place) that do not fit on the screen, will get wrapped at the screen edge
instead of getting truncated. This wrapping is per line and therefore the image will look like it
is interleaved with blank lines.
--passthrough <PASSTHROUGH>
Whether to surround graphics commands with escape sequences that allow them to passthrough
programs like tmux. The default is to detect when running inside tmux and automatically use the
tmux passthrough escape codes. Note that when this option is enabled it implies
--unicode-placeholder as well. Default: detect Choices: detect, none, tmux
--image-id <IMAGE_ID>
The graphics protocol id to use for the created image. Normally, a random id is created if needed.
This option allows control of the id. When multiple images are sent, sequential ids starting from
the specified id are used. Valid ids are from 1 to 4294967295. Numbers outside this range are
automatically wrapped. Default: 0
--no-trailing-newline, -n
By default, the cursor is moved to the next line after displaying an image. This option, prevents
that. Should not be used when catting multiple images. Also has no effect when the --place option
is used.
Author
Kovid Goyal
Copyright
2025, Kovid Goyal
0.39.1 Feb 16, 2025 kitten-icat(1)