В прошлых двух выпусках про kitty были установка и remote control, а сегодня — то, что обычный терминал вообще не умеет: показать картинку не угадывая цвет псевдографикой, а честным растром прямо в сетке символов.
Делается это одной командой — kitten это отдельный бинарник-утилита, который ставится вместе с kitty:
kitten icat path/to/screenshot.png
Поддерживаются PNG, JPEG, GIF, BMP, TIFF и WEBP из коробки, остальные форматы — через ImageMagick, если он установлен. Работает и через SSH на удалённый хост с kitty в качестве клиентского терминала, так что скриншот с сервера можно глянуть не скачивая файл локально.
Под капотом — собственный терминальный графический протокол kitty. Байты изображения, сырые RGBA или уже сжатый PNG, режутся на куски, кодируются в base64 и уходят терминалу через escape-последовательности вида <ESC>_G...<ESC>\. Классический терминал умеет только текст, цвет и курсор. Картинку он просто не узнаёт и в худшем случае напечатает мусором на экран.
Эмулятор либо понимает эти последовательности и рисует пиксели поверх сетки символов, либо молча их игнорирует. Поэтому icat рисует картинку только в самом kitty и в тех эмуляторах, что реализовали тот же протокол, например в WezTerm. В обычном xterm или gnome-terminal эта команда ничего не нарисует — просто отмолчится.
#kitty #terminal
