CHAFA(1) User Commands CHAFA(1)

chafa - تولیدکننده هنر نویسه‌ای و تصاویر شبیه‌سازی‌شده در ترمینال

chafa [OPTION...] [IMAGE...]

chafa یک ابزار خط فرمان است که داده‌های تصویری، از جمله تصاویر متحرک GIF را به قالب‌های گرافیکی یا هنر نویسه‌ای ANSI/Unicode مناسب برای نمایش در ترمینال تبدیل می‌کند. این ابزار از قابلیت‌های گسترده‌ای پشتیبانی می‌کند که امکان استفاده از آن را روی دستگاه‌های مختلف، از تله‌پرینترهای قدیمی گرفته تا شبیه‌سازهای مدرن ترمینال و هر دستگاهی در این میان، فراهم می‌سازد.

می‌توانید یک یا چند فایل ورودی را مشخص کنید، اما رفتار پیش‌فرض هنگام مشخص کردن چند فایل کمی متفاوت است؛ برای نمونه، زمانی که بیش از یک فایل ورودی وجود داشته باشد، پویانمایی‌ها به صورت بی‌پایان تکرار نخواهند شد.

--files path

خواندن فهرستی از مسیرها جهت پردازش از path، یا '-' برای ورودی استاندارد (stdin). مسیرها باید با خط جدید (newline) از یکدیگر جدا شوند.

می‌تواند چندین بار مشخص شود. هر مسیر اضافی دیگری در خط فرمان، در انتهای کار پردازش خواهد شد.

--files0 path

خواندن فهرستی از مسیرها جهت پردازش از path، یا '-' برای ورودی استاندارد (stdin). مسیرها باید با بایت‌های NUL از یکدیگر جدا شوند. در صورتی که سیستم‌فایل شما اجازه وجود خط جدید در نام فایل‌ها را می‌دهد (مانند POSIX)، این روش پایدارتر و ایمن‌تر است. در ترکیب با سایر ابزارهایی که از این قابلیت پشتیبانی می‌کنند مفید است، مانند:

find . -type f -print0 | chafa --files0 -

می‌تواند چندین بار مشخص شود. هر مسیر اضافی دیگری در خط فرمان، در انتهای کار پردازش خواهد شد.

-h, --help

نمایش متن راهنمای مختصر.

--probe arg

بررسی قابلیت‌های ترمینال و انتظار برای پاسخ [auto, on, off]. یک عدد حقیقی مثبت نشان‌دهنده حداکثر زمان انتظار برای پاسخ به ثانیه است. پیش‌فرض 5.0 است.

--probe-mode mode

نحوه بررسی قابلیت‌های ترمینال [any, ctty, stdio]. مقدار "any" پیش‌فرض است و با هر روش در دسترسی بررسی را انجام می‌دهد. مقدار "ctty" پایانه کنترلی (معمولاً ‎/dev/tty‎) را بررسی می‌کند که در زمان قرار داشتن chafa درون یک خط لوله (پایپ) کاربرد دارد؛ در صورت انجام در پس‌زمینه ممکن است مسدود شود. مقدار "stdio" صرفاً ورودی/خروجی استاندارد را در نظر می‌گیرد.

--version

نمایش اطلاعات نسخه، ویژگی‌ها و حق نشر.

-f, --format format

تنظیم قالب خروجی؛ یکی از [iterm, kitty, sixels, symbols]. مقدار پیش‌فرض در صورت پشتیبانی ترمینال متصل، یکی از iterm، kitty یا sixels است و در غیر این صورت به symbols ("هنر ANSI") بازمی‌گردد.

-O num, --optimize num

فشرده‌سازی خروجی با استفاده هوشمندانه از توالی‌های کنترلی [0-9]. مقدار 0 بهینه‌سازی را غیرفعال می‌کند و 9 تمام بهینه‌سازی‌های موجود را فعال می‌سازد. مقدار پیش‌فرض 5 است، به جز زمانی که با "-c none"; استفاده شود که در آن حالت پیش‌فرض 0 خواهد بود.

--relative bool

استفاده از موقعیت‌یابی نسبی مکان‌نما [on, off]. هنگام فعال بودن، از توالی‌های کنترلی برای قرار دادن تصاویر نسبت به مکان‌نما استفاده می‌شود. هنگام غیرفعال بودن، از خطوط جدید برای جداسازی سطرها استفاده خواهد شد؛ برای نمونه جهت سازگاری با 'less -R'. پیش‌فرض off است.

--passthrough mode

