🖼️پیشنمایش تصویر، ویدیو و PDF در Yazi
پروتکلهای تصویر، ffmpeg و poppler، ترمینالهای سازگار روی فدورا.
ستون سوم یازی فقط یه متن ساده نیست؛ یه سیستم پیشنمایش کامله که بر اساس نوع MIME فایل، پلاگین مناسب رو صدا میزنه. بریم ببینیم چطور کار میکنه و چطور روی فدورا بهترین نتیجه رو بگیریم.
چه چیزهایی پیشنمایش میشن؟
- متن و کد: با هایلایت سینتکس داخلی (بدون نیاز به ابزار خارجی).
- تصویر: رندر واقعی داخل ترمینال — نیاز به ترمینال سازگار.
- ویدیو: فریم بندانگشتی با
ffmpeg. - PDF: صفحهی اول بهصورت تصویر با
pdftoppmاز بستهی poppler. - آرشیو: لیست فایلهای داخل zip/tar/7z با 7-Zip.
- JSON: فرمتشده و رنگی با
jq. - SVG: با
resvgتبدیل به تصویر میشه. - پوشه: لیست محتویاتش.
پیشنمایش تصویر: کدوم ترمینال روی فدورا؟
این مهمترین بخش این فصله. نمایش تصویر توی ترمینال به «پروتکل گرافیکی» نیاز داره. یازی اینها رو پشتیبانی میکنه: Kitty graphics، iTerm2 inline، Sixel و بهعنوان آخرین راه Überzug++.
| ترمینال | وضعیت تصویر | نصب روی فدورا |
|---|---|---|
| Kitty | ✅ عالی (پروتکل خودش) | sudo dnf install kitty |
| WezTerm | ✅ پروتکل تصویر داخلی | طبق راهنمای نصب WezTerm |
| foot | ✅ خوب (Sixel) | sudo dnf install foot |
| Ptyxis | وابسته به نسخه و پشتیبانی Sixel؛ با ya env بررسی کن | sudo dnf install ptyxis |
| Konsole | ✅ خوب | sudo dnf install konsole |
| GNOME Terminal | ⚠️ بستگی به نسخهی VTE داره | پیشفرض قدیمی |
| Alacritty | پروتکل تصویر داخلی نداره | Überzug++ یا Chafa، بسته به محیط |
kitty یکی از ترمینالهایی هست که Yazi برای نمایش تصویر پشتیبانی میکنه. با sudo dnf install kitty نصبش کن و یازی رو داخلش اجرا کن. سازگاری تصویر در tmux یا Zellij باید جدا بررسی بشه.عیبیابی سریع تصویر
# ببین یازی خودش چی تشخیص میده
ya env
# کش پیشنمایشها رو خالی کن (بعد از تغییر تنظیمات لازمه)
ya cache clear
# مطمئن شو ffmpeg و poppler و magick واقعاً نصبن
which ffmpeg pdftoppm magick resvg
تنظیمات پیشنمایش
[preview]
wrap = "no" # شکستن خط در پیشنمایش کد: yes | no
tab_size = 2 # عرض کاراکتر تب
max_width = 1200 # حداکثر عرض تصویر کششده
max_height = 1200 # حداکثر ارتفاع
image_delay = 30 # تأخیر قبل از ارسال تصویر (میلیثانیه)
image_filter = "triangle" # nearest | triangle | catmull-rom | lanczos3
image_quality = 75 # کیفیت کش، بین ۵۰ تا ۹۰
image_delay: اگه موقع اسکرول سریع، ترمینالت کند میشه، این رو ببر بالا (مثلاً ۱۰۰). اگه ترمینالت قویه، بذارش ۰ تا تصویر آنی بیاد.image_filter: هرچی پایینتر بری کیفیت بهتر ولی کندتر.triangleتعادل خوبیه.- بعد از تغییر
max_widthیاmax_heightحتماًya cache clearبزن، وگرنه کش قدیمی استفاده میشه.
قواعد سفارشی پیشنمایش
میتونی برای هر MIME یا هر الگوی مسیر، پیشنمایشکنندهی دلخواه تعریف کنی:
[plugin]
prepend_previewers = [
# فایلهای CSV رو مثل متن نمایش بده
{ url = "*.csv", run = "code" },
# برای مسیر شبکهای کند، پیشنمایش رو خاموش کن
{ url = "/mnt/nas/**", run = "noop" },
]
prepend_preloaders = [
{ url = "/mnt/nas/**", run = "noop" },
]
این نمونه فقط از پلاگینهای داخلی استفاده میکنه. اگه اسم یه پلاگین سفارشی رو توی run میذاری، اول باید همون پلاگین رو نصب و طبق راهنمای خودش تنظیم کرده باشی.
سرعت: پیشنمایش رو کاملاً خاموش کنم؟
اگه روی یه سرور ضعیف یا رزبریپای هستی یا اصلاً پیشنمایش تصویر نمیخوای:
[mgr]
ratio = [1, 4, 0] # ستون پیشنمایش کلاً حذف میشه
# یا فقط تصویرها رو خاموش کن:
[plugin]
prepend_previewers = [ { mime = "image/*", run = "noop" } ]
prepend_preloaders = [ { mime = "image/*", run = "noop" } ]
[tasks]
preload_workers = 2 # روی سیستم ضعیف، همزمانی کمتر بهتره
toggle-pane بهت اجازه میده با یه کلید پیشنمایش رو بزرگ یا مخفی کنی:ya pkg add yazi-rs/plugins:toggle-pane
[[mgr.prepend_keymap]]
on = "T"
run = "plugin toggle-pane max-preview"
desc = "بزرگ کردن پنل پیشنمایش"
منبع برای بررسی جزئیات و تغییرات نسخهها: سازگاری پیشنمایش تصویر.