فهرست سریع فصل‌ها
متوسطفصل 10 از 20⏱ حدود 12 دقیقه

🐚اجرای دستور شل و تنظیم opener در Yazi

دستور shell، پارامترهای %s، تعریف opener سفارشی و xdg-open.

این فصل جاییه که یازی از یه «فایل‌منیجر» تبدیل می‌شه به یه «پیشخوان فرماندهی». هر فایلی که انتخاب کردی می‌تونه ورودی هر دستور لینوکسی باشه.

اجرای دستور شل روی فایل‌ها

کلیدکاربرد
;اجرای دستور شل (غیرمسدودکننده — خروجی توی پس‌زمینه)
:اجرای دستور شل به‌صورت مسدودکننده (صفحه در اختیار برنامه)

تفاوت مهمه: ; برای دستورهایی که خروجی تعاملی ندارن (مثل chmod +x)، و : برای برنامه‌هایی که باید صفحه رو بگیرن (مثل nvim، htop، tar با خروجی طولانی).

پارامترهای جادویی

%sمسیر همه‌ی فایل‌های انتخاب‌شده
%Sهمون، ولی به شکل URL
%s1 و %s2مسیر فایل اول، دوم و…
%dمسیر پوشه‌ی هر فایل انتخاب‌شده
%hفایلی که مکان‌نما روشه (hovered)
%%خود کاراکتر درصد

مثال‌های واقعی که هر روز لازمت می‌شه

برای دیدن خروجی دستورهایی مثل du و sha256sum از : استفاده کن و آخر دستور; read -r _ بذار تا صفحه با زدن Enter بسته بشه. برنامه‌هایی مثل zip و mpv هم باید جدا نصب شده باشن.

نمونه‌ی دستور در ورودی شل یازی
bash

chmod +x %s                       # اجرایی کردن اسکریپت‌های انتخاب‌شده
zip -r archive.zip %s             # زیپ کردن انتخاب‌ها
tar -czf backup.tar.gz %s         # آرشیو tar.gz
7z x %h                           # استخراج آرشیوی که روش ایستادی
mpv %s                            # پخش ویدیوهای انتخاب‌شده
gio open %h                       # باز کردن با برنامه‌ی پیش‌فرض گنوم
du -sh %s                         # حجم واقعی انتخاب‌ها
sha256sum %s                      # گرفتن هش
magick %h -resize 50%% small.png  # تغییر اندازه با ImageMagick

افتادن توی شل — ترفند کلید !

گاهی می‌خوای یه شل کامل توی همون پوشه داشته باشی، کارت رو بکنی و برگردی توی یازی. این باینْد رو اضافه کن:

~/.config/yazi/keymap.toml
toml

[[mgr.prepend_keymap]]
on   = "!"
for  = "unix"
run  = 'shell "$SHELL" --block'
desc = "باز کردن شل در همین پوشه"

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

باز کردن فایل‌ها: o، O و Enter

کلیدکاربرد
Enterباز کردن با اولین opener مطابق
oهمون کار Enter
Oمنوی «باز کردن با…» — لیست همه‌ی openerهای ممکن

تعریف opener سفارشی

دو بخش داری: [opener] که «چطور» باز بشه رو تعریف می‌کنه، و [open] که «چه فایلی با کدوم opener» باز بشه. توی این مثال باید nvim، code و mpv نصب باشن؛ فقط openerهای موردنیازت رو نگه دار. در نسخه‌ی 26.9.1 از جای‌نگهدارهای %s استفاده کن؛ نمونه‌های قدیمی $@ و $1رو مستقیم با این کانفیگ مخلوط نکن.

~/.config/yazi/yazi.toml
toml

# ---------- تعریف روش‌های باز کردن ----------
[opener]
edit = [
	{ run = 'nvim %s', block = true, desc = "ویرایش در ترمینال", for = "unix" },
]
code = [
	{ run = 'code %s', orphan = true, desc = "VS Code", for = "unix" },
]
play = [
	{ run = 'mpv %s', orphan = true, desc = "پخش با mpv", for = "unix" },
]
open = [
	{ run = 'xdg-open %s1', desc = "برنامه‌ی پیش‌فرض سیستم", for = "unix" },
]
extract = [
	{ run = 'ya pub extract --list %s', desc = "استخراج آرشیو", for = "unix" },
]
reveal = [
	{ run = 'nautilus %d1', orphan = true, desc = "نمایش در Nautilus", for = "unix" },
]

# ---------- قواعد: کدوم فایل با کدوم روش ----------
[open]
prepend_rules = [
	{ mime = "text/*",              use = [ "edit", "code", "open" ] },
	{ mime = "image/*",             use = [ "open", "code" ] },
	{ mime = "video/*",             use = [ "play", "open" ] },
	{ mime = "audio/*",             use = [ "play" ] },
	{ mime = "application/pdf",     use = [ "open" ] },
	{ url  = "*.zip",               use = [ "extract", "open" ] },
	{ url  = "*.{tar,gz,xz,7z,rar}", use = [ "extract", "open" ] },
	{ url  = "*/",                  use = [ "open", "reveal" ] },
]
  • block = true یعنی یازی مخفی می‌شه و صفحه رو کامل می‌ده به اون برنامه (برای nvim و htop لازمه).
  • orphan = true یعنی حتی اگه یازی بسته بشه، برنامه باز بمونه (برای برنامه‌های گرافیکی مثل VS Code و mpv لازمه).
  • desc همون متنیه که توی منوی O می‌بینی.
  • اگه use چندتا opener داشته باشه، Enter اولی رو اجرا می‌کنه و O همه رو لیست می‌کنه.
🎩xdg-open و برنامه‌های پیش‌فرض فدورا
xdg-open از تنظیمات دسکتاپ تبعیت می‌کنه. اگه Evince نصب داری و میخوای PDFها با اون باز بشن، این نمونه کاربرد داره. برای برنامه‌ی دیگه باید شناسه‌ی واقعی فایل desktop همون برنامه رو جایگزین کنی:
terminal
bash

xdg-mime default org.gnome.Evince.desktop application/pdf
xdg-mime query default application/pdf   # چک کردن
gio mime application/pdf                 # جایگزین gnome
روی Wayland ممکنه لازم باشه xdg-utils نصب باشه: sudo dnf install xdg-utils.
🚀ساخت opener برای برنامه‌های دیگه
همین الگو برای ابزارهای دیگه هم کاربرد داره: اسم دستور، جای‌نگهدار مناسب و نوع فایل رو مشخص کن. برای مثال %s1 فقط اولین انتخاب رو میفرسته و %d1 پوشه‌ی حاوی همون فایل رو. قبل از اضافه کردن دستورهایی که تنظیمات دسکتاپ یا فایل‌ها رو تغییر میدن، اون‌ها رو روی نمونه‌ی آزمایشی بررسی کن.

منبع برای بررسی جزئیات و تغییرات نسخه‌ها: تنظیم opener در مستندات Yazi.

آموزش کار با Yazi برای توزیع‌های مختلف لینوکس کاربرد داره؛ مثال‌های نصب و تنظیم محیط با اولویت کاربری نوشته شدن که فدورا رو با تنظیمات پیش‌فرض نصب کرده. دستور نصب بسته‌ها و ابزارهای جانبی در توزیع‌های دیگه ممکنه متفاوت باشه.