عبور مستقیم پروتکل گرافیکی [auto, none, screen, tmux]. برای نمایش گرافیک‌های پیکسلی از درون تسهیم‌کننده‌ها استفاده می‌شود. پیش‌فرض auto است که در صورت تشخیص ترمینال Kitty به همراه یکی از تسهیم‌کننده‌های پشتیبانی‌شده، حالت عبور مستقیم را فعال می‌کند. سایر ترکیب‌ها باید به صورت دستی فعال شوند؛ همراه با گزینه -f برای انتخاب پروتکل گرافیکی مناسب استفاده کنید.

--polite bool

حالت محتاطانه [on, off]. توالی‌های کنترلی فرار را که در موارد نادر ممکن است باعث سردرگمی ترمینال یا سایر برنامه‌ها شوند مهار می‌کند. پیش‌فرض off است.

--align ALIGN

تراز کردن تصاویر در درگاه دید (viewport). ترازهای زیر پشتیبانی می‌شوند: left، right، top، bottom، hcenter، vcenter، center. دو تراز عمود بر هم را می‌توان با کاما جدا کرد، برای نمونه "center,right". معنای "center" به زمینه بستگی دارد و در صورت ابهام، پیش‌فرض آن "hcenter" است. مقدار "center,center" در امتداد هر دو محور تصویر را مرکزچین می‌کند.

مرکزچین کردن عمودی زمانی منطقی است که همراه با "--clear" استفاده شود، یا احتمالاً به عنوان بخشی از ساختاری که مکان‌نما از قبل در گوشه بالا-چپ نما قرار گرفته باشد، یا نمای فرعی هنگام استفاده با "--relative on";.

-C bool, --center bool

مرکزچین کردن افقی تصاویر در نما [on, off]. پیش‌فرض off است. این گزینه منسوخ شده است؛ به جای آن از "--align center"; استفاده کنید.

--clear

پاک کردن صفحه قبل از پردازش هر فایل.

--exact-size mode

تلاش برای تطابق دقیق با اندازه ورودی [auto, on, off]. در صورت فعال بودن، این گزینه سایر تنظیمات اندازه را نادیده گرفته و تصاویر خروجی را دقیقاً در ابعاد پیکسلی ورودی‌ها تولید می‌کند. در حالت auto، در صورتی که اندازه خروجی برابر یا کمی بزرگتر از ورودی باشد، از مقیاس‌بندی اجتناب شده (به ازای افزودن حاشیه/padding) عمل می‌شود. هنگام غیرفعال بودن، هیچ حاشیه‌ای افزوده نمی‌شود و تصویر برای جا گرفتن در گستره خانه متناظر مقیاس‌بندی می‌شود. پیش‌فرض auto است.

--fit-width

برازش تصویر با عرض نما، با احتمال فراتر رفتن از ارتفاع آن.

--font-ratio width/height

نسبت عرض به ارتفاع قلم هدف. می‌تواند به عنوان یک عدد حقیقی یا کسر مشخص شود. پیش‌فرض 1/2 است. این مورد فقط در حالت نماد (symbol mode) اعمال خواهد شد.

--grid colsxrows

چیدمان تصاویر در یک شبکه با cols ستون و rows سطر در هر صفحه نمایش. هر یک از cols یا rows می‌تواند حذف شود، برای نمونه ‎--grid 4‎ یا ‎--grid x4‎، که در این حالت تخصیص خانه‌ها تقریباً مربع خواهد بود. اگر "auto" مشخص شود، ابعاد به طور خودکار انتخاب می‌شوند.

-g

نام مستعار برای "--grid auto";.

--label bool

برچسب‌گذاری [on, off]. در صورت فعال بودن، هر تصویر با نام فایل خود برچسب‌گذاری می‌شود. پیش‌فرض off است.

-l

نام مستعار برای "--label on";.

--margin-bottom num

هنگام تشخیص اندازه ترمینال، حداقل این تعداد سطر را در پایین به عنوان حاشیه ایمنی رزرو می‌کند. می‌تواند برای جلوگیری از اسکرول شدن تصاویر به بیرون استفاده شود. پیش‌فرض 1 است.

--margin-right num

هنگام تشخیص اندازه ترمینال، حداقل این تعداد ستون را در سمت راست به عنوان حاشیه ایمنی رزرو می‌کند. پیش‌فرض 0 است.

--scale num

مقیاس‌بندی تصویر با در نظر گرفتن حداکثر ابعاد ترمینال. مقدار 1.0 تقریبی از ابعاد پیکسلی اصلی است. برای استفاده از تمام فضای موجود، مقدار "max" را مشخص کنید. پیش‌فرض برای گرافیک پیکسلی 1.0 و برای نمادها 4.0 است.

