kitten-icat(1) kitty kitten-icat(1)

kitten-icat - نمایش تصاویر در ترمینال

نمایش تصاویر در ترمینال

کیتن icat می‌تواند برای نمایش تصاویر دلخواه در ترمینال kitty استفاده شود. نحوه استفاده از آن بسیار ساده است:

kitten icat image.jpeg

این ابزار از تمام انواع تصاویری که توسط ImageMagick https://www.imagemagick.org پشتیبانی می‌شوند، پشتیبانی می‌کند. حتی از طریق SSH نیز کار می‌کند. برای جزئیات، به پروتکل گرافیکی kitty در <> مراجعه کنید.

ممکن است بخواهید یک نام مستعار (alias) در فایل‌های پیکربندی پوسته خود ایجاد کنید:

alias icat="kitten icat"

سپس می‌توانید به سادگی با استفاده از icat image.png تصاویر را مشاهده کنید.

نکته:

برای پشتیبانی از تمام انواع فرمت‌های تصویر، ImageMagick https://www.imagemagick.org باید نصب شده باشد. بدون آن، تنها فرمت‌های PNG/JPG/GIF/BMP/TIFF/WEBP پشتیبانی می‌شوند.

نکته:

پروتکل نمایش تصویر kitty ممکن است هنگام استفاده درون یک تسهیم‌کننده ترمینال (multiplexer) مانند screen یا tmux، بسته به اینکه آن تسهیم‌کننده از این پروتکل پشتیبانی می‌کند یا خیر، کار نکند.

کیتن icat دارای آرگومان‌های خط فرمان گوناگونی است که امکان استفاده از آن را از داخل برنامه‌های دیگر برای نمایش تصاویر فراهم می‌کند؛ به ویژه گزینه‌های --place، --detect-support و --print-window-size.

اگر در تلاشید تا icat را در برنامه‌ای پیچیده مانند یک مدیر فایل یا یک ویرایشگر ادغام کنید، چند نکته را باید در نظر داشته باشید. برنامه icat معمولاً از طریق ارتباط با دستگاه TTY کار می‌کند؛ یعنی هم روی TTY می‌نویسد و هم از آن می‌خواند. بنابراین بسیار ضروری است که در حین اجرای آن، برنامه میزبان هیچ‌گونه عملیات ورودی/خروجی TTY انجام ندهد. هرگونه فشردن کلید یا ورودی دیگر کاربر روی دستگاه TTY نادیده گرفته و دور ریخته خواهد شد. اگر در عوض می‌خواهید از آن صرفاً به عنوان یک پیشانه (backend) برای تولید کدهای گریز نمایش تصویر استفاده کنید، باید گزینه‌هایی را به آن ارسال کنید که ابعاد پنجره، محل قرارگیری تصویر در پنجره و حالت انتقال را مشخص کند. در صورت انجام این کار، این ابزار اصلاً تلاشی برای برقراری ارتباط با دستگاه TTY نخواهد کرد. گزینه‌های لازم عبارتند از: --use-window-size، --place، --transfer-mode و --stdin=no. برای نمونه، به منظور نشان دادن نحوه استفاده بدون دسترسی به TTY:

zsh -c 'setsid kitten icat --stdin=no --use-window-size $COLUMNS,$LINES,3000,2000 --transfer-mode=file myimage.png'

در اینجا، setsid تضمین می‌کند که icat هیچ‌گونه دسترسی به دستگاه TTY ندارد. مقادیر 3000 و 2000 ساختگی هستند؛ آن‌ها پهنا و ارتفاع پنجره بر حسب پیکسل هستند که به دست آوردن آن‌ها مستلزم دسترسی به TTY است.

برای دستیابی به پایداری کامل، بهتر است به جای این کار، پشتیبانی مناسب از پروتکل گرافیکی kitty در <> را در برنامه خود پیاده‌سازی کنید. امروزه کتابخانه‌های بسیاری وجود دارند که از آن پشتیبانی می‌کنند.

کد منبع این کیتن در گیت‌هاب در دسترس است: https://github.com/kovidgoyal/kitty/tree/master/kittens/icat.

kitten icat [options] image-file-or-url-or-directory ...

ابزاری مشابه cat برای نمایش تصاویر در ترمینال. می‌توانید چندین فایل تصویر و/یا دایرکتوری را مشخص کنید. دایرکتوری‌ها به صورت بازگشتی برای یافتن فایل‌های تصویر پویش می‌شوند. اگر ورودی استاندارد (STDIN) یک ترمینال نباشد، داده‌های تصویر از آن نیز خوانده خواهد شد. همچنین می‌توانید نشانی‌های وب HTTP(S) یا FTP را مشخص کنید که به طور خودکار بارگیری و نمایش داده می‌شوند.

