| CHA-MAILCAP(5) | File Formats Manual | CHA-MAILCAP(5) |
نام (NAME)
cha-mailcap - قالب فایل mailcap در مرورگر وب Chawan
میلکپ (Mailcap)
بهطور پیشفرض، بافرهای Chawan فقط از HTML و متن ساده پشتیبانی میکنند. از فایل mailcap میتوان برای مشاهده سایر قالبهای پرونده با استفاده از دستورات خارجی، یا تبدیل آنها به HTML یا متن ساده پیش از نمایش در Chawan استفاده کرد.
توجه داشته باشید که فایل mime.types پیشفرض Chawan تنها تعداد کمی از پسوندهای پرونده را شناسایی میکند؛ در صورتی که سیستم شما فاقد فایل /etc/mime.types باشد، این امر ممکن است باعث اجرا نشدن مدخلهای شما شود. لطفاً برای جزئیات بیشتر به cha-mime.types(5) مراجعه کنید.
برای توضیحات دقیق درباره قالب mailcap، به RFC 1524 مراجعه کنید.
مسیر جستجو (Search path)
مسیر جستجوی فایلهای mailcap توسط متغیر پیکربندی external.mailcap تعیین میشود. این مسیر با مسیر پیشنهادی در RFC مطابقت دارد:
-
$HOME/.mailcap:/etc/mailcap:/usr/etc/mailcap:/usr/local/etc/mailcap
بهطور پیشفرض، مدخلهای mailcap تنها در صورتی اجرا میشوند که کاربر پس از اعلان (prompt)، کلید r (اجرا - run) را وارد کند. گزینههای دیگر عبارتند از مشاهده فایل با t (متن - text)، یا ذخیره فایل با s (ذخیره - save).
اگر یک حرف بزرگ تایپ شود (مثلاً shift + R)، مدخل مربوطه به external.auto-mailcap اضافه میشود (پیشفرض: ~/.chawan/mailcap، یا ~/.config/chawan/mailcap با دایرکتوریهای پایه XDG). همچنین میتوان از (T)ext و (S)ave برای اضافه کردن مدخلهای متناظر با سایر گزینههای نمایش استفاده کرد.
مدخلهای موجود در auto-mailcap بهطور خودکار اجرا میشوند، بنابراین توصیه میشود مدخلهای مختص Chawan خود را در آنجا اضافه کنید (یا صرفاً آن را روی فایل mailcap شخصی خود تنظیم نمایید).
قالب (Format)
مرورگر Chawan از قالب شرحدادهشده در RFC 1524 به همراه چند افزونه پیروی میکند.
مدخلهای text/html و text/plain نادیده گرفته میشوند.
الگوسازی (Templating)
بخش دستور در هر مدخل میتواند شامل رشتههای الگو باشد که در زمان اجرا توسط مرورگر جایگزین میشوند.
نیازی به قرار دادن الگوها درون علامت نقلقول نیست؛ Chawan آنها را بهطور خودکار نقلقول میکند. (این قابلیت برای $(command substitutions) نیز کار میکند.) با این حال، ممکن است نرمافزارهای دیگر با چنین الگوهایی رفتار نادرستی داشته باشند؛ بنابراین شاید بهتر باشد ابتدا آنها را به یک متغیر اختصاص دهید، مانند:
-
text/x-example; s=%s cat "$s"; copiousoutput
الگوهای زیر پشتیبانی میشوند:
- %s به مسیر پرونده بسط مییابد. مشخص کردن %s، بارگیری منبع خارجی را پیش از اجرای مدخل اجباری میکند. اگر %s مشخص نشود، منبع به جای آن به ورودی استاندارد (standard input) پایپ میشود. (در این حالت، needsterminal اعمال نمیشود.)
- %t به نوع محتوا (content type) بسط مییابد. فیلدهای نامگذاریشده نوع محتوا را نیز میتوان با نحو %{charset} مشخص کرد. به عنوان مثال، در
-
text/html; charset=utf-8
%t به رشته بالا بسط مییابد، در حالی که %{charset} به “utf-8” بسط خواهد یافت.
- •
- الگوهای غیر استاندارد برای نشانی اینترنتی (URL) اصلی منبع: %u (برگرفته از Netscape) به URL اصلی منبع بسط مییابد، %h (برگرفته از w3mmee) به نام میزبان بدون شماره پورت بسط مییابد، %H به نام میزبان به همراه شماره پورت بسط مییابد، و %? (برگرفته از w3mmee) به رشته پرسوجو (query string) شامل علامت سؤال بسط مییابد.
(در واقع w3mmee علامت سؤال را در %? لحاظ نمیکرد. با این حال، آن طراحی نمیتوانست تفاوت میان رشته پرسوجوی خالی و رشته پرسوجوی تهی (null) را بیان کند، بنابراین این رفتار در Chawan تغییر یافته است.)
فیلدها (Fields)
فیلدهای زیر شناسایی میشوند:
- •
- هنگامی که فیلد نامگذاریشده test مشخص شود، مدخل mailcap تنها در صورتی استفاده میشود که دستور آزمون مقدار 0 برگرداند. برای نمونه، میتوانید مدخلهایی که به X11 نیاز دارند را به این شکل محدود کنید:
-
image; feh -; test=test -n "$DISPLAY"
هشدار: %s همراه با test کار نمیکند. فیلدهای نامگذاریشده test که دارای الگوی %s باشند نادیده گرفته میشوند، و هیچ دادهای به دستورات test پایپ نمیشود.
- فیلد copiousoutput باعث میشود Chawan خروجی دستور خارجی را به یک بافر جدید هدایت کند. اگر هر یک از فیلدهای x-htmloutput یا x-ansioutput نیز تعریف شده باشند، copiousoutput نادیده گرفته میشود.
- فیلد needsterminal کنترل ترمینال را در حین اجرا به دستور واگذار میکند. اگر یکی از فیلدهای copiousoutput، x-ansioutput، x-saveoutput یا x-htmloutput مشخص شده باشد، این فیلد هیچ اثری ندارد.
- فیلد nametemplate یک الگوی مشخص برای فایل موقتی که در زمان مشخص شدن %s ایجاد میشود ارائه میدهد. برای جزئیات بیشتر به RFC مراجعه کنید.
- فیلد x-htmloutput (برگرفته از w3m) رفتاری مشابه copiousoutput دارد، اما باعث میشود Chawan خروجی دستور را به عنوان HTML تفسیر کند.
- فیلد x-ansioutput خروجی را از طریق گرداننده نوع محتوای “text/x-ansi” هدایت (pipe) میکند تا رنگهای ANSI، قالببندی و غیره به درستی نمایش داده شوند.
- فیلد x-saveoutput از کاربر میخواهد تا خروجی مدخل را در یک فایل ذخیره کند.
- فیلد x-needsstyle پردازش شیوهنامه CSS را برای آن نوع خاص اجباری میکند، حتی اگر استایلدهی در پیکربندی غیرفعال شده باشد. این فیلد تنها در ترکیب با x-htmloutput مفید است. (همچنین پرسوجوی رسانهای -cha-content-type را در cha-css(7) ببینید.)
- فیلد x-needsimage نمایش تصاویر را در x-htmloutput اجباری میکند، حتی اگر تصاویر غیرفعال باشند.
- فیلد x-type (برگرفته از w3mmee) یک جایگزینی نوع MIME مشخص میکند. بخش دستور به عنوان یک نوع MIME (بدون بسط الگو) تفسیر میشود که به جای نوع اصلی مورد استفاده قرار میگیرد. چنین مدخلهایی فقط در external.auto-mailcap پذیرفته میشوند.
مدخلهای دارای x-type با اسناد text/plain و text/html نیز مطابقت دارند (که بهطور معمول از mailcap مستثنی هستند). با این حال، اگر نوع محتوا اجبار شده باشد (مثلاً با استفاده از گزینه -T)، x-type اعمال نخواهد شد.
(نکته: x-type آزمایشی است. تغییرات آتی در معناشناسی آن دور از انتظار نیست.)
- •
- فیلد x-match (برگرفته از w3mmee) نشانی URL مدخل را به عبارت باقاعده (regex) مشخصشده محدود میکند. فیلد x-nc-match مشابه است، اما به حروف کوچک و بزرگ حساس نیست (case-insensitive). برای مثال، x-match=https?://example\.org/.* مدخل را به example.org محدود میکند (به بکاسلش توجه کنید).
هنگامی که یکی از این فیلدها همراه با test وجود داشته باشد، نتیجه با هم عطف منطقی (AND) میشود.
- •
- فیلد x-netpath (برگرفته از w3mmee) مدخل را به URIهایی که با قاعده تولید net_path در RFC 2396 مطابقت دارند محدود میکند. به عبارت دیگر، URI باید دارای یک مرجع (authority مانند نام میزبان و غیره) باشد؛ بنابراین برای نمونه با example://blah/path مطابقت دارد، در حالی که با example:/path مطابقت ندارد.
برای طرحوارههایی غیر از file، دو اسلش بعد از دونقطه نشاندهنده یک net_path است. عبارت file:///path یک حالت خاص است: شبیه یک net_path به نظر میرسد، اما چنین نیست. (این مورد از استاندارد URL متعلق به WHATWG به ارث رسیده است.)
مثالها (Examples)
برای اجرای خودکار این مدخلها، آنها را در ~/.chawan/mailcap (یا ~/.config/chawan/mailcap در صورت استفاده از دایرکتوریهای پایه XDG) قرار دهید. به عنوان روشی دیگر، اگر از قبل یک فایل mailcap برای اشتراک با سایر برنامهها دارید، میتوانید external.auto-mailcap را روی ~/.mailcap تنظیم کنید.
-
# نکته: این مثالها نیازمند مدخلی در mime.types هستند که مثلاً md را به عنوان # نوع محتوای markdown تنظیم کند. # پردازش فایلهای markdown با استفاده از pandoc. text/markdown; pandoc - -f markdown -t html -o -; x-htmloutput # نمایش برجستهسازی نحو برای فایلهای سورس جاوااسکریپت با bat. text/javascript; bat -f -l es6 --file-name %u -; x-ansioutput # پخش موسیقی با استفاده از mpv و واگذاری کنترل ترمینال تا زمان خروج mpv. audio/*; mpv -; needsterminal # پخش ویدیوها با mpv در پسزمینه، با هدایت خروجی استاندارد # و خطای استاندارد آن به /dev/null. video/*; mpv - # باز کردن فایلهای docx با استفاده از LibreOffice Writer. application/vnd.openxmlformats-officedocument.wordprocessingml.document; lowriter %s # نمایش صفحات راهنما با استفاده از pandoc. (مطمئن شوید نوع mime با نوع تنظیمشده # در فایل mime.types شما برای پسوندهای .1، .2، .3 و غیره مطابقت داشته باشد) application/x-troff-man; pandoc - -f man -t html -o -; x-htmloutput # تبدیل epub به HTML با استفاده از pandoc. (فراموش نکنید که mime.types را تنظیم کنید.) # متغیر http_proxy تنظیم شده است تا مانع دانلود هر چیزی از طریق http/s شود. application/epub+zip; http_proxy=localhost:0 pandoc - -f epub \ --embed-resources --standalone; x-htmloutput # نمایشدهنده هگز. نحوه استفاده: alias chadump='cha -Ttext/x-hexdump' # (از گزینههای مخصوص گنو استفاده میکند، در سایر سیستمها مطابق نیاز تنظیم کنید.) text/x-hexdump; od -w12 -A x -t x1z -v; copiousoutput # مدخل زیر نادیده گرفته خواهد شد، زیرا text/html بهطور بومی توسط Chawan پشتیبانی میشود. text/html; cha -dT text/html -I %{charset}; copiousoutput