-s widthxheight, --size widthxheight

تنظیم حداکثر ابعاد تصویر خروجی بر حسب ستون‌ها و سطرها. به طور پیش‌فرض این مقدار برابر با اندازه نما خواهد بود (بخش --view-size را ببینید).

--stretch

کشیدن تصویر برای جا گرفتن در ابعاد خروجی؛ نسبت ابعاد نادیده گرفته می‌شود. به طور ضمنی شامل --scale max است.

--view-size widthxheight

تنظیم اندازه نما بر حسب ستون‌ها و سطرها. به طور پیش‌فرض اندازه ترمینال شما خواهد بود، یا اگر تشخیص اندازه با شکست مواجه شود، 80x25 در نظر گرفته می‌شود. اگر یکی از ابعاد حذف شود (مثلاً با ارائه اندازه به صورت 80x یا x25)، به تقریبی معقول از بی‌نهایت تنظیم خواهد شد.

--animate bool

مجاز بودن اجرای پویانمایی [on, off]. پیش‌فرض on است. هنگام غیرفعال بودن، یک فریم ثابت از هر پویانمایی نمایش داده می‌شود.

-d, --duration seconds

مدت زمان نمایش هر فایل به ثانیه. پیش‌فرض برای تصاویر ثابت و پویانمایی‌ها هنگام مشخص کردن چندین فایل صفر است. اگر یک پویانمایی منفرد مشخص شود، پیش‌فرض بی‌نهایت یا "inf" است. پویانمایی‌ها همیشه حداقل یک‌بار به طور کامل پخش می‌شوند، حتی اگر مدت زمان مثلاً صفر باشد. برای اطلاعات بیشتر بخش "مدت زمان (DURATION)" را ببینید.

--speed speed

تنظیم سرعت پخش پویانمایی‌ها. این مقدار می‌تواند یک ضریب بدون واحد باشد (کسرها مجاز هستند)، یا یک عدد حقیقی به همراه پسوند "fps" برای اعمال نرخ فریم خاص.

--watch

پایش یک فایل ورودی تکی و بازنمایش آن در زمان تغییر محتویات. تا زمان توقف دستی توسط کاربر یا در صورت تنظیم --duration تا پایان مهلت زمانی اجرا می‌شود.

--bg color

رنگ پس‌زمینه نمایش (نام رنگ یا کد هگز). ورودی‌های دارای شفافیت جزئی با این رنگ ترکیب می‌شوند. نام رنگ‌ها بر اساس نام‌های ارائه‌شده در X.Org است. پیش‌فرض مشکی (black) است، یا رنگ پس‌زمینه پیش‌فرض ترمینال در زمان فعال بودن قابلیت کاوش (بخش --probe را ببینید).

-c mode, --colors mode

تنظیم حالت رنگ خروجی؛ یکی از [none, 2, 8, 16/8, 16, 240, 256, full]. حالت ۲۴۰ رنگ نسبت به ۲۵۶ رنگ ترجیح داده می‌شود، زیرا ۱۶ رنگ پایین‌تر غیرقابل‌اعتماد هستند و در ترمینال‌های مختلف تفاوت دارند. حالت ۱۶ رنگ از افزونه‌های aixterm برای تولید ۱۶ رنگ پیش‌زمینه و پس‌زمینه استفاده می‌کند. حالت 16/8 امکان استفاده از ۸ رنگ به علاوه ۸ رنگ "روشن" دیگر در پیش‌زمینه را از طریق توالی اسکیپ "bold" فراهم می‌سازد. حالت ۲ رنگ فقط کدهای ANSI را برای رنگ معکوس و بازنشانی ویژگی‌ها ارسال می‌کند، در حالی که "none" هیچ توالی فراری منتشر نخواهد کرد.

در حالت sixel، مقدار "full" به صورت پویا یک پالت ۲۵۶ رنگ برای هر تصویر یا فریم پویانمایی ایجاد می‌کند. سایر حالت‌ها به پالت‌های توکار اشاره دارند. مقادیر "none" و "2" قابل تعویض با یکدیگر هستند و از رنگ‌های مشخص‌شده پیش‌زمینه/پس‌زمینه استفاده می‌کنند (بخش‌های --fg و --bg را ببینید).

در صورت مشخص نشدن، یک پیش‌فرض بهینه بر اساس محیط جاری انتخاب خواهد شد.

--color-extractor extractor

روش استخراج رنگ از یک ناحیه؛ یکی از [average, median]. روش میانه (median) معمولاً خروجی شفاف‌تر و واضح‌تری تولید می‌کند، در حالی که میانگین (average) ممکن است روی تصاویر دارای نویز عملکرد بهتری داشته باشد. پیش‌فرض average است.