تراز افقی برای تصویر نمایش داده‌شده. پیش‌فرض: center انتخاب‌ها: center، left، right
انتخاب محل نمایش تصویر روی صفحه نمایش. اندازه تصویر به گونه‌ای تغییر مقیاس می‌یابد که در مستطیل مشخص‌شده جا بگیرد. نحو مشخص کردن مستطیل‌ها به صورت <width>x<height>@<left>x<top> است. تمامی اندازه‌گیری‌ها بر حسب سلول‌ها (یعنی موقعیت‌های مکان‌نما) با مبدا مختصات (0، 0) در گوشه بالا-چپ صفحه نمایش است. توجه داشته باشید که گزینه --align تصویر را به صورت افقی درون این مستطیل تراز می‌کند. به طور پیش‌فرض، تصویر در مرکز افقی این مستطیل قرار می‌گیرد. استفاده از place باعث می‌شود مکان‌نما به جای قرار گرفتن در خط پس از تصویر، در گوشه بالا-چپ تصویر قرار گیرد.
باعث می‌شود تصاویری که کوچک‌تر از ناحیه مشخص‌شده هستند بزرگ‌نمایی شوند تا حد امکان بیشترین بخش از ناحیه مشخص‌شده را پر کنند. ناحیه مشخص‌شده به گزینه‌های --place یا --fit بستگی دارد.
هنگامی که از گزینه --place استفاده نمی‌شود، نحوه مقیاس‌بندی تصویر نسبت به صفحه نمایش را کنترل می‌کند. می‌توانید آن را طوری تنظیم کنید که با پهنا، با ارتفاع، با هر دو یا با هیچ‌کدام متناسب شود. پیش‌فرض: width انتخاب‌ها: both، height، none، width
مشخص کردن یک رنگ پس‌زمینه؛ این کار باعث می‌شود تصاویر دارای شفافیت روی رنگ مشخص‌شده ترکیب شوند. پیش‌فرض: none
آینه‌ای کردن تصویر حول محور افقی یا عمودی یا هر دو. پیش‌فرض: none انتخاب‌ها: both، horizontal، none، vertical
حذف تمام تصاویری که در حال حاضر روی صفحه نمایش نشان داده می‌شوند. توجه داشته باشید که این گزینه با تسهیم‌کننده‌های ترمینال مانند tmux کار نمی‌کند، زیرا تنها تسهیم‌کننده از موقعیت صفحه نمایش مطلع است.
حذف تمام تصاویر از صفحه نمایش و تاریخچه پیمایش (scrollback). توجه داشته باشید که در تسهیم‌کننده‌های ترمینال مانند tmux، این گزینه تصاویر را از تمامی قاب‌ها (panes) حذف خواهد کرد.
کدام سازوکار برای انتقال تصاویر به ترمینال استفاده شود. حالت پیش‌فرض، تشخیص خودکار (auto-detect) است. مقدار file به معنای استفاده از فایل موقت، مقدار memory به معنای استفاده از حافظه اشتراکی، و مقدار stream به معنای ارسال داده‌ها از طریق کدهای گریز ترمینال است. توجه داشته باشید که اگر از حالت‌های انتقال file یا memory استفاده کنید و در حال اتصال از طریق یک نشست راه دور باشید، نمایش تصویر کار نخواهد کرد. پیش‌فرض: detect انتخاب‌ها: detect، file، memory، stream
تشخیص پشتیبانی از نمایش تصویر در ترمینال. در صورت عدم پشتیبانی، با کد خروج ۱ خارج می‌شود؛ در غیر این صورت با کد ۰ خارج شده و حالت انتقال پشتیبانی‌شده را در خروجی خطای استاندارد (stderr) چاپ می‌کند که می‌توان آن را همراه با گزینه --transfer-mode به کار برد.
مدت زمان (بر حسب ثانیه) برای انتظار جهت دریافت پاسخ از ترمینال، هنگام تشخیص پشتیبانی از نمایش تصویر. پیش‌فرض: 10
به جای پرس‌وجوی اندازه پنجره از ترمینال، از اندازه مشخص‌شده استفاده می‌کند که باید در قالب width_in_cells,height_in_cells,width_in_pixels,height_in_pixels باشد.
اندازه پنجره را به صورت <width>x<height> (بر حسب پیکسل) چاپ کرده و خارج می‌شود. این روشی مناسب برای پرس‌وجوی اندازه پنجره هنگام استفاده از kitten icat در یک زبان اسکریپت‌نویسی است که نمی‌تواند فراخوانی‌های termios انجام دهد.
خواندن داده‌های تصویر از ورودی استاندارد (STDIN). به طور پیش‌فرض وقتی STDIN یک ترمینال نباشد، این کار به صورت خودکار انجام می‌شود، اما در صورت نیاز می‌توانید آن را صراحتاً خاموش یا روشن کنید. پیش‌فرض: detect انتخاب‌ها: detect، no، yes
استفاده نمی‌شود؛ صرفاً برای سازگاری با نسخه‌های قدیمی وجود دارد.
موتور مورد استفاده برای رمزگشایی و پردازش تصاویر. حالت پیش‌فرض استفاده از مناسب‌ترین موتور است. موتور builtin از کتابخانه‌های بومی تصویر زبان Go استفاده می‌کند. موتور magick از ImageMagick استفاده می‌کند که نیازمند نصب بودن آن بر روی سیستم است. پیش‌فرض: auto انتخاب‌ها: auto، builtin، magick
شاخص Z (Z-index) تصویر. هنگامی که مقدار منفی باشد، متن بر روی تصویر نمایش داده خواهد شد. از علامت منفی دوتایی برای مقادیر زیر آستانه جهت ترسیم تصاویر زیر رنگ پس‌زمینه سلول استفاده کنید. به عنوان مثال، --1 به صورت -1,073,741,825 ارزیابی می‌شود. پیش‌فرض: 0
تعداد دفعات تکرار پویانمایی‌ها. مقادیر منفی تا ابد تکرار می‌شوند. مقدار صفر به این معنی است که فقط نخستین فریم از پویانمایی نمایش داده می‌شود. در غیر این صورت، پویانمایی به تعداد دفعات مشخص‌شده تکرار می‌گردد. پیش‌فرض: -1
پس از نمایش تصاویر، پیش از خروج منتظر فشردن یک کلید می‌ماند.
استفاده از روش مکان‌نمای یونیکد (Unicode placeholder) برای نمایش تصاویر. برای نمایش تصاویر از درون برنامه‌های ترمینال تمام‌صفحه که پروتکل گرافیکی kitty را پشتیبانی نمی‌کنند (مانند تسهیم‌کننده‌ها یا ویرایشگرها) کاربرد دارد. برای جزئیات به بخش جایگزین‌های یونیکد در <#graphics-unicode-placeholders> مراجعه کنید. توجه داشته باشید که هنگام استفاده از این روش، تصاویری که با گزینه --place قرار داده شده و در صفحه جا نمی‌شوند، به جای بریده شدن، در لبه صفحه شکسته و پیچیده می‌شوند. این شکستگی در هر خط صورت می‌گیرد و بنابراین به نظر می‌رسد که تصویر به صورت متناوب با خطوط خالی ترکیب شده است.
مشخص می‌کند که آیا دستورات گرافیکی با توالی‌های گریز احاطه شوند تا اجازه عبور مستقیم (passthrough) از برنامه‌هایی مانند tmux را داشته باشند یا خیر. حالت پیش‌فرض، تشخیص اجرای برنامه در داخل tmux و استفاده خودکار از کدهای گریز عبور مستقیم tmux است. توجه داشته باشید که فعال بودن این گزینه به طور ضمنی گزینه --unicode-placeholder را نیز به همراه دارد. پیش‌فرض: detect انتخاب‌ها: detect، none، tmux
شناسه پروتکل گرافیکی برای استفاده در تصویر ایجادشده. معمولاً در صورت نیاز یک شناسه تصادفی ساخته می‌شود. این گزینه امکان کنترل شناسه را فراهم می‌کند. هنگامی که چندین تصویر ارسال می‌شوند، شناسه‌های متوالی با شروع از شناسه مشخص‌شده استفاده می‌شوند. شناسه‌های معتبر از 1 تا 4294967295 هستند. اعداد خارج از این محدوده به طور خودکار بازگردانی می‌شوند. پیش‌فرض: 0
به طور پیش‌فرض، مکان‌نما پس از نمایش تصویر به خط بعدی منتقل می‌شود. این گزینه از این کار جلوگیری می‌کند. نباید هنگام نمایش چندین تصویر متوالی استفاده شود. همچنین در صورت استفاده از گزینه --place هیچ اثری ندارد.

Kovid Goyal

2026, Kovid Goyal

July 30, 2026 0.48.2