--color-space cs

فضای رنگی استفاده‌شده برای کوانتیزاسیون؛ یکی از [rgb, din99d]. پیش‌فرض rgb است که سریع‌تر ولی با دقت کمتر عمل می‌کند.

--dither type

نوع ترام‌ریزی (dithering) برای اعمال در طول کوانتیزاسیون. یکی از [none, ordered, diffusion, noise]. مقدار "Bayer" مترادف با "ordered" است و "fs" (Floyd-Steinberg) مترادف با "diffusion" می‌باشد. پیش‌فرض در حالت sixel برابر با "noise" و در سایر حالت‌ها "none" است.

--dither-grain widthxheight

ابعاد دانه‌های ترام‌ریزی. به صورت width x height مشخص می‌شود که هر کدام می‌تواند یکی از مقادیر [1, 2, 4, 8] پیکسل باشد. یک خانه نویسه بر اساس تعریف در هر دو جهت ۸ پیکسل است. مقدار پیش‌فرض 4x4 در حالت نماد و 1x1 در حالت sixel است.

--dither-intensity intensity

شدت الگوی ترام‌ریزی. دامنه‌ای از 0.0 تا بی‌نهایت دارد که مقدار 1.0 خنثی تلقی می‌شود. مقادیر کمتر تمایل به کاهش میزان ترام‌ریزی دارند، در حالی که مقادیر بالاتر آن را افزایش می‌دهند. در عمل، مقادیر بالاتر از 10.0 بعید است نتایج مفیدی ایجاد کنند.

--fg color

رنگ پیش‌زمینه نمایش (نام رنگ یا کد هگز). به همراه رنگ پس‌زمینه مشخص‌شده توسط --bg، پالت ترمینال را در حالت‌های رنگی 2 و none تعیین می‌کند. نام رنگ‌ها بر اساس نام‌های ارائه‌شده در X.Org است. پیش‌فرض سفید (white) است، یا رنگ پیش‌زمینه پیش‌فرض ترمینال در زمان فعال بودن قابلیت کاوش (بخش --probe را ببینید).

--invert

وارونه‌سازی رنگ‌ها. برای نمایش با پس‌زمینه‌های روشن در حالت‌های رنگی 2 و none کاربرد دارد. مقادیر --fg و --bg را جابجا می‌کند.

-p bool, --preprocess bool

پیش‌پردازش تصویر [on, off]. در حالت ۱۶ رنگ یا کمتر به طور پیش‌فرض on است و در غیر این صورت off می‌باشد. این گزینه رنگ‌ها و کنتراست را قبل از تبدیل بهبود می‌بخشد که در حالت‌های با تعداد رنگ کم مفید است.

-t threshold, --threshold threshold

آستانه‌ای که بالاتر از آن شفافیت کامل استفاده خواهد شد [0.0 - 1.0]. تنظیم روی 0.0 یک تصویر خالی رندر می‌کند، در حالی که مقدار 1.0 هرگونه شفافیت را با رنگ پس‌زمینه جایگزین می‌کند (قابل تنظیم با --bg).

--threads num

حداکثر تعداد رشته‌های (threads) پردازنده برای استفاده. در صورت مشخص نشدن یا مقادیر منفی، برابر با تعداد هسته‌های در دسترس CPU خواهد بود.

-w num, --work num

میزان بار پردازشی از نظر CPU و حافظه [1-9]. مقدار 1 کم‌هزینه‌ترین و 9 دقیق‌ترین است. پیش‌فرض 5 است.

--fg-only

دست‌نخورده باقی گذاشتن رنگ پس‌زمینه. این گزینه خروجی خانه نویسه‌ای را فقط با رنگ‌های پیش‌زمینه تولید می‌کند و از بازنشانی یا وارونه‌سازی رنگ‌ها خودداری خواهد کرد.

--fill symbols

مشخص کردن نمادهای نویسه‌ای برای پر کردن/گرادیان‌ها. پیش‌فرض none است. استفاده از آن شبیه به --symbols است؛ بخش زیر را ببینید.

--glyph-file file

بارگذاری اطلاعات گلیف‌ها از فایل، که می‌تواند هر فایل فونت پشتیبانی‌شده توسط FreeType باشد (مانند TTF، PCF و غیره). خطوط پیرامونی گلیف‌ها جایگزین خطوط موجود، از جمله موارد توکار خواهند شد. در حالت نماد برای پشتیبانی از فونت‌های سفارشی یا بهبود کیفیت با یک فونت خاص مفید است. توجه داشته باشید این مورد تنها زمانی معنا دارد که ترمینال خروجی از یک فونت منطبق استفاده کند. می‌تواند چندین بار مشخص شود.

--symbols symbols

مشخص کردن نمادهای نویسه‌ای برای به‌کارگیری در خروجی نهایی. برای نحوه استفاده کامل و فهرست دسته‌های نماد به بخش زیر مراجعه کنید.

chafa در صورت موفقیت مقدار 0، در صورت شکست جزئی مقدار 1 و در صورت شکست کامل مقدار 2 را برمی‌گرداند (از جمله هنگام فراخوانی بدون هیچ آرگومان).

وضعیت مفهوم
0 موفقیت
1 برخی از فایل‌ها در نمایش با شکست مواجه شدند
2 تمام فایل‌ها در نمایش با شکست مواجه شدند

دسته‌های پذیرفته‌شده برای --symbols و --fill عبارتند از: [all, none, space, solid, stipple, block, border, diagonal, dot, quad, half, hhalf, vhalf, inverted, braille, technical, geometric, ascii, legacy, sextant, wedge, wide, narrow]. برخی از نمادها به چندین دسته تعلق دارند؛ برای نمونه مورب‌ها (diagonals) کادر (borders) نیز محسوب می‌شوند.

می‌توانید نویسه‌های خاصی را با حرف "u" و به دنبال آن یک نقطه کد هگزادسیمال اضافه کنید، برای نمونه "ue080"، یا محدوده‌ای از نقاط کد را با جدا کردن اندیس اول و آخر با ".." مشخص کنید، مانند "u100..u200".

مجموعه نمادها همچنین می‌توانند به عنوان رشته‌ای از نویسه‌های UTF-8 درون کروشه مشخص شوند، مانند [abcd]. برای گنجاندن کروشه بسته در مجموعه، آن را با بک‌اسلش اسکیپ کنید.

می‌توانید فهرستی از دسته‌ها را که با کاما از هم جدا شده‌اند مشخص کنید، یا با افزودن پیشوند + و - نمادهایی را نسبت به مجموعه موجود اضافه یا حذف نمایید. ترتیب درج این موارد مهم است.

مجموعه نماد پیش‌فرض برای تمام حالت‌ها block+border+space-wide-inverted است به جز حالت "none" که از block+border+space-wide استفاده می‌کند (شامل نمادهای معکوس).

برای پاسخگویی به هر دو کاربرد تعاملی و پردازش دسته‌ای، مدت زمان یک پویانمایی بر اساس چند قانون ساده تعیین می‌شود:

1.اگر یک یا چند آرگومان --duration وجود داشته باشد، آخرین مورد معتبر شناخته شده و روی تمام فایل‌ها اعمال می‌شود.
2.در غیر این صورت، اگر یک ترمینال کنترلی متصل باشد (که نشان‌دهنده یک نشست تعاملی است) و فقط یک آرگومان فایل ارائه شده باشد و آن فایل یک پویانمایی باشد، مدت زمان نامحدود خواهد داشت.
3.در غیر این صورت (عدم وجود ترمینال کنترلی، چندین فایل، یا تصویری ثابت بودن فایل)، مدت زمان صفر خواهد بود که باعث می‌شود پویانمایی‌ها یک‌بار پخش شده و سپس متوقف شوند.

chafa in.gif

نمایش یک تصویر GIF احیاناً متحرک در ترمینال. اگر این تصویر یک پویانمایی باشد، تا زمانی که کاربر وقفه ایجاد کند (معمولاً با ctrl-c) اجرا خواهد شد. تمام پارامترها بر اساس محیط جاری به طور خودکار شناسایی می‌شوند.

chafa -c full -s 200 in.gif

مانند مورد بالا، اما اجبار خروجی تمام‌رنگ (truecolor) با عرض ۲۰۰ نویسه و محاسبه ارتفاع با حفظ نسبت ابعاد تصویر اصلی.

chafa -c 16 --color-space din99d --symbols -dot in.jpg

تولید خروجی ۱۶ رنگ با انتخاب رنگ ادراکی و خودداری از استفاده از نمادهای نقطه‌ای (dot).

chafa -c none --symbols block+border-solid in.png

تولید خروجی بدون رنگ با استفاده از نمادهای بلوکی و کادر، با اجتناب از نماد بلوک یکدست (solid).

برای اطلاعات بیشتر به وب‌سایت Chafa[1] مراجعه فرمایید.

نوشته‌شده توسط Hans Petter Jansson[2] <hpj@hpjansson.org>.

1.
وب‌سایت Chafa
2.
Hans Petter Jansson
chafa