foot.ini(5) File Formats Manual foot.ini(5)
نام (NAME)
foot.ini - پرونده پیکربندی برای foot(1)
توضیحات (DESCRIPTION)
foot از قالب پیکربندی استاندارد یونیکس با جفتهای کلید/مقدار مبتنی بر
بخش استفاده میکند. بخش پیشفرض معمولاً بدون نام است، یعنی پیشوند
[section] ندارد. با این حال میتوان آن را صراحتاً [main] نامید، مثلاً اگر
پس از هر یک از بخشهای دیگر نیاز به بازگشایی مجدد آن باشد.
foot پرونده پیکربندی را به ترتیب در مکانهای زیر جستجو میکند:
• XDG_CONFIG_HOME/foot/foot.ini (در صورت عدم تنظیم، به صورت
پیشفرض $HOME/.config/foot/foot.ini)
• XDG_CONFIG_DIRS/foot/foot.ini (در صورت عدم تنظیم، به صورت
پیشفرض /etc/xdg/foot/foot.ini)
یک نمونه پرونده پیکربندی که تمام گزینهها را با مقادیر پیشفرض آنها به
صورت کامنتشده در بر دارد، معمولاً در /etc/xdg/foot/foot.ini نصب میشود.
گزینهها با استفاده از جفتهای KEY=VALUE تنظیم میشوند:
[colors-dark]
background=000000
foreground=ffffff
مقادیر خالی (KEY=) پشتیبانی نمیشوند. گزینههای رشتهای امکان تنظیم رشته
خالی را دارند، اما باید در گیومه قرار گیرند: KEY=""
بخش: اصلی (SECTION: main)
shell
فایل اجرایی برای راهاندازی. معمولاً یک پوسته است. پیشفرض: $SHELL در
صورت تنظیم، وگرنه پوسته پیشفرض کاربر (همانطور که در /etc/passwd
مشخص شده است). همچنین میتوانید آرگومانها را ارسال کنید. برای مثال
/bin/bash --norc.
login-shell
بولی. در صورت فعال بودن، پوسته با افزودن یک '-' به argv[0] به عنوان
یک پوسته ورود (login shell) راهاندازی میشود. پیشفرض: no.
term
مقداری که متغیر محیطی TERM روی آن تنظیم میشود. پیشفرض: foot
font, font-bold, font-italic, font-bold-italic
فهرستی از قلمهای جداشده با کاما برای استفاده، در قالب fontconfig.
یعنی نام قلم و به دنبال آن فهرستی از گزینههای جداشده با دونقطه.
مهمترین آنها :size=n (یا :pixelsize=n) است که برای تنظیم اندازه قلم
استفاده میشود. توجه داشته باشید که اندازه قلم تحت تأثیر گزینه
dpi-aware نیز قرار میگیرد.
مثالها:
• Dina:weight=bold:slant=italic
• Courier New:size=12
• Fantasque Sans Mono:fontfeatures=ss01
• Iosevka:fontfeatures=cv01=1:fontfeatures=cv06=1
• Meslo LG S:size=12, Noto Color Emoji:size=12
• Courier New:pixelsize=8
توجه داشته باشید که بسته به تنظیمات شما، ممکن است گزینههای سراسری
FontConfig وجود داشته باشند که گزینههای تنظیمشده در اینجا را
بازنویسی کنند. اگر به نظر میرسد گزینهای بیاثر است، اطمینان حاصل
کنید پرونده پیکربندی سراسری وجود نداشته باشد که همان گزینه را با
assign یا assign_replace تنظیم کند؛ از یکی از حالتهای متعدد append
یا احتمالاً prepend استفاده کنید.
برای هر گزینه، قلم نخست همان قلم اصلی است. قلمهای باقیمانده قلمهای
جایگزین (fallback) هستند که هرگاه گلیفی در قلم اصلی یافت نشود
استفاده خواهند شد.
قلمهای جایگزین به ترتیبی که ظاهر میشوند جستجو میشوند. اگر گلیفی در
هیچیک از قلمهای جایگزین یافت نشود، فهرست جایگزین پویای fontconfig
(برای قلم اصلی) جستجو میشود.
گزینههای font-bold، font-italic و font-bold-italic امکان استفاده از
قلمهای سفارشی را برای قلمهای پررنگ/مورب/پررنگ+مورب فراهم میکنند. در
صورت عدم پیکربندی، گونههای پررنگ/مورب قلم (یا قلمهای) عادی مشخصشده
در font استفاده میشوند. نکته: ممکن است لازم باشد اندازه قلمهای
سفارشی پررنگ/مورب را طوری تنظیم کنید که با قلم عادی هماهنگ شوند.
برای غیرفعال کردن قلمهای پررنگ و/یا مورب، مثلاً font-bold را دقیقاً
روی همان مقدار font تنظیم کنید.
مقدار size بر حسب پوینت است (همانطور که در قالب FontConfig تعریف
شده است). برای تنظیم اندازه بر حسب پیکسل، به جای آن از pixelsize
استفاده کنید. توجه داشته باشید که اندازههای پیکسلی تحت تأثیر رندر
آگاه از DPI نیستند (به dpi-aware مراجعه کنید)، اما تحت تأثیر
مقیاسبندی میزکار قرار میگیرند.
پیشفرض: monospace:size=8 (font)، not set (font-bold، font-italic،
font-bold-italic).
font-size-adjustment
مقدار بر حسب پوینت، پیکسل یا درصد، برای افزایش یا کاهش اندازه قلم
هنگام بزرگنمایی یا کوچکنمایی.
مثالها:
font-size-adjustment=0.5 # تنظیم به اندازه ۰٫۵ پوینت
font-size-adjustment=10px # تنظیم به اندازه ۱۰ پیکسل
font-size-adjustment=7.5% # تنظیم به اندازه ۷٫۵ درصد
پیشفرض: 0.5
include
مسیر مطلق به پرونده پیکربندی جهت وارد کردن.
پرونده واردشده دامنه بخش مستقل خود را دارد. یعنی پیکربندی شاملکننده
پس از include همچنان در بخش پیشفرض میماند، صرفنظر از اینکه پرونده
واردشده در چه بخشی به پایان برسد.
• مسیر باید یک مسیر مطلق باشد، یا با ~/ آغاز شود.
• چندین دستور include مجاز است، اما در هر دستور فقط یک مسیر
مشخص میشود.
• وارد کردن تو در تو مجاز است.
پیشفرض: not set.
line-height
یک مقدار مطلق، بر حسب پوینت، که ارتفاع سطر برآمده از معیارهای قلم
(font metrics) را بازنویسی میکند.
میتوانید با استفاده از پسوند px ارتفاعی بر حسب پیکسل مشخص کنید:
برای نمونه line-height=12px.
هشدار: هنگام تغییر اندازه قلم در زمان اجرا (یعنی بزرگنمایی یا
کوچکنمایی)، foot ارتفاع سطر را با همان درصد تغییر میدهد. با این
حال، به دلیل گرد کردن، این احتمال وجود دارد که ارتفاع سطر برای برخی
اندازههای قلم «بیش از حد کوچک» شود و باعث «ناپدید شدن» مثلاً خطوط
زیرین (underscores) گردد.
همچنین ببینید: vertical-letter-offset.
پیشفرض: not set.
letter-spacing
فاصله بین حروف، بر حسب پوینت. یک مقدار مثبت اندازه سلول را افزایش
میدهد و یک مقدار منفی آن را کوچک میکند.
میتوانید با استفاده از پسوند px فاصله حروف را بر حسب پیکسل مشخص
کنید: برای نمونه letter-spacing=2px.
همچنین ببینید: horizontal-letter-offset.
پیشفرض: 0.
horizontal-letter-offset, vertical-letter-offset
آفستهای افقی و عمودی مورداستفاده هنگام قرار دادن گلیفها درون سلولها
را بر حسب پوینت، نسبت به گوشه بالا سمت چپ پیکربندی میکند.
برای تعیین آفست بر حسب پیکسل، پسوند px را اضافه کنید: برای نمونه
horizontal-letter-offset=2px.
پیشفرض: 0.
underline-offset
استفاده از آفست سفارشی برای خطوط زیرین. آفست به طور پیشفرض بر حسب
پوینت و نسبت به خط مبنای قلم (baseline) است. یک مقدار مثبت خط زیرین
را زیر خط مبنا قرار میدهد، در حالی که مقدار منفی آن را بالای خط
مبنا قرار میدهد.
برای مشخص کردن آفست بر حسب پیکسل، پسوند px را اضافه کنید:
underline-offset=2px.
در صورت عدم تنظیم (حالت پیشفرض)، از آفست مشخصشده در قلم استفاده
میشود، یا اگر اطلاعات موقعیت خط زیرین در قلم موجود نباشد، توسط foot
تخمین زده میشود.
پیشفرض: unset.
underline-thickness
استفاده از ضخامت (ارتفاع) سفارشی برای خطوط زیرین. ضخامت به طور
پیشفرض بر حسب پوینت است.
برای مشخص کردن ضخامت بر حسب پیکسل، پسوند px را اضافه کنید:
underline-thickness=1px.
در صورت عدم تنظیم (حالت پیشفرض)، از ضخامت مشخصشده در قلم استفاده
میشود.
پیشفرض: unset
strikeout-thickness
استفاده از ضخامت (ارتفاع) سفارشی برای خطوط خطخورده (strikeout).
ضخامت به طور پیشفرض بر حسب پوینت است.
برای مشخص کردن ضخامت بر حسب پیکسل، پسوند px را اضافه کنید:
strikeout-thickness=1px.
در صورت عدم تنظیم (حالت پیشفرض)، از ضخامت مشخصشده در قلم استفاده
میشود.
پیشفرض: unset
gamma-correct-blending
بولی. در صورت فعال بودن، foot ترکیب تصحیحشده با گاما را در فضای
رنگی خطی انجام میدهد. این روشی است که گلیفهای قلم قرار است رندر
شوند، اما از آنجا که تقریباً هیچ برنامه یا ابزار رابط کاربری این کار
را در لینوکس انجام نمیدهد، نتیجه ممکن است شبیه آنچه به آن عادت
کردهاید به نظر نرسد.
در مقایسه با حالت پیشفرض (غیرفعال)، گلیفهای روشن روی پسزمینه تیره
ضخیمتر به نظر میرسند و گلیفهای تیره روی پسزمینه روشن باریکتر خواهند
بود.
کتابخانه FreeType میتواند با تکنیکی به نام تیره کردن ساقه (stem
darkening) تأثیر دومی را محدود کند. این قابلیت فقط برای قلمهای CFF
(مانند OpenType، .otf) در دسترس است و به طور پیشفرض (در FreeType)
غیرفعال است. میتوانید با تنظیم متغیر محیطی
FREETYPE_PROPERTIES="cff:no-stem-darkening=0" پیش از راهاندازی foot
آن را فعال کنید.
همچنین توجه داشته باشید که بسیاری از قلمها روی سیستمهایی توسعه
یافتهاند که ترکیب تصحیحشده با گاما را انجام نمیدهند، بنابراین ممکن
است هنگام رندر با ترکیب تصحیحشده با گاما ضخیمتر از حد انتظار به نظر
برسند، زیرا طراح قلم وزن آن را بر اساس رندر نادرست تنظیم کرده است.
به منظور نمایش صادقانه رنگها، به بافرهای تصویری با دقت بالاتر نیاز
است. به طور پیشفرض، foot در صورت فعال بودن ترکیب تصحیحشده با گاما،
بسته به در دسترس بودن، از کانالهای رنگی ۱۶ بیتی یا ۱۰ بیتی استفاده
خواهد کرد. با این حال، بافرهای با دقت بالا کُند هستند؛ اگر میخواهید
از ترکیب تصحیحشده با گاما استفاده کنید اما سرعت (توان پردازش و
تاخیر ورودی) را به رنگهای دقیق ترجیح میدهید، میتوانید با تنظیم
tweak.surface-bit-depth=8-bit کانالهای رنگی ۸ بیتی را اجباری کنید.
پیشفرض: no.
uppercase-regex-insert
بولی. در صورت فعال بودن، وارد کردن یک نویسه راهنمای بزرگ در حالت
show-urls-copy یا regex-copy، علاوه بر رونوشت متن انتخابشده در
بریدهدان، آن را در خط فرمان نیز درج میکند.
پیشفرض: yes
box-drawings-uses-font-glyphs
بولی. در صورت غیرفعال بودن، foot خودش نویسههای ترسیم جدول/خط را
تولید میکند. انجام این کار به جای استفاده از گلیفهای قلم چندین مزیت
دارد:
• نبود اثرات anti-aliasing که در آن مثلاً انتهای خطوط کمرنگ یا
تار به نظر میرسند.
• تضمین اینکه نویسههای خط و جعبه تمام سلول را پوشش دهند که
منجر به ظاهری بدون شکاف میشود.
• نبود مشکلات تراز، یعنی خطوط زمانی که باید در مرکز باشند،
دقیقاً در مرکز قرار میگیرند.
• بسیاری از قلمها فاقد برخی یا همه نویسههای ترسیم خط و جعبه
هستند که باعث استفاده از قلمهای جایگزین میشود و در نتیجه
گلیفهایی با ظاهر ناهمگون (مثلاً با اندازه نامناسب) ایجاد
میگردد.
در صورت فعال بودن، نویسههای ترسیم جعبه/خط با استفاده از گلیفهای قلم
رندر میشوند. این ممکن است در برخی موارد استفاده، به ظاهری یکنواختتر
منجر شود.
در صورت غیرفعال بودن، foot کدهای یونیکد زیر را خودش رندر میکند:
• U+02500 - U+0259F
• U+02800 - U+028FF
• U+1CD00 - U+1CDE5
• U+1Fb00 - U+1FB9B
پیشفرض: no.
dpi-aware
بولی.
هنگامی که روی yes تنظیم شود، اندازه قلمها با استفاده از DPI نمایشگر
تعیین میشود، به طوری که قلمی با اندازه مشخص، بدون در نظر گرفتن
نمایشگر، اندازه فیزیکی یکسانی خواهد داشت. به عبارت دیگر، اگر یک
پنجره foot را بین نمایشگرهای مختلف بکشید، اندازه قلم یکسان باقی
میماند.
در این حالت، ضریب مقیاسبندی (scaling factor) نمایشگر نادیده گرفته
میشود؛ دو برابر کردن ضریب مقیاسبندی اندازه قلم را دو برابر نخواهد
کرد.
هنگامی که روی no تنظیم شود، DPI نمایشگر نادیده گرفته میشود. در عوض
اندازه قلم با استفاده از ضریب مقیاسبندی نمایشگر تعیین میشود؛ دو
برابر کردن ضریب مقیاسبندی اندازه قلم را دو برابر میکند.
توجه داشته باشید که این گزینه معمولاً با قلمهای بیتمپ (bitmap) که
فقط شامل مجموعهای از اندازههای از پیش تعریفشده هستند و نمیتوانند به
صورت پویا مقیاسبندی شوند، کار نمیکند. هر اندازهای (از اندازههای
موجود) که بهترین تطابق را با DPI یا ضریب مقیاسبندی داشته باشد،
استفاده خواهد شد.
همچنین توجه داشته باشید که اگر اندازه قلم بر حسب پیکسل مشخص شده
باشد (:pixelsize=N به جای :size=N)، مقیاسبندی DPI (dpi-aware=yes)
هیچ تأثیری نخواهد داشت (اندازه پیکسلی مشخصشده همانطور که هست
استفاده میشود). اما اگر از ضریب مقیاسبندی نمایشگر برای تعیین اندازه
قلم استفاده شود (dpi-aware=no)، اندازه پیکسلی قلم در ضریب مقیاسبندی
ضرب خواهد شد.
پیشفرض: no
pad
فاصله درونی (Padding) بین حاشیه و گلیفها، بر حسب پیکسل (تابع
مقیاسبندی خروجی)، در قالب
_XxY_ [center | center-when-fullscreen | center-when-maximized-and-fullscreen]
یا
RIGHTxTOPxLEFTxBOTTOM [center | center-when-fullscreen | center-when-maximized-and-fullscreen]
• `XxY` دستکم مقادیر زیر را میافزاید: - X پیکسل در سمتهای چپ و
راست. - Y پیکسل در سمتهای بالا و پایین.
• `LEFTxTOPxRIGHTxBOTTOM` دستکم مقادیر زیر را میافزاید: - LEFT
پیکسل به چپ - TOP پیکسل به بالا - RIGHT پیکسل به راست - BOTTOM
پیکسل به پایین
هنگامی که هیچ وسطچینی مشخص نشده باشد، محتوای شبکه به گوشه بالا سمت
چپ متصل (مهار) میشود. یعنی اگر مدیر پنجره اندازه پنجره فردی را به
foot تحمیل کند، پیکسلهای اضافی به سمتهای راست و پایین افزوده خواهند
شد.
اگر center مشخص شود، محتوای شبکه در مرکز قرار میگیرد. این ممکن است
هنگام تغییر اندازه پنجره باعث «پرش» شود.
با center-when-fullscreen و center-when-maximized-and-fullscreen،
محتوای شبکه به گوشه بالا سمت چپ مهار میشود، مگر اینکه پنجره بیشینه
(maximized) یا تمامصفحه شده باشد.
پیشفرض: 0x0 center-when-maximized-and-fullscreen.
resize-delay-ms
زمان، بر حسب میلیثانیه، از «زمان بیکاری» پیش از آنکه foot بازآرایی
متن (text reflow) را انجام دهد و ابعاد پنجره جدید را حین تغییر
اندازه تعاملی پنجره foot به برنامه کلاینت ارسال کند. زمان بیکاری در
این زمینه، دورهای از زمان است که اندازه پنجره در آن تغییر نمیکند.
به عبارت دیگر، در حالی که در حال دستکاری اندازه پنجره هستید، foot
ابعاد بهروزشده را به کلاینت ارسال نمیکند. همچنین به جای بازآرایی
واقعی محتوا، یک تغییر اندازه «برشدهنده» سریع روی شبکه انجام میدهد.
فقط زمانی که دستکاری را به مدت resize-delay-ms میلیثانیه متوقف
کنید، کلاینت بهروز شده و محتوا به درستی بازآرایی میشود.
در اینجا تأکید بر حین است؛ به محض پایان تغییر اندازه تعاملی (یعنی
زمانی که حاشیه پنجره را رها میکنید)، ابعاد نهایی بدون هیچ تاخیری به
کلاینت ارسال میشود.
تنظیم آن روی 0 تاخیر را به طور کامل غیرفعال میکند.
پیشفرض: 100.
resize-by-cells
بولی.
هنگامی که روی yes تنظیم شود، اندازه پنجره به مضربهایی از اندازه
سلول (به علاوه هرگونه فاصله درونی پیکربندیشده) محدود خواهد شد.
هنگامی که روی no تنظیم شود، اندازه پنجره نامحدود خواهد بود و فاصله
درونی ممکن است در صورت لزوم برای جای دادن اندازههای پنجرهای که
مضربی از اندازه سلول نیستند، تنظیم شود.
این گزینه فقط برای پنجرههای شناور (floating) اعمال میشود. اندازه
پنجرههای بیشینهشده، کاشیشده (tiled) یا تمامصفحه به مضربهای اندازه
سلول محدود نخواهد شد.
پیشفرض: yes
resize-keep-grid
بولی.
هنگامی که روی yes تنظیم شود، با تغییر اندازه قلم، اندازه پنجره
تنظیم میشود تا ابعاد شبکه متنی حفظ شود. هنگامی که روی no تنظیم شود،
اندازه پنجره ثابت میماند و شبکه متنی در صورت نیاز برای متناسب شدن
با پنجره تنظیم خواهد شد.
این گزینه فقط برای پنجرههای شناور اعمال میشود.
پیشفرض: yes
initial-color-theme
پوسته رنگی مورداستفاده را مشخص میکند، dark یا light.
مقدار dark از رنگهای تعریفشده در بخش colors-dark استفاده میکند، در
حالی که light از رنگهای بخش colors-light بهره میبرد.
از کلیدهای میانبر color-theme-switch-dark، color-theme-switch-light
و color-theme-toggle برای جابجایی بین دو پوسته در زمان اجرا استفاده
کنید، یا سیگنالهای SIGUSR1/SIGUSR2 را به فرآیند foot بفرستید (برای
جزئیات به foot(1) مراجعه کنید).
پیشفرض: dark
initial-window-size-pixels
عرض و ارتفاع اولیه پنجره بر حسب پیکسل (تابع مقیاسبندی خروجی)، در
قالب WIDTHxHEIGHT. در صورت استفاده از CSD، ارتفاع شامل نوار عنوان
است. مانعةالجمع با initial-window-size-chars.
توجه داشته باشید که در صورت استفاده از مقیاسبندی کسری (fractional
scaling)، ممکن است این گزینه مطابق انتظار کار نکند، به دلیل این
واقعیت که بسیاری از کامپوزیتورها ضریب مقیاسبندی صحیح را تا پس از
نگاشت پنجره گزارش نمیدهند.
پیشفرض: 700x500.
initial-window-size-chars
عرض و ارتفاع اولیه پنجره بر حسب نویسه، در قالب WIDTHxHEIGHT.
مانعةالجمع با initial-window-size-pixels.
توجه داشته باشید که اگر از پیکربندی چند نمایشگر با ضرایب مقیاسبندی
متفاوت استفاده میکنید، این احتمال وجود دارد که اندازه پنجره به
درستی تنظیم نشود. در این صورت، به جای آن از
initial-window-size-pixels استفاده کنید.
و درست مانند initial-window-size-pixels، در صورت استفاده از
مقیاسبندی کسری ممکن است این گزینه مطابق انتظار عمل نکند (برای
جزئیات به initial-window-size-pixels مراجعه کنید).
پیشفرض: not set.
initial-window-mode
حالت پنجره اولیه برای هر پنجره جدید ایجادشده: windowed، maximized
یا fullscreen. پیشفرض: windowed.
title
عنوان اولیه پنجره. پیشفرض: foot.
locked-title
بولی. در صورت فعال بودن، برنامهها مجاز به تغییر عنوان در زمان اجرا
نیستند. پیشفرض: no.
app-id
مقداری برای تنظیم ویژگی app-id روی پنجره Wayland. کامپوزیتور
میتواند از این مقدار برای مثلاً گروهبندی چند پنجره، یا اعمال قوانین
مدیریت پنجره استفاده کند. پیشفرض: foot (حالت عادی)، یا footclient
(حالت سرور).
toplevel-tag
مقداری برای تنظیم ویژگی toplevel-tag روی پنجره Wayland. کامپوزیتور
میتواند از این مقدار برای مدیریت نشست، قوانین پنجره و غیره استفاده
کند. پیشفرض: not set
bold-text-in-bright
نیمهبولی. در صورت فعال بودن، متن پررنگ علاوه بر استفاده از قلم
پررنگ، با رنگ روشنتر رندر میشود. رنگ با ترکیب شدن با سفید روشنتر
میگردد.
اگر به جای یک yes|true ساده روی palette-based تنظیم شود، رنگهایی که
با یکی از ۸ رنگ پالت معمولی تطابق دارند، با استفاده از رنگ پالت
روشن متناظر روشنتر میشوند. سایر رنگها روشنتر نخواهند شد.
پیشفرض: no.
word-delimiters
رشتهای از نویسهها که هنگام انتخاب متن به عنوان جداکننده کلمه عمل
میکنند. توجه داشته باشید که نویسههای فضای خالی، بدون توجه به این
تنظیم، همیشه جداکننده کلمه هستند. پیشفرض: ,│`|:"'()[]{}<>
selection-target
مقصد بریدهدان جهت رونوشت خودکار متن انتخابشده. یکی از none،
primary، clipboard یا both. پیشفرض: primary.
workers
تعداد ریسمانهای مورداستفاده برای رندرینگ. برای غیرفعال کردن
چندریسمانی روی 0 تنظیم کنید. پیشفرض: تعداد پردازندههای منطقی موجود
(شامل SMT). توجه داشته باشید که این مقدار همیشه بهترین مقدار نیست.
در برخی موارد، تعداد هستههای فیزیکی بهتر است.
در صورتی که تعداد بسیار زیادی هسته و/یا ریسمان دارید، محدود کردن
تعداد workers را مد نظر قرار دهید، زیرا foot نمیتواند بیش از تعداد
سطرهای قابل مشاهده را موازیسازی کند.
utmp-helper
مسیر به باینری کمکی ثبت وقایع utmp.
هنگام راهاندازی foot، با اجرای باینری کمکی به همراه آرگومانهای زیر،
یک رکورد utmp ایجاد میشود:
add $WAYLAND_DISPLAY
هنگام بسته شدن foot، با اجرای باینری کمکی به همراه آرگومانهای زیر،
رکورد utmp حذف میشود:
del
برای غیرفعال کردن رکوردهای utmp روی none تنظیم کنید. پیشفرض:
/usr/lib/utempter/utempter.
بخش: محیط (SECTION: environment)
این بخش برای تعریف متغیرهای محیطی استفاده میشود که علاوه بر متغیرهای به
ارث رسیده از خود فرآیند ترمینال، در برنامه کلاینت تنظیم خواهند شد.
قالب آن بسیار ساده است:
name=value
نکته: TERM را در اینجا تنظیم نکنید؛ به جای آن از گزینه term در بخش اصلی
(پیشفرض) استفاده کنید.
بخش: امنیت (SECTION: security)
osc52
اینکه آیا OSC-52 (دسترسی به بریدهدان) فعال است یا غیرفعال. یکی از
مقادیر disabled، copy-enabled، paste-enabled یا enabled.
قابلیت OSC-52 به برنامه ترمینال دسترسی به بریدهدان میزبان (یعنی
بریدهدان Wayland) را میدهد. این مورد معمولاً یک مشکل امنیتی نیست،
زیرا تمام برنامهها میتوانند مستقیماً از طریق سوکت Wayland به
بریدهدان دسترسی داشته باشند.
با این حال، هنگام اتصال با SSH به یک سیستم دوردست، یا دسترسی به یک
کانتینر و غیره، برنامههای ترمینال ممکن است غیرقابل اعتماد باشند و
شاید بخواهید دسترسی به بریدهدان میزبان را غیرفعال کنید.
• disabled: تمام دسترسیها به بریدهدان را غیرفعال میکند
• copy-enabled: برنامهها میتوانند روی بریدهدان بنویسند، اما
نمیتوانند از آن بخوانند.
• paste-enabled: برنامهها میتوانند از بریدهدان بخوانند، اما
نمیتوانند روی آن بنویسند.
• enabled: تمام برنامهها دسترسی کامل به بریدهدان میزبان دارند.
این حالت پیشفرض است.
پیشفرض: enabled
بخش: زنگ اعلان (SECTION: bell)
system
بولی، در صورت تنظیم روی yes، زنگ سیستم (system bell) به صدا
درمیآید. زنگ بدون توجه به اینکه پنجره foot فوکوس صفحهکلید را دارد
یا خیر نواخته میشود. رفتار دقیق آن وابسته به کامپوزیتور است.
پیشفرض: yes
urgent
بولی، در صورت تنظیم روی yes، هرگاه کاراکتر BEL دریافت شود و پنجره
فوکوس صفحهکلید را نداشته باشد، foot وضعیت اضطرار (urgency) را از
طریق پروتکل فعالسازی XDG به کامپوزیتور مخابره میکند.
اگر کامپوزیتور این پروتکل را پیادهسازی نکرده باشد، حاشیهها به رنگ
قرمز نمایش داده خواهند شد.
برنامهها میتوانند این ویژگی را به صورت برنامهنویسیشده با توالیهای
گریز CSI ? 1042 h و CSI ? 1042 l فعال/غیرفعال کنند.
پیشفرض: no
notify
بولی، در صورت تنظیم روی yes، هرگاه کاراکتر BEL دریافت شود، foot با
استفاده از دستور مشخصشده در گزینه notify یک اعلان میزکار صادر
میکند. به طور پیشفرض، اعلانهای زنگ تنها زمانی نمایش داده میشوند که
پنجره فوکوس صفحهکلید را نداشته باشد. به
desktop-notifications.inhibit-when-focused مراجعه کنید.
پیشفرض: no
visual
بولی، در صورت تنظیم روی yes، پنجره ترمینال توسط foot چشمک میزند
(فلاش میزند). پیشفرض: no
command
در صورت تنظیم، foot هنگام دریافت کاراکتر BEL این دستور را اجرا
میکند. پیشفرض: none
command-focused
بولی، آیا دستور زنگ BEL حتی هنگام فوکوس بودن پنجره نیز اجرا شود یا
خیر. پیشفرض: no
بخش: اعلانهای میزکار (SECTION: desktop-notifications)
command
دستوری که برای نمایش یک اعلان اجرا میشود.
آرگومانهای الگو
${title} و ${body} با title (عنوان) و body (متن پیام) واقعی
اعلان جایگزین خواهند شد.
${app-id} با مقدار گزینه خط فرمان --app-id جایگزین میشود، و به
صورت پیشفرض foot (حالت عادی)، یا footclient (حالت سرور) است.
${window-title} با عنوان پنجره جاری جایگزین میشود.
${icon} با آیکون مشخصشده در درخواست اعلان، یا یک رشته خالی در
صورت عدم تعیین آیکون، جایگزین میشود. میتواند همراه با مثلاً
گزینه --icon در notify-send استفاده شود، یا ترجیحاً، با تنظیم
هینت image-path (با مثلاً گزینه --hint در notify-send).
${category} با دستهبندی اعلان جایگزین میشود. میتواند همراه با
مثلاً گزینه --category در notify-send استفاده شود.
${urgency} با درجه اضطرار اعلان جایگزین میشود؛ مقادیر low،
normal یا critical. میتواند همراه با مثلاً گزینه --urgency در
notify-send استفاده شود.
${expire-time} با مدت انقضای مشخصشده برای اعلان جایگزین میشود.
میتواند همراه با مثلاً گزینه --expire-time در notify-send
استفاده شود.
${replace-id} با شناسه تخصیصیافته توسط دیمن اعلان جایگزین میشود
که این اعلان آن را جایگزین/بهروز میکند. برای کارکرد این قابلیت،
foot باید شناسههای تخصیصیافته بیرونی اعلانهای منتشرشده قبلی را
بداند؛ به بخش «stdout» در زیر مراجعه کنید. میتواند همراه با
مثلاً گزینه --replace-id در notify-send استفاده شود.
${muted} بسته به اینکه آیا اعلان درخواست بیصدا کردن تمام صداهای
اعلان را داده است یا خیر، با true یا false جایگزین میشود. هدف
از آن تنظیم هینت suppress-sound است (با مثلاً گزینه --hint در
notify-send).
${sound-name} با نام صدای درخواستشده توسط اعلان جایگزین میشود.
این نام باید از مشخصات نامگذاری صدای freedesktop باشد، اما این
چیزی نیست که foot اجبار کند. هدف از آن تنظیم هینت sound-name
است (با مثلاً گزینه --hint در notify-send).
${action-argument} برای هر اقدام (action) اعلان به گزینه
command-action-argument بسط داده میشود. همیشه دستکم یک اقدام،
اقدام «پیشفرض» (default)، وجود خواهد داشت. foot از این قابلیت
برای فعالسازی فوکوس پنجره و گزارش فعالسازی اعلان به برنامههایی
که درخواست چنین رویدادهایی را دادهاند استفاده میکند.
برنامهها همچنین میتوانند اقدامات اعلان سفارشی خود را تعریف
کنند. برای جزئیات به گزینه command-action-argument مراجعه کنید.
راههای راهاندازی اعلانها
برنامهها میتوانند اعلانها را به روشهای زیر راهاندازی کنند:
• دستور OSC 777: \e]777;notify;
;\e\\
• دستور OSC 99: \e]99;;\e\\ (این تنها یک نمونه پایه
است؛ این پروتکل ویژگیهای متعددی دارد، به
https://sw.kovidgoyal.net/kitty/desktop-notifications
مراجعه کنید)
به طور پیشفرض، اگر پنجره foot دارای فوکوس صفحهکلید باشد،
اعلانها مهار میشوند. به
desktop-notifications.inhibit-when-focused مراجعه کنید.
فعالسازی پنجره (فوکوس کردن)
هنگامی که اعلان «فعال» (activated) میشود، foot میتواند پنجره را
فوکوس کند. همچنین میتواند رویدادی را به برنامه کلاینت بازگرداند
و به آن اطلاع دهد که اعلان «فعال» شده است. این رویداد معمولاً
زمانی رخ میدهد که اقدام پیشفرض فراخوانی شود و/یا روی اعلان کلیک
شود، اما رفتار دقیق به دیمن اعلان مورداستفاده و نحوه پیکربندی
آن بستگی دارد.
برای کارکرد این قابلیت، foot باید بداند اعلان چه زمانی فعال شده
است (در مقایسه با زمانی که صرفاً رد یا بسته شده است) و به یک
توکن فعالسازی XDG نیاز دارد.
برای مدیریت این موضوع دو بخش وجود دارد. نخست، اعلان باید یک
اقدام تعریف کند. برای این منظور، foot یک اقدام «پیشفرض» به
اعلان اضافه میکند (به گزینه command-action-argument مراجعه
کنید).
دوم، foot باید بداند چه زمانی اعلان فعال شده است و باید توکن
فعالسازی XDG را به دست آورد.
انتظار میرود هر دو در خروجی استاندارد (stdout) چاپ شوند.
foot انتظار دارد نام اقدام (نه برچسب آن) در یک سطر جداگانه چاپ
شود. بدون پیشوند و بدون پسوند.
foot انتظار دارد توکن فعالسازی در یک سطر جداگانه با پیشوند
xdgtoken= چاپ شود.
مثال:
default
xdgtoken=18179adf579a7a904ce73754964b1ec3
قالب مورد انتظار خروجی استاندارد ممکن است در هر زمانی تغییر
کند. لطفاً هنگام ارتقای foot، گزارش تغییرات (changelog) را
مطالعه کنید.
نکته: ابزار notify-send به صورت پیشفرض از گزارش توکن فعالسازی
XDG به هیچ روشی پشتیبانی نمیکند. این بدان معناست که فعالسازی
پنجره به صورت پیشفرض کار نخواهد کرد.
خروجی استاندارد (Stdout)
foot موارد زیر را از خروجی استاندارد (stdout) برنامه کمکی اعلان
تشخیص میدهد:
• id: عدد صحیح در مبنای ۱۰، شناسه اعلان تخصیصیافته توسط دیمن
• id=id: همانند nnn ساده.
• default: اقدام «پیشفرض» (default) راهاندازی شد
• action=default: همانند default
• action=n: اقدام سفارشی برنامه n راهاندازی شد
• n: عدد صحیح در مبنای ۱۰، که پس از شناسه ظاهر میشود؛ اقدام
سفارشی برنامه n راهاندازی شد
• xdgtoken=xyz: توکن فعالسازی XDG.
مثال شماره ۱:
17
action=default
xdgtoken=95ebdfe56e4f47ddb5bba9d7dc3a2c35
foot این خروجی را به صورت زیر تشخیص میدهد:
• اعلان دارای شناسه ۱۷ تخصیصیافته توسط دیمن است
• کاربر اقدام پیشفرض را راهاندازی کرده است
• اعلان یک توکن فعالسازی XDG ارسال کرده است
مثال شماره ۲:
17
1
foot این خروجی را به صورت زیر تشخیص میدهد:
• اعلان دارای شناسه ۱۷ تخصیصیافته توسط دیمن است
• کاربر اولین اقدام سفارشی، «۱» را راهاندازی کرده است
مثال شماره ۳:
id=17
1
foot این خروجی را به صورت زیر تشخیص میدهد:
• اعلان دارای شناسه ۱۷ تخصیصیافته توسط دیمن است
• کاربر اولین اقدام سفارشی، «۱» را راهاندازی کرده است
پیشفرض: notify-send
--wait
--app-name ${app-id}
--icon ${app-id}
--category ${category}
--urgency ${urgency}
--expire-time ${expire-time}
--hint STRING:image-path:${icon}
--hint BOOLEAN:suppress-sound:${muted}
--hint STRING:sound-name:${sound-name}
--replace-id ${replace-id}
${action-argument}
--print-id
-- ${title} ${body}.
جایگزین: نمونه پیکربندی fyi: fyi
--wait
--app-name ${app-id}
--icon ${app-id}
--category ${category}
--urgency ${urgency}
--expire-time ${expire-time}
--hint string:image-path:${icon}
--hint boolean:suppress-sound:${muted}
--hint string:sound-name:${sound-name}
--replaces ${replace-id}
${action-argument}
--print-token
-- ${title} ${body}.
command-action-argument
رشتهای برای استفاده همراه با command جهت فعال کردن ارسال نامهای
اقدام/دکمه به برنامه کمکی اعلان.
foot همیشه یک اقدام «پیشفرض» (default) را پیکربندی میکند که میتواند
برای «فعالسازی» اعلان استفاده شود، که به نوبه خود میتواند باعث
فوکوس پنجره foot شود یا یک توالی گریز به برنامه ترمینال ارسال کند
(بسته به اینکه برنامه چگونه اعلان را تولید کرده است).
علاوه بر این، پروتکل اعلانهای OSC-99 به برنامهها اجازه میدهد تا
اقدامات سفارشی خود را تعریف کنند. foot از ترکیبی از گزینه command و
گزینه command-action-argument برای ارسال نامهای اقدامات به برنامه
کمکی اعلان استفاده میکند.
این گزینه دارای آرگومانهای الگوی زیر است:
• ${action-name}: نام اقدام؛ default برای اقدام پیشفرض
پیکربندیشده توسط foot، و n که در آن n یک عدد صحیح ۱ =< است برای
اقدامات تعریفشده توسط برنامه.
• ${action-label}: مقدار Activate برای اقدام پیشفرض، و یک رشته
آزاد برای اقدامات تعریفشده توسط برنامه.
به ازای هر اقدام اعلان (به یاد داشته باشید، همیشه دستکم یک اقدام
وجود خواهد داشت)، گزینه command-action-argument با نام و برچسب آن
اقدام بسط داده میشود.
سپس، ${action-argument} در دستور command به فهرست کامل اقدامات بسط
مییابد.
اگر command-action-argument روی یک رشته خالی تنظیم شود، هیچ اقدامی
به command ارسال نخواهد شد. یعنی ${action-argument} با یک رشته خالی
جایگزین میشود.
مثال:
command-action-argument=--action ${action-name}=${action-label}
command=notify-send ${action-argument} ...
فرض کنید برنامه دو اقدام سفارشی تعریف کرده است: OK و Cancel.
با توجه به موارد فوق، foot دستور زیر را اجرا خواهد کرد:
notify-send
--action default='Click to activate'
--action 1=OK
--action 2=Cancel
پیشفرض: --action ${action-name}=${action-label}
close
دستوری که برای بستن یک اعلان موجود اجرا میشود.
${id} به شناسه اعلانی که باید بسته شود بسط مییابد. برای مثال:
fyi --close ${id}
بستن اعلان تنها توسط پروتکل اعلانهای میزکار کیتی (Kitty Desktop
Notification)، OSC-99 پشتیبانی میشود.
اگر روی رشته خالی تنظیم شود (حالت پیشفرض)، foot در عوض تلاش میکند
تا با ارسال سیگنال SIGINT به فرآیند کمکی اعلان، آن را ببندد. برای
مثال، دستور notify-send --wait (در libnotify >= 0.8.0) با بستن
اعلان به SIGINT پاسخ میدهد.
پیشفرض: not set
inhibit-when-focused
بولی. در صورت فعال بودن، اگر پنجره ترمینال فوکوس صفحهکلید را داشته
باشد، foot اعلانها را نمایش نخواهد داد.
پیشفرض: yes
بخش: تاریخچه پیمایش (SECTION: scrollback)
lines
تعداد سطرهای تاریخچه پیمایش (scrollback). حداکثر تعداد سطرهای
تخصیصیافته برابر با این مقدار به علاوه تعداد سطرهای قابل مشاهده
خواهد بود که به نزدیکترین توان ۲ به بالا گرد میشود. پیشفرض: 1000.
multiplier
مقداری برای ضرب در پیمایش موشواره. این یک عدد اعشاری است، یعنی
مقادیر کسری مجاز هستند. پیشفرض: 3.0.
indicator-position
شیوه نمایش نشانگر موقعیت تاریخچه پیمایش را پیکربندی میکند. یکی از
مقادیر none، fixed یا relative. مقدار none نشانگر را به طور کامل
غیرفعال میکند. مقدار fixed همیشه نشانگر را نزدیک بالای پنجره رندر
میکند، و relative نشانگر را در موقعیتی متناسب با موقعیت پیمایش جاری
رندر مینماید. پیشفرض: relative.
indicator-format
قالبی که هنگام نمایش نشانگر موقعیت تاریخچه پیمایش استفاده میشود.
یکی از مقادیر percentage (درصد)، line (سطر)، یا یک رشته ثابت
سفارشی. در صورت تنظیم indicator-position=none این گزینه نادیده
گرفته میشود. پیشفرض: empty string (رشته خالی).
بخش: پیوندها (SECTION: url)
توجه داشته باشید که میتوانید عبارات منظم سفارشی را نیز اضافه کنید، به
بخش «regex» مراجعه کنید.
launch
دستوری که هنگام باز کردن URLها اجرا میشود. ${url} با URL واقعی
جایگزین خواهد شد. پیشفرض: xdg-open ${url}.
osc8-underline
زمان زیرخط کشیدن زیر URLهای OSC-8. مقادیر ممکن url-mode و always
هستند.
هنگامی که روی url-mode تنظیم شود، نشانیهای OSC-8 درست مانند
نشانیهای به طور خودکار شناساییشده، فقط در حالت URL برجسته میشوند.
هنگامی که روی always تنظیم شود، نشانیهای OSC-8 همیشه بدون در نظر
گرفتن سایر ویژگیهایشان (پررنگ، مورب و غیره) برجسته میشوند. توجه
داشته باشید که این کار آنها را قابل کلیک نمیکند.
پیشفرض: url-mode
style
سبک خط زیرین مورداستفاده هنگام رندر خطوط زیر URL. این گزینه هم برای
خطوط زیرین OSC-8 در حالت osc8-underline=always و هم برای تمام
URLهای شناساییشده در حالت URL اعمال میشود. یکی از مقادیر none
(هیچ)، single (تکخط)، double (دوخط)، curly (موجدار)، dotted
(نقطهچین) یا dashed (خطچین).
پیشفرض: dotted
label-letters
رشتهای از نویسهها برای استفاده هنگام ایجاد توالی کلیدها جهت
برچسبهای پرش URL.
اگر این گزینه را طوری تغییر دهید که شامل حرف t باشد، باید کلید
میانبر پیشفرض [url-bindings].toggle-url-visible را نیز تغییر دهید
تا از تداخل جلوگیری شود.
پیشفرض: sadfjklewcmpgh.
regex
عبارت منظم مورداستفاده هنگام شناسایی خودکار URLها. قالب آن
"POSIX-Extended Regular Expressions" (عبارات منظم گسترشیافته
پازیکس) است. توجه داشته باشید که نخستین زیرعبارت علامتگذاریشده به
عنوان URL استفاده میشود. به عبارت دیگر، اگر میخواهید کل تطابق regex
به عنوان URL استفاده شود، تمام آن را درون پرانتز قرار دهید:
(regex-pattern).
پیشفرض:
(((https?://|mailto:|ftp://|file:|ssh:|ssh://|git://|tel:|magnet:|ipfs://|ipns://|gemini://|gopher://|news:)|www.)([0-9a-zA-Z:/?#@!$&*+,;=.~_%^'-]+|([]["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+)|[[()"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+]|"[][()0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+"|'[][()0-9a-zA-Z:/?#@!$&*+,;=.~_%^-]+')+([0-9a-zA-Z/#@$&*+=~_%^-]|([]["0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+)|[[()"0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+]|"[][()0-9a-zA-Z:/?#@!$&'*+,;=.~_%^-]+"|'[][()0-9a-zA-Z:/?#@!$&*+,;=.~_%^-]+'))
بخش: عبارت منظم (SECTION: regex)
مشابه حالت «url»، اما با عبارات منظم سفارشی تعریفشده (و اجراکنندهها).
برای استفاده از یک عبارت منظم سفارشی، باید یک کلید میانبر نیز برای آن
اضافه کنید. این کار در بخش key-binding انجام میشود، برای جزئیات به زیر
مراجعه کنید. برای مثال، یک عبارت منظم برای شناسایی خلاصه هشها (مانند
هشهای کامیت گیت) میتواند به شکل زیر باشد:
[regex:hashes]
regex=([a-fA-F0-9]{7,128})
launch=path-to-script-or-application ${match}
[key-bindings]
regex-launch=[hashes] Control+Shift+q
regex-copy=[hashes] Control+Mod1+Shift+q
launch
دستوری که هنگام «اجرای» یک تطابق عبارت منظم اجرا میشود. ${match} با
URL واقعی جایگزین خواهد شد. پیشفرض: not set.
regex
عبارت منظم مورداستفاده هنگام تطبیق متن. قالب آن "POSIX-Extended
Regular Expressions" است. توجه داشته باشید که نخستین زیرعبارت
علامتگذاریشده به عنوان تطابق استفاده میشود. به عبارت دیگر، اگر
میخواهید کل تطابق regex استفاده شود، تمام آن را درون پرانتز قرار
دهید: (regex-pattern).
پیشفرض: not set.
بخش: مکاننما (SECTION: cursor)
این بخش سبک و رنگ مکاننما را کنترل میکند. توجه داشته باشید که برنامهها
میتوانند این موارد را در زمان اجرا تغییر دهند.
style
سبک پیشفرض مکاننما را پیکربندی میکند، و یکی از موارد زیر است: block
(بلوک)، beam (خط عمودی)، underline (خط زیرین) یا hollow (توخالی).
توجه داشته باشید که برنامهها میتوانند این مقدار را بازنویسی کنند.
پیشفرض: block.
unfocused-style
نحوه رندر مکاننما هنگام عدم فوکوس پنجره ترمینال را پیکربندی میکند.
مقادیر ممکن عبارتند از:
• unchanged: رندر مکاننما دقیقاً به همان روشی که پنجره دارای فوکوس
است.
• hollow: رندر مکاننمای بلوکی، اما به صورت توخالی.
• none: اصلاً هیچ مکاننمایی نمایش داده نشود.
blink
بولی. چشمک زدن مکاننما را فعال میکند. توجه داشته باشید که برنامهها
میتوانند این مقدار را بازنویسی کنند. گزینه مرتبط: blink-rate.
پیشفرض: no.
blink-rate
سرعتی که مکاننما هنگام فعال بودن چشمکزن پلک میزند. بر حسب میلیثانیه
بین هر چشمک بیان میشود. پیشفرض: 500.
beam-thickness
ضخامت (عرض) مکاننمای سبک خط عمودی (beam). مقدار آن بر حسب پوینت
است، و مقدار دقیق آن بنابراین به DPI نمایشگر بستگی دارد. برای تعیین
ضخامت بر حسب پیکسل، از پسوند px استفاده کنید: برای مثال
beam-thickness=2px. پیشفرض: 1.5
underline-thickness
ضخامت (ارتفاع) مکاننمای سبک خط زیرین (underline). مقدار آن بر حسب
پوینت است، و مقدار دقیق آن بنابراین به DPI نمایشگر بستگی دارد.
برای مشخص کردن ضخامت بر حسب پیکسل، از پسوند px استفاده کنید: برای
مثال underline-thickness=2px.
توجه داشته باشید که در صورت عدم تنظیم، ضخامت مکاننما با اندازه قلم
مقیاسبندی میشود، در حالی که در صورت تنظیم، اندازه ثابت خواهد بود.
پیشفرض: font underline thickness.
بخش: موشواره (SECTION: mouse)
hide-when-typing
بولی. در صورت فعال بودن، مکاننمای موشواره هنگام تایپ کردن پنهان
میشود. پیشفرض: no.
alternate-scroll-mode
بولی. این گزینه مقدار اولیه را برای حالت پیمایش جایگزین (alternate
scroll mode) کنترل میکند. هنگامی که این حالت فعال باشد، رویدادهای
پیمایش موشواره هنگام نمایش صفحه جایگزین به رویدادهای کلیدهای
up/down تبدیل میشوند.
این به شما امکان میدهد با موشواره در مثلاً صفحهبندها (مانند less)
بدون فعالسازی پشتیبانی بومی موشواره در آنها پیمایش کنید.
اگر برنامه پشتیبانی بومی موشواره را فعال کند، پیمایش جایگزین
استفاده نمیشود.
این گزینه میتواند توسط برنامهها در زمان اجرا با استفاده از توالیهای
گریز CSI ? 1007 h (فعال) و CSI ? 1007 l (غیرفعال) تغییر کند.
پیشفرض: yes.
بخش: لمس (SECTION: touch)
long-press-delay
تعداد میلیثانیهها برای تشخیص تفاوت بین یک فشار کوتاه و یک فشار
طولانی روی صفحه لمسی.
پیشفرض: 400.
بخش: رنگهای تیره و روشن (SECTION: colors-dark, colors-light)
این دو بخش ۱۶ رنگ ANSI، رنگهای پیشفرض پیشزمینه و پسزمینه، و پالت
گسترشیافته ۲۵۶ رنگ را کنترل میکنند. توجه داشته باشید که برنامهها
میتوانند این موارد را در زمان اجرا تغییر دهند.
رنگها در قالب RRGGBB هستند (یعنی مقادیر هگز ۶ رقمی معمولی، بدون
پیشوند). به این معنی که مؤلفه آلفا (شفافیت) ندارند. میتوانید شفافیت
پسزمینه را با گزینه alpha پیکربندی کنید.
بخش colors-dark برای تعریف یک پوسته رنگی تیره در نظر گرفته شده است، و
colors-light برای تعریف یک پوسته رنگی روشن در نظر گرفته شده است.
میتوانید با استفاده از کلیدهای میانبر color-theme-switch-dark،
color-theme-switch-light و color-theme-toggle، یا با ارسال سیگنالهای
SIGUSR1/SIGUSR2 به فرآیند foot بین آنها جابجا شوید.
پوسته پیشفرض مورداستفاده colors-dark است، مگر اینکه گزینه
initial-color-theme=light تنظیم شده باشد.
cursor
دو مقدار RRGGBB جداشده با فاصله (یعنی مقادیر هگز ۶ رقمی معمولی،
بدون پیشوند) که رنگهای پیشزمینه (متن) و پسزمینه (مکاننما) را برای
مکاننما مشخص میکنند.
مثال: ff0000 00ff00 (مکاننمای سبز، متن قرمز)
پیشفرض: رنگهای پیشزمینه و پسزمینه عادی، معکوسشده.
foreground
رنگ پیشزمینه پیشفرض. این رنگ زمانی استفاده میشود که از هیچ رنگ ANSI
استفاده نشده باشد. پیشفرض: 839496.
background
رنگ پسزمینه پیشفرض. این رنگ زمانی استفاده میشود که از هیچ رنگ ANSI
استفاده نشده باشد. پیشفرض: 002b36.
regular0, regular1 .. regular7
هشت رنگ پایه ANSI (سیاه، قرمز، سبز، زرد، آبی، سرخابی، فیروزهای،
سفید). پیشفرض: 242424، f62b5a، 47b413، e3c401، 24acd4، f2affd،
13c299، e6e6e6 (پوسته starlight، نسخه ۴).
bright0, bright1 .. bright7
هشت رنگ روشن ANSI (سیاه، قرمز، سبز، زرد، آبی، سرخابی، فیروزهای،
سفید). پیشفرض: 616161، ff4d51، 35d450، e9e836، 5dc5f8، feabf2،
24dfc4، ffffff (پوسته starlight، نسخه ۴).
dim0, dim1 .. dim7
رنگهای سفارشی برای استفاده با رنگهای کمرنگشده (dimmed). رنگهای
کمرنگ ورودی جداگانهای در پالت رنگ ندارند. برنامهها آنها را با ترکیب
یک مقدار رنگ و یک ویژگی «dim» منتشر میکنند.
به طور پیشفرض، foot این ویژگی را با ترکیب رنگ جاری با سیاه یا سفید،
بسته به اینکه گزینه dim-blend-towards روی چه مقداری تنظیم شده باشد،
پیادهسازی میکند. این یک رویکرد کلی است که هم برای رنگهای پالت ۲۵۶
رنگی و هم برای رنگهای ۲۴ بیتی RGB اعمال میشود.
میتوانید با تنظیم گزینههای dimN این رفتار را تغییر دهید. در صورت
تنظیم، foot رنگ جاری را با پالت رنگ مطابقت میدهد، و اگر با یکی از
رنگهای regularN مطابقت داشته باشد، رنگ متناظر dimN استفاده خواهد
شد.
اگر در عوض رنگ جاری با یکی از رنگهای brightN مطابقت داشته باشد، رنگ
متناظر regularN استفاده خواهد شد.
اگر رنگ جاری با هیچ رنگ شناختهشدهای مطابقت نداشته باشد، با ترکیب با
سیاه کمرنگ میشود (یعنی همان رفتاری که در صورت عدم پیکربندی گزینههای
dimN رخ میدهد). رنگهای ۲۴ بیتی RGB معمولاً در این دسته قرار میگیرند.
توجه داشته باشید که برنامهها میتوانند رنگهای regularN و brightN را
در زمان اجرا تغییر دهند. با این حال، راهی برای تغییر رنگهای dimN
ندارند. اگر برنامهای رنگهای regularN را تغییر داده باشد، foot
همچنان از رنگ dimN متناظر، همانطور که در foot.ini پیکربندی شده،
استفاده خواهد کرد.
پیشفرض: not set.
0 .. 255
رنگهای دلخواه در پالت ۲۵۶ رنگ. پیشفرض: برای 0 .. 15، مقادیر پیشفرض
regular و bright در بالا را ببینید؛ برای توضیحات باقی موارد به
https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit مراجعه کنید.
sixel0 .. sixel15
پالت رنگی پیشفرض sixel. پیشفرض: 000000، 3333cc، cc2121، 33cc33،
cc33cc، 33cccc، cccc33، 878787، 424242، 545499، 994242، 549954،
995499، 549999، 999954، cccccc.
alpha
شفافیت پسزمینه. مقداری در بازه 0.0-1.0، که در آن 0.0 به معنی کاملاً
شفاف و 1.0 کدر (کاملاً مات) است. پیشفرض: 1.0.
alpha-mode
مشخص میکند که alpha چه زمانی اعمال شود. یکی از مقادیر default،
matching یا all.
مقدار default شفافیت alpha را روی سلولهایی با رنگ پسزمینه پیشفرض
اعمال میکند، به استثنای سلولهایی که دارای مقدار RGB یکسان با رنگ
پسزمینه پیشفرض هستند.
مقدار matching مانند default است، اما alpha را روی سلولهایی با
مقدار RGB یکسان با رنگ پسزمینه پیشفرض نیز اعمال میکند.
مقدار all شفافیت alpha را بدون در نظر گرفتن رنگ پسزمینه، روی تمام
سلولها اعمال مینماید.
پیشفرض: default
blur
بولی. در صورت فعال بودن، foot در زمان شفاف بودن پسزمینه، آن را مات
(blur) میکند (تنها پنجره اصلی، نه CSDها و غیره). این ویژگی نیازمند
آن است که کامپوزیتور پروتکل ext-background-effect-v1 (و به طور
مشخص، جلوه blur) را پیادهسازی کرده باشد.
پیشفرض: no
dim-blend-towards
رنگی که هنگام کمرنگسازی «خودکار» یک رنگ به سمت آن ترکیب انجام میشود
(به dim0..dim7 در بالا مراجعه کنید). یکی از مقادیر black (سیاه) یا
white (سفید). ترکیب به سمت سیاه متن را تیرهتر میکند، در حالی که
ترکیب به سمت سفید آن را سفیدتر میسازد (اما همچنان کمرنگتر از متن
عادی).
پیشفرض: black (colors-dark)، white (colors-light)
selection-foreground, selection-background
رنگ پیشزمینه (متن) و پسزمینه برای استفاده در متن انتخابشده. پیشفرض:
inverse foreground/background (معکوس پیشزمینه/پسزمینه).
jump-labels
دو مقدار رنگ که رنگهای پیشزمینه (متن) و پسزمینه را برای استفاده
هنگام رندر برچسبهای پرش در حالت URL مشخص میکنند. پیشفرض: regular0
regular3.
scrollback-indicator
دو مقدار رنگ که رنگهای پیشزمینه (متن) و پسزمینه (خود نشانگر) را
برای نشانگر تاریخچه پیمایش مشخص میکنند. پیشفرض: regular0 bright4.
search-box-no-match
دو مقدار رنگ که رنگهای پیشزمینه (متن) و پسزمینه را برای جعبه جستجوی
تاریخچه پیمایش، در زمانی که هیچ تطابقی وجود ندارد، مشخص میکنند.
پیشفرض: regular0 regular1.
search-box-match
دو مقدار رنگ که رنگهای پیشزمینه (متن) و پسزمینه را برای جعبه جستجوی
تاریخچه پیمایش، در زمانی که جعبه جستجو خالی است یا تطابقهایی وجود
دارد، مشخص میکنند. پیشفرض: regular0 regular3.
urls
رنگ مورداستفاده برای خط زیرین که جهت برجستهسازی URLها در حالت URL
استفاده میشود. پیشفرض: regular3.
flash
رنگ مورداستفاده برای فلاش زدن پنجره ترمینال. پیشفرض: 7f7f00.
flash-alpha
شفافیت فلاش زدن. مقداری در بازه 0.0-1.0، که در آن 0.0 به معنی کاملاً
شفاف و 1.0 کدر است. پیشفرض: 0.5.
بخش: تزئین سمت کلاینت (SECTION: csd)
این بخش ظاهر CSDها (تزئینات سمت کلاینت - Client Side Decorations) را
کنترل میکند. توجه داشته باشید که حالت پیشفرض عدم استفاده از CSD است، و
در عوض زمانی که کامپوزیتور پشتیبانی کند از SSDها (تزئینات سمت سرور -
Server Side Decorations) استفاده میشود.
توجه داشته باشید که برخلاف رنگهای تعریفشده در بخش colors، مقادیر رنگ در
اینجا در قالب AARRGGBB (یعنی مقادیر هگز ۸ رقمی معمولی) هستند. به این
معنی که آنها حاوی مؤلفه آلفا هستند - 00 یعنی کاملاً شفاف، و ff کاملاً
مات.
مثالها:
• ffffffff: سفید، کاملاً مات
• ff000000: سیاه، کاملاً مات
• 7fffffff: سفید، نیمهشفاف
• ff00ff00: سبز، کاملاً مات
preferred
کدام نوع تزئین پنجره ترجیح داده شود: client (سمت کلاینت)، server
(سمت سرور) یا none (هیچکدام).
توجه داشته باشید که این مورد تنها یک پیشنهاد به کامپوزیتور است.
بسته به پشتیبانی کامپوزیتور و نحوه پیکربندی آن، ممکن است به foot
دستور دهد از CSD استفاده کند حتی اگر این گزینه روی server تنظیم شده
باشد، یا با وجود تنظیم client یا none، تزئینات SSD را رندر کند.
پیشفرض: server.
size
ارتفاع نوار عنوان بر حسب پیکسل (تابع مقیاسبندی خروجی). تنظیم آن روی
0 نوار عنوان را پنهان میکند، در حالی که همچنان حاشیه را نشان میدهد
(اگر border-width روی یک مقدار غیر صفر تنظیم شده باشد). پیشفرض: 26.
color
رنگ نوار عنوان. پیشفرض: استفاده از رنگ پیشفرض foreground.
font
قلم مورداستفاده برای نوار عنوان. این گزینهای مشابه گزینه اصلی font
و به صورت فهرستی از قلمها است. توجه داشته باشید که اندازه قلم با
استفاده از اندازه نوار عنوان تعیین میشود. یعنی تمام ویژگیهای :size
و :pixelsize نادیده گرفته خواهند شد. پیشفرض: primary font.
hide-when-maximized
بولی. در صورت فعال بودن، نوار عنوان CSD هنگام بیشینه شدن پنجره
پنهان میشود. برای غیرفعال کردن کامل نوار عنوان، به جای آن size را
روی 0 تنظیم کنید. پیشفرض: no.
double-click-to-maximize
بولی. در صورت فعال بودن، دوبار کلیک روی نوار عنوان CSD پنجره را
بیشینه (یا از حالت بیشینه خارج) میکند. پیشفرض: yes.
border-width
عرض حاشیه بر حسب پیکسل (تابع مقیاسبندی خروجی). توجه داشته باشید که
حاشیه کل پنجره، از جمله نوار عنوان را در بر میگیرد. پیشفرض: 0.
border-color
رنگ حاشیه. به طور پیشفرض، از رنگ نوار عنوان استفاده میشود. اگر رنگ
نوار عنوان تنظیم نشده باشد، از رنگ پیشزمینه پیشفرض (از طرح رنگ)
استفاده میشود. پیشفرض: titlebar color.
button-width
عرض دکمههای کمینهسازی/بیشینهسازی/بستن بر حسب پیکسل (تابع مقیاسبندی
خروجی). پیشفرض: 26.
button-color
رنگ پیشزمینه روی دکمههای کمینهسازی/بیشینهسازی/بستن و متن نوار
عنوان. پیشفرض: استفاده از رنگ پیشفرض background.
button-minimize-color
رنگ پسزمینه دکمه کمینهسازی. پیشفرض: استفاده از رنگ پیشفرض regular4
(آبی).
button-maximize-color
رنگ پسزمینه دکمه بیشینهسازی. پیشفرض: استفاده از رنگ پیشفرض regular2
(سبز).
button-close-color
رنگ پسزمینه دکمه بستن. پیشفرض: استفاده از رنگ پیشفرض regular1
(قرمز).
بخش: کلیدهای میانبر (SECTION: key-bindings)
این بخش به شما امکان میدهد کلیدهای میانبر پیشفرض را بازنویسی کنید.
قالب کلی به صورت action=combo1...comboN است. یعنی هر اقدام میتواند یک
یا چند ترکیب کلید داشته باشد که با فاصله از هم جدا میشوند. هر ترکیب به
صورت mod1+mod2+key است. نامهای کلیدهای تبدیلگر (modifiers) و خود کلید
باید نامهای معتبر کلید در XKB باشند.
توجه داشته باشید که اگر Shift یکی از کلیدهای تبدیلگر باشد، نام key
نباید با حروف بزرگ نوشته شود. برای مثال، Control+Shift+V هرگز عمل
نخواهد کرد، اما Control+Shift+v کار میکند.
تمام کلیدهای میانبر پیشفرض از تبدیلگرهای «واقعی» (Mod1، Mod4 و غیره)
استفاده میکنند، اما تبدیلگرهای «مجازی» (Alt، Super و غیره) نیز مجاز
هستند.
دستور xkbcli interactive-wayland میتواند برای یافتن نامهای keysym مفید
باشد.
هنگام تطبیق فشردن کلیدها با کلیدهای میانبر، foot از چند رویکرد مختلف
استفاده میکند.
به عنوان مثال، فرض کنید کلیدهای ctrl+shift+c را فشار میدهید (با فرض
چیدمان ساده us ASCII). کتابخانه XKB به foot خواهد گفت که کلید Control+C
فشرده شده است. به عدم وجود کلید تبدیلگر shift و حرف بزرگ «C» توجه کنید.
در ساختار داخلی، به این حالت قالب «ترجمهشده» (translated) میگویند.
قالب «ترجمهنشده» (Control+Shift+c) از قالب ترجمهشده مشتق میشود، و چیزی
است که foot ابتدا سعی میکند با آن تطابق دهد.
اگر هیچ کلید میانبر «ترجمهنشدهای» یافت نشود، foot به سراغ بررسی گونه
«ترجمهشده» میرود.
این بدان معناست که میتوانید از هر دو قالب در پیکربندی foot خود استفاده
کنید، و اینکه Control+Shift+c (و موارد مشابه) اولویت بالاتری نسبت به
Control+C دارد. همچنین توجه داشته باشید در حالی که foot معمولاً تخصیص یک
ترکیب یکسان به چند اقدام را تشخیص میدهد، تداخل Control+C در مقابل
Control+Shift+c را تشخیص نخواهد داد. میتوان آن را یک باگ شناختهشده
نامید...
در نهایت، foot تلاش میکند تا کد خام کلید را مطابقت دهد. در اینجا،
چیدمان اصلی برای تمام کدهای کلیدی که نماد خاصی از XKB را تولید میکنند
پرسوجو میشود، و کد کلید فشردهشده با آن تطبیق داده میشود. برای مثال، اگر
از چیدمانهای "us,de(neo)" استفاده میکنید، کلید «r» در چیدمان neo نماد
«c» را تولید میکند. یعنی برای دریافت «c»، کلید «r» را فشار میدهید. منطق
تطبیق توضیحدادهشده در بالا تنها با کلیدهای میانبر «c» تطابق مییابد
(مثلاً Control+Shift+c). با این حال، حالت خام با کلیدهای میانبر «r»
تطابق خواهد یافت (مثلاً Control+Shift+r). این برای چیدمانهای غیرلاتین
مفید است، جایی که در غیر این صورت مجبور بودید تمام کلیدهای میانبر را
سفارشیسازی کنید.
یک ترکیب کلید تنها میتواند به یک اقدام نگاشت شود. فرض کنید میخواهید
Control+Shift+R را به fullscreen اختصاص دهید. از آنجا که این میانبر
پیشفرض برای search-start است، ابتدا باید نگاشت پیشفرض را لغو کنید. این
کار را میتوان با تنظیم action=none انجام داد؛ برای نمونه
search-start=none.
noop
تمام ترکیبهای کلیدی که در اینجا فهرست شدهاند به برنامه ارسال
نخواهند شد. پیشفرض: none.
scrollback-up-page
یک صفحه در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: Shift+Page_Up
Shift+KP_Page_Up.
scrollback-up-half-page
نیم صفحه در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: none.
scrollback-up-line
یک سطر در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: none.
scrollback-down-page
یک صفحه در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض:
Shift+Page_Down Shift+KP_Page_Down.
scrollback-down-half-page
نیم صفحه در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض: none.
scrollback-down-line
یک سطر در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض: none.
scrollback-home
به ابتدای تاریخچه پیمایش میرود. پیشفرض: none.
scrollback-end
به انتها (پایین) تاریخچه پیمایش میرود. پیشفرض: none.
clipboard-copy
متن انتخابشده جاری را در بریدهدان رونوشت میکند. پیشفرض:
Control+Shift+c XF86Copy.
clipboard-paste
از بریدهدان جایگذاری میکند. پیشفرض: Control+Shift+v XF86Paste.
primary-paste
از انتخاب اولیه (primary selection) جایگذاری میکند. پیشفرض:
Shift+Insert (همچنین در mouse-bindings تعریف شده است).
search-start
جستجو در تاریخچه پیمایش را آغاز میکند. پیشفرض: Control+Shift+r.
font-increase
اندازه قلم را ۰٫۵ پوینت افزایش میدهد. پیشفرض: Control+plus
Control+equal Control+KP_Add (همچنین در mouse-bindings تعریف شده
است).
font-decrease
اندازه قلم را ۰٫۵ پوینت کاهش میدهد. پیشفرض: Control+minus
Control+KP_Subtract (همچنین در mouse-bindings تعریف شده است).
font-reset
اندازه قلم را به مقدار پیشفرض بازنشانی میکند. پیشفرض: Control+0
Control+KP_0.
spawn-terminal
یک ترمینال جدید ایجاد میکند. اگر پوسته برای ارسال توالی گریز OSC 7
پیکربندی شده باشد، ترمینال جدید در دایرکتوری کاری جاری آغاز به کار
خواهد کرد. پیشفرض: Control+Shift+n.
minimize
پنجره را کمینه میکند. پیشفرض: none.
maximize
وضعیت بیشینهسازی پنجره را تغییر میدهد. پیشفرض: none.
fullscreen
وضعیت تمامصفحه را تغییر میدهد. پیشفرض: none.
pipe-visible, pipe-scrollback, pipe-selected, pipe-command-output
متن قابل مشاهده جاری، کل تاریخچه پیمایش، متن انتخابشده جاری، یا
خروجی آخرین دستور را به یک ابزار بیرونی پایپ (pipe) میکند. نحو این
گزینه کمی ویژه است؛ بخش اول مقدار، دستوری است که باید اجرا شود و
درون "[]" محصور شده است، و پس از آن کلید(های) میانبر میآیند.
تا زمانی که رشتههای دستور متفاوت باشند و کلیدهای میانبر منحصربهفرد
باشند، میتوانید چندین پایپ پیکربندی کنید.
توجه داشته باشید که دستور به طور خودکار درون یک پوسته اجرا نمیشود؛
در صورت نیاز به آن، از sh -c "command line" استفاده کنید.
مثال شماره ۱:
# استخراج URLهای قابل مشاهده فعلی، انتخاب یکی توسط کاربر (از
طریق fuzzel)، سپس راهاندازی firefox با URL انتخابشده
pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r
firefox"] Control+Print
مثال شماره ۲:
# باز کردن محتوای تاریخچه پیمایش در Emacs در حال اجرا در یک
نمونه جدید foot
pipe-scrollback=[sh -c "f=$(mktemp) && cat - > $f && foot
emacsclient -t $f; rm $f"] Control+Shift+Print
پیشفرض: none
show-urls-launch
ورود به حالت URL، که در آن تمام URLهای قابل مشاهده جاری با یک برچسب
پرش شامل یک توالی کلید که URL را باز میکند (و از حالت URL خارج
میشود) نشانهگذاری میشوند. پیشفرض: Control+Shift+o.
show-urls-persistent
مشابه show-urls-launch، اما پس از فعالسازی یک URL به طور خودکار از
حالت URL خارج نمیشود. پیشفرض: none.
show-urls-copy
ورود به حالت URL، که در آن تمام URLهای قابل مشاهده جاری با یک برچسب
پرش شامل یک توالی کلید که URL را در بریدهدان قرار میدهد نشانهگذاری
میشوند. اگر راهنما با یک نویسه بزرگ تکمیل شود، تطابق نیز جایگذاری
خواهد شد. پیشفرض: none.
regex-launch
ورود به حالت عبارت منظم (regex). این دقیقاً مشابه حالت URL عمل
میکند؛ تمام تطابقهای regex با یک برچسب پرش حاوی یک توالی کلید که
تطابق را «اجرا» میکند (و از حالت regex خارج میشود) نشانهگذاری
میشوند.
نام بخش regex باید در کلید میانبر مشخص شود:
[regex:hashes]
regex=([a-fA-F0-9]{7,128})
launch=path-to-script-or-application ${match}
[key-bindings]
regex-launch=[hashes] Control+Shift+q
regex-copy=[hashes] Control+Mod1+Shift+q
پیشفرض: none.
regex-copy
مشابه regex-launch، اما تطابق پس از فعالسازی به جای «اجرا شدن»، در
بریدهدان قرار میگیرد. اگر راهنما با یک نویسه بزرگ تکمیل شود، تطابق
نیز جایگذاری خواهد شد. پیشفرض: none.
prompt-prev
پرش به اعلان (prompt) قبلی که در حال حاضر قابل مشاهده نیست (نیازمند
یکپارچهسازی پوسته است، به foot(1) مراجعه کنید). پیشفرض:
Control+Shift+z.
prompt-next
پرش به اعلان بعدی (نیازمند یکپارچهسازی پوسته است، به foot(1) مراجعه
کنید). پیشفرض: Control+Shift+x.
unicode-input
درج یک نویسه یونیکد با تایپ کدپوینت آن به صورت هگزادسیمال، و به
دنبال آن Enter یا Space.
برای نمونه، جهت درج نویسه ö (حرف کوچک O لاتین با دونقطه، کدپوینت
یونیکد 0xf6)، ابتدا این کلید میانبر را فعال میکنید، سپس تایپ
مینمایید: f، 6، Enter.
نمونهای دیگر: جهت درج 😍 (صورت خندان با چشمهای قلبی، کدپوینت یونیکد
0x1f60d)، این کلید میانبر را فعال کرده، سپس تایپ کنید: 1، f، 6، 0،
d، Enter.
کلیدهای میانبر شناختهشده در حالت ورودی یونیکد:
• کلیدهای Enter، Space: ثبت نویسه یونیکد، سپس خروج از این حالت.
• کلیدهای Escape، q، Ctrl+c، Ctrl+d، Ctrl+g: لغو ورودی، سپس خروج
از این حالت.
• نویسههای 0-9، a-f: افزودن رقم بعدی به کدپوینت یونیکد.
• کلید Backspace: واگردانی (undo) آخرین رقم.
توجه داشته باشید که در این حالت هیچ بازخورد بصری وجود ندارد. این
طراحی هدفمند است؛ حالت ورودی یونیکد foot به عنوان یک راهکار جایگزین
(fallback) در نظر گرفته میشود. روش ارجح برای وارد کردن نویسههای
یونیکد، ایموجیها و غیره استفاده از یک IME است.
پیشفرض: Control+Shift+u.
color-theme-switch-dark, color-theme-switch-light, color-theme-toggle
جابجایی بین پوسته رنگی تیره (تعریفشده در بخش colors-dark) و پوسته
رنگی روشن (تعریفشده در بخش colors-light).
گزینه color-theme-switch-dark پوسته رنگی تیره را صرفنظر از اینکه در
حال حاضر کدام پوسته فعال است اعمال میکند.
گزینه color-theme-switch-light پوسته رنگی روشن را صرفنظر از اینکه
در حال حاضر کدام پوسته فعال است اعمال میکند.
گزینه color-theme-toggle بین پوستههای رنگی اصلی و جایگزین تغییر
حالت میدهد.
نکته: شما همچنین میتوانید سیگنالهای SIGUSR1/SIGUSR2 را برای تغییر
پوسته به فرآیند foot ارسال کنید (برای جزئیات به foot(1) مراجعه
کنید).
پیشفرض: none
quit
خروج از foot. پیشفرض: none.
بخش: کلیدهای جستجو (SECTION: search-bindings)
این بخش به شما امکان میدهد کلیدهای میانبر پیشفرض مورداستفاده در حالت
جستجوی تاریخچه پیمایش را بازنویسی کنید. نحو آن دقیقاً همانند
key-bindings معمولی است.
cancel
جستجو را لغو میکند. نمای دیدگاه بازگردانده میشود و انتخاب اولیه
(primary selection) بهروزرسانی نمیشود. پیشفرض: Control+g Control+c
Escape.
commit
از حالت جستجو خارج شده و انتخاب جاری را در انتخاب اولیه رونوشت
میکند. نمای دیدگاه بازگردانده نمیشود. برای رونوشت متن انتخابشده در
بریدهدان عادی، از Control+Shift+c استفاده کنید. پیشفرض: Return
KP_Enter.
find-prev
در تاریخچه پیمایش به سمت عقب برای تطابق بعدی جستجو میکند. پیشفرض:
Control+r.
find-next
در تاریخچه پیمایش به سمت جلو برای تطابق بعدی جستجو میکند. پیشفرض:
Control+s.
cursor-left
مکاننما را در جعبه جستجو یک نویسه به چپ میبرد. پیشفرض: Left
Control+b.
cursor-left-word
مکاننما را در جعبه جستجو یک کلمه به چپ میبرد. پیشفرض: Control+Left
Mod1+b.
cursor-right
مکاننما را در جعبه جستجو یک نویسه به راست میبرد. پیشفرض: Right
Control+f.
cursor-right-word
مکاننما را در جعبه جستجو یک کلمه به راست میبرد. پیشفرض:
Control+Right Mod1+f.
cursor-home
مکاننما را در جعبه جستجو به ابتدای ورودی میبرد. پیشفرض: Home
Control+a.
cursor-end
مکاننما را در جعبه جستجو به انتهای ورودی میبرد. پیشفرض: End
Control+e.
delete-prev
نویسه پیش از مکاننما را حذف میکند. پیشفرض: BackSpace.
delete-prev-word
کلمه پیش از مکاننما را حذف میکند. پیشفرض: Mod1+BackSpace
Control+BackSpace.
delete-next
نویسه پس از مکاننما را حذف میکند. پیشفرض: Delete.
delete-next-word
کلمه پس از مکاننما را حذف میکند. پیشفرض: Mod1+d Control+Delete.
delete-to-start
ورودی جستجوی پیش از مکاننما را حذف میکند. پیشفرض: Ctrl+u.
delete-to-end
ورودی جستجوی پس از مکاننما را حذف میکند. پیشفرض: Ctrl+k.
extend-char
انتخاب جاری را به اندازه یک نویسه به راست گسترش میدهد. پیشفرض:
Shift+Right.
extend-to-word-boundary
انتخاب جاری را به سمت راست تا مرز کلمه بعدی گسترش میدهد. پیشفرض:
Control+w Control+Shift+Right.
extend-to-next-whitespace
انتخاب جاری را به سمت راست تا فضای خالی بعدی گسترش میدهد. پیشفرض:
Control+Shift+w.
extend-line-down
انتخاب جاری را یک سطر به پایین گسترش میدهد. پیشفرض: Shift+Down.
extend-backward-char
انتخاب جاری را به اندازه یک نویسه به چپ گسترش میدهد. پیشفرض:
Shift+Left.
extend-backward-to-word-boundary
انتخاب جاری را به سمت چپ تا مرز کلمه قبلی گسترش میدهد. پیشفرض:
Control+Shift+Left.
extend-backward-to-next-whitespace
انتخاب جاری را به سمت چپ تا فضای خالی قبلی گسترش میدهد. پیشفرض:
none.
extend-line-up
انتخاب جاری را یک سطر به بالا گسترش میدهد. پیشفرض: Shift+Up.
clipboard-paste
از بریدهدان در بافر جستجو جایگذاری میکند. پیشفرض: Control+v
Control+y Control+Shift+v XF86Paste.
primary-paste
از انتخاب اولیه در بافر جستجو جایگذاری میکند. پیشفرض: Shift+Insert.
unicode-input
حالت ورودی یونیکد. برای جزئیات به key-bindings.unicode-input مراجعه
کنید. پیشفرض: none.
scrollback-up-page
یک صفحه در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: Shift+Page_Up
Shift+KP_Page_Up.
scrollback-up-half-page
نیم صفحه در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: none.
scrollback-up-line
یک سطر در تاریخچه به بالا/عقب پیمایش میکند. پیشفرض: none.
scrollback-down-page
یک صفحه در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض:
Shift+Page_Down Shift+KP_Page_Down.
scrollback-down-half-page
نیم صفحه در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض: none.
scrollback-down-line
یک سطر در تاریخچه به پایین/جلو پیمایش میکند. پیشفرض: none.
scrollback-home
به ابتدای تاریخچه پیمایش میرود. پیشفرض: none.
scrollback-end
به انتها (پایین) تاریخچه پیمایش میرود. پیشفرض: none.
بخش: کلیدهای پیوند (SECTION: url-bindings)
این بخش به شما امکان میدهد کلیدهای میانبر پیشفرض مورداستفاده در حالت
URL را بازنویسی کنید. نحو آن دقیقاً همانند key-bindings معمولی است.
مراقب باشید؛ از کلیدهای تکحرفی که در [url].label-letters نیز استفاده
شدهاند استفاده نکنید، زیرا انجام این کار برخی از URLها را غیرقابل دسترس
میکند.
cancel
بدون باز کردن URL از حالت URL خارج میشود. پیشفرض: Control+g
Control+c Control+d Escape.
toggle-url-visible
به طور پیشفرض، برچسب پرش تنها توالی کلید لازم برای فعالسازی آن را
نشان میدهد. این تا زمانی که URL در متن اصلی قابل مشاهده باشد مشکلی
ندارد.
اما با مثلاً URLهای OSC-8 (نسخه ترمینالی لنگرهای HTML، یعنی
«پیوندها»)، متن روی صفحه میتواند چیزی کاملاً متفاوت از خود URL باشد.
این اقدام بین نمایش و پنهان کردن URL روی برچسب پرش تغییر حالت
میدهد.
پیشفرض: t.
بخش: کلیدهای متنی (SECTION: text-bindings)
این بخش به شما امکان میدهد ترکیبهای کلید را به توالیهای گریز سفارشی
بازنگاشت کنید.
قالب آن به صورت text=combo1...comboN است. یعنی رشتهای که قرار است منتشر
شود میتواند یک یا چند ترکیب کلید جداشده با فاصله داشته باشد. هر ترکیب
به صورت mod1+mod2+key است. نامهای کلیدهای تبدیلگر و خود کلید باید
نامهای معتبر کلید در XKB باشند.
رشته متنی نویسهها یا بایتهایی را مشخص میکند که هنگام فشرده شدن
ترکیب(های) کلید مربوطه منتشر میشوند. دو روش برای مشخص کردن یک نویسه
وجود دارد:
• نویسههای عادی و قابل چاپ همانطور که هستند نوشته میشوند: abcdef.
• بایتها (مثلاً ESC) به صورت اعداد هگزادسیمال دو رقمی، با پیشوند \x
نوشته میشوند: \x1b.
مثال: میخواهید Super+k را به کلید Up بازنگاشت کنید.
توالی گریز برای کلید Up برابر ESC [ A (بدون فاصلهها) است. بنابراین،
باید این را در foot.ini مشخص کنیم (Mod4 نام XKB برای کلید Super/لوگو
است):
\x1b[A = Mod4+k
نمونهای دیگر: برای بازنگاشت Super+c به Control+c:
\x03 = Mod4+c
بخش: کلیدهای موشواره (SECTION: mouse-bindings)
این بخش به شما امکان میدهد کلیدهای میانبر پیشفرض موشواره را بازنویسی
کنید.
قالب کلی به صورت action=combo1...comboN است. یعنی هر اقدام میتواند یک
یا چند ترکیب کلید جداشده با فاصله داشته باشد. هر ترکیب به صورت
mod1+mod2+BTN_[-COUNT] است. نامهای کلیدهای تبدیلگر باید نامهای
معتبر کلید در XKB باشند، و نام دکمه باید یک نام معتبر در libinput باشد.
میتوانید نام دکمهها را با استفاده از libinput debug-events پیدا کنید.
مقدار انتهایی COUNT (تعداد دفعاتی که دکمه باید کلیک شود) اختیاری است و
تعداد کلیکهای لازم برای فعال شدن میانبر را مشخص میکند. در صورت حذف
COUNT، مقدار پیشفرض 1 است.
برای نگاشت رویدادهای چرخک موشواره (یعنی پیمایش)، از نامهای دکمه
BTN_WHEEL_BACK (بالا) و BTN_WHEEL_FORWARD (پایین) استفاده کنید. توجه
داشته باشید که این رویدادها هرگز مقداری بزرگتر از ۱ برای COUNT ایجاد
نمیکنند. به این معنی که مثلاً BTN_WHEEL_BACK+2 هرگز فعال نخواهد شد.
همچنین foot چرخکهای دارای قابلیت کج شدن (tiltable) را تشخیص میدهد؛ برای
نگاشت آنها، از BTN_WHEEL_LEFT و BTN_WHEEL_RIGHT استفاده کنید.
یک ترکیب تبدیلگر+دکمه تنها میتواند به یک اقدام نگاشت شود. فرض کنید
میخواهید BTN_MIDDLE را به fullscreen اختصاص دهید. از آنجا که BTN_MIDDLE
کلید میانبر پیشفرض برای primary-paste است، ابتدا باید نگاشت پیشفرض را
لغو کنید. این کار را میتوان با تنظیم action=none انجام داد؛ برای نمونه
primary-paste=none.
selection-override-modifiers
تبدیلگرهای تنظیمشده در این مجموعه (که میتوانند روی هر ترکیبی از
تبدیلگرها، مثلاً mod1+mod2+mod3، و همچنین none تنظیم شوند) برای فعال
کردن انتخاب متن با موشواره بدون در نظر گرفتن اینکه آیا برنامه
کلاینت در حال حاضر موشواره را در اختیار گرفته است یا خیر، استفاده
میشوند. هر ترکیبی از این تبدیلگرها نمیتواند در کلیدهای میانبر
موشواره استفاده شود. به دلیل اینکه ترتیب میانبرها اهمیت دارد، بهتر
است این گزینه پیش از هر میانبر موشواره دیگری که ممکن است از
تبدیلگرهای مجموعه پیشفرض استفاده کند، تنظیم شود. پیشفرض: Shift
اقداماتی که میتوان ترکیبهای موشواره را به آنها متصل کرد در زیر فهرست
شدهاند. تمام اقدامات فهرستشده ذیل key-bindings در اینجا نیز قابل
استفاده هستند.
scrollback-up-mouse
صفحه عادی: محتوا را به بالا پیمایش میکند.
صفحه جایگزین (Alt screen): در صورت فعال بودن حالت پیمایش جایگزین،
رویدادهای ساختگی KeyUP را به برنامه کلاینت ارسال میکند.
پیشفرض: BTN_WHEEL_BACK
scrollback-down-mouse
صفحه عادی: محتوا را به پایین پیمایش میکند.
صفحه جایگزین: در صورت فعال بودن حالت پیمایش جایگزین، رویدادهای
ساختگی KeyDOWN را به برنامه کلاینت ارسال میکند.
پیشفرض: BTN_WHEEL_FORWARD
select-begin
شروع یک انتخاب تعاملی. انتخاب با رها کردن دکمه نهایی شده و در
انتخاب اولیه رونوشت میشود. پیشفرض: BTN_LEFT.
select-begin-block
شروع یک انتخاب بلوکی تعاملی. انتخاب با رها کردن دکمه نهایی شده و در
انتخاب اولیه رونوشت میشود. پیشفرض: Control+BTN_LEFT.
select-word
شروع یک انتخاب تعاملی کلمهبهکلمه، که در آن کلمات با فاصله خالی و
تمام نویسههای تعریفشده توسط گزینه word-delimiters از یکدیگر جدا
میشوند. انتخاب با رها کردن دکمه نهایی شده و در انتخاب اولیه رونوشت
میشود. پیشفرض: BTN_LEFT-2.
select-word-whitespace
مشابه select-word، اما نویسههای موجود در گزینه word-delimiters
نادیده گرفته میشوند. یعنی تنها نویسههای فضای خالی به عنوان جداکننده
عمل میکنند. انتخاب با رها کردن دکمه نهایی شده و در انتخاب اولیه
رونوشت میشود. پیشفرض: Control+BTN_LEFT-2.
select-quote
شروع یک انتخاب تعاملی درون نقلقول. این مشابه select-word است، با
این تفاوت که کل نقلقول انتخاب میشود (یعنی همه چیز درون نقلقول، به
جز خود نویسههای نقلقول). نویسههای نقلقول شناختهشده عبارتند از: " و
'.
اگر یک نقلقول کامل در سطر منطقی جاری یافت نشود (تنها یک نویسه
نقلقول، یا هیچکدام یافت نشود)، کل سطر انتخاب میشود.
انتخاب با رها کردن دکمه نهایی شده و در انتخاب اولیه رونوشت میشود.
پس از انجام انتخاب اولیه، بسته به اینکه نقلقولی یافت شده باشد یا
خیر، مانند یک انتخاب کلمه عادی یا انتخاب سطر رفتار میکند. این امر
بر آنچه هنگام گسترش انتخاب رخ میدهد تأثیر میگذارد.
نکات:
• نویسههای نقلقول اسکیپشده پشتیبانی نمیشوند ("foo \"bar" با 'foo
\' تطابق مییابد، نه با 'foo "bar').
• نرمافزار foot تلاش نمیکند نویسههای نقلقول نامتقارن را مدیریت
کند؛ آنها به سادگی تطابق پیدا نخواهند کرد.
• نقلقولهای تو در تو (با استفاده از نویسههای نقلقول مختلف)
پشتیبانی میشوند.
پیشفرض: BTN_LEFT-3.
select-row
شروع یک انتخاب تعاملی سطربهسطر. انتخاب با رها کردن دکمه نهایی شده و
در انتخاب اولیه رونوشت میشود. پیشفرض: BTN_LEFT-4.
select-extend
گسترش تعاملی یک انتخاب موجود، با استفاده از حالت انتخاب اصلی (عادی،
بلوکی، کلمهای یا سطری). انتخاب با رها کردن دکمه نهایی شده و در
انتخاب اولیه رونوشت میشود. پیشفرض: BTN_RIGHT.
select-extend-character-wise
مشابه select-extend، اما حالت انتخاب را به normal (یعنی
نویسهبهنویسه) تغییر میدهد. توجه داشته باشید که این امر باعث میشود
عملیاتهای بعدی select-extend نیز نویسهبهنویسه باشند. این اقدام برای
انتخابهای بلوکی نادیده گرفته میشود. پیشفرض: Control+BTN_RIGHT.
primary-paste
از انتخاب اولیه جایگذاری میکند. پیشفرض: BTN_MIDDLE.
font-increase
اندازه قلم را ۰٫۵ پوینت افزایش میدهد. پیشفرض:
Control+BTN_WHEEL_BACK (همچنین در key-bindings تعریف شده است).
font-decrease
اندازه قلم را ۰٫۵ پوینت کاهش میدهد. پیشفرض:
Control+BTN_WHEEL_FORWARD (همچنین در key-bindings تعریف شده است).
تنظیمات پیشرفته (TWEAK)
این بخش ویژه کاربران پیشرفته است و گزینههای پیکربندی را شرح میدهد که
میتوان از آنها برای تنظیم دقیق رفتارهای سطح پایین foot استفاده کرد.
این گزینهها در پیکربندی نمونه گنجانده نشدهاند. تا زمانی که متوجه عملکرد
آنها نشدهاید، نباید آنها را تغییر دهید.
توجه داشته باشید که این گزینهها ممکن است در هر زمانی بدون اطلاع قبلی
تغییر کرده یا حذف شوند.
هنگام گزارش اشکالات، لطفاً ذکر کنید که آیا هر یک از این گزینهها را تغییر
دادهاید و به چه مقداری تنظیم کردهاید.
scaling-filter
فیلتر مقیاسبندی پیشفرض مورداستفاده هنگام کوچکسازی قلمهای بیتمپ
(مانند قلمهای ایموجی) را بازنویسی میکند. مقادیر ممکن عبارتند از:
none، nearest، bilinear، impulse، box، linear، cubic، gaussian،
lanczos2، lanczos3 یا lanczos3-stretched.
پیشفرض: lanczos3.
overflowing-glyphs
بولی. در صورت فعال بودن، به گلیفهایی که عریضتر از سلول(های) خود
هستند اجازه داده میشود در یک سلول همسایه اضافی رندر شوند.
یک مورد استفاده برای این ویژگی قلمهایی با نویسههای مورب عریض هستند
که به سلول بعدی «خم» میشوند. بدون این گزینه، چنین گلیفهایی
«بریدهشده» به نظر خواهند رسید.
مورد استفاده دیگر قلمهایی با نویسههای «آیکون» در ناحیه استفاده
خصوصی یونیکد هستند، مانند قلمهای Nerd، یا قلمهای Powerline و
نویسههای ایموجی قدیمی مانند WHITE FROWNING FACE.
نکته: ممکن است بسته به قلم مورداستفاده بر کارایی تأثیر بگذارد.
بهویژه اندازههای کوچک قلم به دلیل رندر سابپیکسل میتوانند گلیفهای
سرریزکننده زیادی ایجاد کنند.
پیشفرض: yes.
render-timer
تایمر رندر فریم را فعال میکند که زمان لازم برای رندر هر فریم را بر
حسب میکروثانیه، روی صفحه، در خروجی خطای استاندارد (stderr)، یا هر
دو چاپ میکند. مقادیر معتبر عبارتند از none، osd، log و both.
پیشفرض: none.
box-drawing-base-thickness
ضخامت خط برای استفاده در نویسههای ترسیم خط جعبه LIGHT، بر حسب
پوینت. این مقدار با استفاده از DPI نمایشگر به پیکسل تبدیل شده و سپس
در اندازه سلول ضرب میشود. نتیجه نهایی این است که یک قلم بزرگتر (و
در نتیجه سلولهای بزرگتر) به خطوط ضخیمتر منجر میشود. پیشفرض: 0.04.
box-drawing-solid-shades
بولی. در صورت فعال بودن، سایههای ترسیم جعبه (مانند LIGHT SHADE،
MEDIUM SHADE و DARK SHADE) به صورت بلوکهای یکدست با استفاده از گونه
تیرهتری از رنگ پیشزمینه جاری رندر میشوند.
در صورت غیرفعال بودن، در عوض به صورت الگوی شطرنجی و با استفاده از
همان رنگ پیشزمینه جاری رندر میگردند.
پیشفرض: yes.
delayed-render-lower, delayed-render-upper
این دو مقدار، مهلتهای زمانی (بر حسب نانوثانیه) را کنترل میکنند که
برای کاهش چشمکزدن صفحه ناشی از نوشتن بهروزرسانیهای بزرگ و غیراتمیک
توسط کلاینتها استفاده میشوند.
اگر یک کلاینت یک بهروزرسانی صفحه را در چندین فراخوانی write(3)
تقسیم کند، ممکن است در نهایت یک فریم میانی را رندر کنیم که بلافاصله
با فریم دیگری با محتوای نهایی صفحه دنبال میشود. برای مثال، کلاینت
ممکن است بخشی از صفحه را در یک نوشتن پاک کند (یا پیمایش کند)، و سپس
محتوای جدید را در یک یا چند نوشتن بعدی بنویسد. رندر کردن فریم در
زمانی که صفحه پاک شده اما هنوز با محتوای جدید پر نشده است، به عنوان
چشمکزدن صفحه احساس خواهد شد.
راهکار واقعی برای این موضوع، بهروزرسانیهای همگام برنامهها
(Application Synchronized Updates) است
(https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2).
مشکل این ویژگی دوگانه است - نخست، هنوز استانداردسازی نشده است، و
بنابراین شبیهسازهای ترمینال زیادی نیستند که آن را پیادهسازی کرده
باشند (foot آن را پیادهسازی کرده است)، و دوم، برنامهها باید برای
استفاده از آن وصله شوند.
تا زمانی که این اتفاق بیفتد، foot یک راهکار موقت ارائه میدهد؛ تلاشی
برای کاهش چشمکزدن صفحه بدون تأثیر بر کارایی یا تاخیر.
این رویکرد مبتنی بر این واقعیت است که صفحه در فواصل زمانی ثابتی
بهروز میشود (معمولاً ۶۰ هرتز). برای ما، این بدان معناست که فرقی
نمیکند فریم جدید را در ابتدای یک بازه فریم رندر کنیم یا در انتهای
آن. بنابراین، هدف ایجاد تاخیری بین دریافت دادههای کلاینت و رندر
وضعیت حاصل است، اما بدون ایجاد پرش فریم.
اگرچه باید بتوان زمان باقیمانده تا فریم بعدی را تخمین زد، اما
الگوریتم foot در حال حاضر چندان پیشرفته نیست، بلکه شاید بتوان گفت
بر پایه آمار است - تاخیری که ما ایجاد میکنیم آنقدر کوچک است که خطر
افتادن فریم به بازه فریم بعدی نیز بسیار اندک است.
خب، متن زیادی شد. اما آنچه foot در عمل انجام میدهد چیست؟
هنگام دریافت دادههای کلاینت، تایمری را زمانبندی میکند:
delayed-render-lower. اگر پیش از پایان تایمر هیچ داده دیگری از
کلاینت دریافت نکنیم، فریم را رندر میکنیم. با این حال اگر دادههای
بیشتری دریافت کنیم، تایمر دوباره زمانبندی میشود. یعنی هر بار که
دادههای کلاینت را دریافت میکنیم، رندر فریم به اندازه
delayed-render-lower نانوثانیه دیگر به تعویق میافتد.
اکنون، با اینکه این روش با بیشتر کلاینتها بسیار خوب کار میکند، اما
ممکن است کلاینت مخربی ساخته شود که پیوسته دادهها را با سرعتی آهسته
بنویسد. برای کاربر، این به نظر میرسد که foot قفل کرده است چرا که
هرگز به رندر فریم جدید نمیرسیم. برای جلوگیری از این موضوع، یک سقف
بالایی تعیین شده است - delayed-render-upper. اگر زمان این تایمر به
پایان برسد، فریم را بدون در نظر گرفتن کاری که کلاینت انجام میدهد
رندر میکنیم.
هنگام تغییر این مقادیر، توجه داشته باشید که مهلت پایینی باید کمتر
از مهلت بالایی تنظیم شود، هرچند که این موضوع توسط foot اعتبارسنجی
نمیشود. علاوه بر این، هر دو مقدار باید کمتر از ۱۶ میلیثانیه (یعنی
۱۶۰۰۰۰۰۰ نانوثانیه) باشند.
میتوانید با تنظیم هر یک از مقادیر روی 0 این ویژگی را به طور کامل
غیرفعال کنید. در این حالت، فریمها «در سریعترین زمان ممکن» رندر
میشوند.
پیشفرض: مقدار پایینی=500000 (۰٫۵ میلیثانیه)، بالایی=8333333 (۸٫۳
میلیثانیه - نصف یک بازه فریم).
damage-whole-window
بولی. در صورت فعال بودن، foot با هر بار رندر شدن یک فریم، کل پنجره
را «damage» (آسیبدیده جهت بازترسیم) علامتگذاری میکند. این امر
کامپوزیتور را وادار میکند کل پنجره را دوباره ترسیم کند. در صورت
غیرفعال بودن، foot تنها سطرهای بهروزشده را علامتگذاری میکند.
به طور معمول هیچ دلیلی برای فعال کردن این گزینه وجود ندارد. با این
حال، مشاهده شده است که این گزینه مشکلی را در زمینه مقیاسبندی کسری
در Gnome برطرف میکند.
توجه داشته باشید که فعال کردن این گزینه احتمالاً مصرف پردازنده (CPU)
و/یا گرافیک (GPU) را (توسط کامپوزیتور، نه توسط foot) افزایش میدهد و
ممکن است تأثیر منفی بر طول عمر باتری داشته باشد.
پیشفرض: no.
grapheme-shaping
بولی. در صورت فعال بودن، foot از utf8proc برای قطعهبندی خوشههای
نویسهوارهای (grapheme cluster) هنگام تجزیه متن «چاپشده» استفاده
میکند. سپس، هنگام رندر کردن، از fcft (در صورت کامپایل با پشتیبانی
از HarfBuzz) برای شکلدهی به خوشههای نویسهوارهای استفاده خواهد کرد.
این قابلیت برای رندر مواردی مانند توالیهای پرچم (ایموجی)، توالیهای
کلیدها (keycap)، توالیهای تبدیلگر، توالیهای اتصالدهنده با عرض صفر
(ZWJ) و توالیهای برچسب ایموجی الزامی است. همچنین ممکن است بسته به
قلم، رندر نویسههای ترکیبی را بهبود بخشد.
• foot باید با پشتیبانی از utf8proc کامپایل شده باشد
• fcft باید با پشتیبانی از HarfBuzz کامپایل شده باشد
این گزینه را میتوان در زمان اجرا با DECSET/DECRST 2027 نیز تنظیم
کرد.
همچنین ببینید: grapheme-width-method.
پیشفرض: yes
grapheme-width-method
روشی را برای محاسبه عرض (یعنی تعداد ستونها) یک خوشه نویسهوارهای
انتخاب میکند. یکی از مقادیر wcswidth، double-width و max.
مقدار wcswidth به سادگی عرض تکی تمام کدپوینتهای تشکیلدهنده خوشه را
با هم جمع میکند.
مقدار double-width همان کار را انجام میدهد، اما حداکثر تعداد ستونها
را به ۲ محدود میکند. این دقیقتر است، اما ممکن است برخی برنامهها را
با مشکل مواجه کند، زیرا برنامهها معمولاً از wcswidth(3) در ساختار
داخلی برای محاسبه عرض استفاده میکنند. این امر منجر به مشکلات
ناهماهنگی موقعیت مکاننما میشود.
مقدار max از عرض بزرگترین کدپوینت در خوشه استفاده میکند.
پیشفرض: double-width
font-monospace-warn
بولی. در صورت فعال بودن، foot از روشهای اکتشافی (heuristics)
استفاده میکند تا تکفاصله (monospace) بودن قلم اصلی را بررسی کند، و
در صورتی که نباشد هشدار میدهد.
اگر همچنان میخواهید از قلم استفاده کنید، حتی اگر foot فکر کند که
تکفاصله نیست، این گزینه را غیرفعال کنید.
همچنین ممکن است بخواهید آن را برای دستیابی به زمانهای راهاندازی کمی
سریعتر غیرفعال نمایید.
پیشفرض: yes
max-shm-pool-size-mb
این گزینه مقدار فضای آدرس مجازی مورداستفاده توسط حافظه pixmap را که
محتوای صفحه نمایش ترمینال در آن رندر میشود، کنترل میکند.
این گزینه میزان حافظه فیزیکی مورداستفاده توسط foot را تغییر نمیدهد.
نرمافزار foot از ترفند نگاشت حافظه برای پیادهسازی رندرینگ سریع
پیمایش تعاملی استفاده میکند (به طور معمول، اما به طور کلی برای
پیمایشهای «آهسته» نیز صدق میکند). برای مثال: نگه داشتن کلید پیکان
«بالا» یا «پایین» برای پیمایش در یک ویرایشگر متن.
برای کارکرد این ویژگی، به مقدار زیادی فضای آدرس مجازی نیاز دارد.
مجدداً توجه داشته باشید که این حافظه فیزیکی نیست.
در یک رایانه معمولی مبتنی بر x64، هر فرآیند دارای ۱۲۸ ترابایت فضای
آدرس مجازی است و پردازندههای جدیدتر دارای ۶۴ پتابایت هستند. این
مقدار بسیار عظیمی است و بیشتر برنامهها حتی به مقداری نزدیک به آن هم
دسترسی پیدا نمیکنند.
هر پنجره ترمینال foot میتواند تا ۲ گیگابایت فضای آدرس مجازی تخصیص
دهد. با ۱۲۸ ترابایت فضای آدرس، این به معنای حداکثر ۶۵۵۳۶ پنجره در
حالت سرور/دیمن است (به ازای ۲ گیگابایت). این مقدار باید کاملاً کافی
باشد، درست است؟
با این حال، کامپوزیتور Wayland نیز باید همان مقدار فضای آدرس مجازی
را تخصیص دهد. بنابراین، احتمال اتمام فضای آدرس در آن کمی بیشتر است،
زیرا باید تمام کلاینتهای در حال اجرای Wayland را به همان شیوه و
همزمان میزبانی کند.
در صورتی که این موضوع برای شما مشکلی ایجاد کرد، میتوانید مقدار
مورداستفاده را با این گزینه کاهش دهید.
یا، برای دستیابی به کارایی بهینه، میتوانید آن را به حداکثر مقدار
مجاز، ۲ گیگابایت افزایش دهید (اما توجه داشته باشید که احتمالاً متوجه
هیچ تفاوتی در مقایسه با مقدار پیشفرض نخواهید شد).
تنظیم آن روی 0 این ویژگی را غیرفعال میکند.
محدودیتها:
• تنها در معماریهای ۶۴ بیتی پشتیبانی میشود
• تنها در لینوکس پشتیبانی میشود
پیشفرض: 512. حداکثر مقدار مجاز: 2048 (۲ گیگابایت).
min-stride-alignment
این گزینه حداقل تراز گام (stride alignment) را بر حسب بایت، هنگام
تخصیص بافرهای SHM کنترل میکند.
در برخی شرایط، کامپوزیتور میتواند بافرهای SHM برنامه foot را
مستقیماً بدون کپی کردن بافر در حافظه GPU، به GPU وارد (import) کند
(معمولاً در گرافیکهای مجتمع). درایورهای مختلف نیازمندیهای متفاوتی
برای این کار دارند، و یکی از آن نیازمندیها معمولاً تراز گام است. در
زمان نگارش این متن، پردازندههای گرافیکی AMD به تراز ۲۵۶ بایتی نیاز
دارند.
توجه داشته باشید که انجام یک ایمپورت مستقیم معمولاً آزادسازی بلادرنگ
بافر را غیرفعال میکند (اگر کامپوزیتور از آن پشتیبانی کند)، که به
این معنی است که foot باید از بافرسازی دوگانه استفاده کند. این امر
جریمه کارایی را به foot اضافه میکند، اما کارایی کلی سیستم همچنان
باید بهتر باشد.
اگر از گرافیک مجتمع استفاده نمیکنید، یا اگر کامپوزیتور از وارد کردن
مستقیم GPU پشتیبانی نمیکند، این گزینه تأثیری نزدیک به صفر دارد.
میتوانید با تنظیم آن روی 0 مقدار کمی از حافظه را ذخیره کنید.
در نهایت، این به عهده کامپوزیتور است که تصمیم بگیرد آزادسازی
بلادرنگ بافر را انجام دهد یا برای بهینهسازی وارد کردن به GPU تلاش
کند.
پیشفرض: 256
sixel
بولی. در صورت فعال بودن، foot تصاویر sixel را پردازش میکند. پیشفرض:
yes
dim-amount
میزانی که متن کمرنگشده با آن تیره میشود. پیشفرض: 1.5.
bold-text-in-bright-amount
میزانی که قلمهای پررنگ هنگام تنظیم bold-text-in-bright روی yes
روشنتر میشوند (گونه palette-based تحت تأثیر این گزینه قرار
نمیگیرد). پیشفرض: 1.3.
surface-bit-depth
عمق بیت RGB مورداستفاده برای بافرهای تصویر را انتخاب میکند. یکی از
مقادیر auto، 8-bit، 10-bit یا 16-bit.
مقدار auto عمق بیت را بسته به سایر تنظیمات و در دسترس بودن انتخاب
میکند.
مقدار 8-bit، از ۸ بیت برای هر کانال رنگی، شامل آلفا استفاده میکند.
این حالت پیشفرض در زمان gamma-correct-blending=no است.
مقدار 10-bit از ۱۰ بیت برای هر کانال RGB و ۲ بیت برای کانال آلفا
استفاده میکند. بنابراین، کانالهای رنگی با دقت بالاتری را فراهم
میکند، اما کانال آلفا با دقت کمتری خواهد بود.
مقدار 16-bit از ۱۶ بیت برای هر کانال رنگی، شامل آلفا استفاده
مینماید. در صورت وجود، این حالت پیشفرض در زمان
gamma-correct-blending=yes است.
توجه داشته باشید که هر دو حالت 10-bit و 16-bit بسیار کُندتر از 8-bit
هستند؛ اگر میخواهید از ترکیب تصحیحشده با گاما استفاده کنید و سرعت
(توان پردازش و تاخیر ورودی) را به رنگهای دقیق ترجیح میدهید،
میتوانید surface-bit-depth=8-bit را صراحتاً تنظیم کنید.
پیشفرض: auto
pre-apply-damage
بولی. در صورت فعال بودن، foot هنگامی که مجبور به بافرسازی دوگانه
است (یعنی زمانی که کامپوزیتور بافرهای SHM را بلافاصله آزاد نمیکند)،
تلاش میکند تا تغییرات فریم پیشین (damage) را پیشاپیش اعمال کند.
تمام متن پس از این فرض میکند که کامپوزیتور بافرها را بلافاصله آزاد
نمیکند.
هنگامی که این گزینه غیرفعال باشد، هر بار که foot نیاز به رندر یک
فریم دارد، ابتدا باید نواحی تغییریافته در آخرین فریم را رونویسی کند
(یعنی تمام تغییرات بین دو فریم گذشته). این در اصل یک memcpy(3) است
که در صورت بزرگ بودن ناحیه تغییریافته میتواند کُند باشد. همچنین روی
ریسمان اصلی انجام میشود، به این معنی که foot نمیتواند همزمان کار
دیگری انجام دهد؛ هیچ رندر دیگری و هیچ تجزیه ترمینال مجازی (VT). پس
از انتقال تغییرات به فریم جدید، foot شروع به رندر سلولهایی میکند که
بین آخرین فریم و فریم جدید تغییر کردهاند.
هنگامی که این گزینه فعال باشد، تغییرات بین دو فریم پیشین قبل از
اینکه foot شروع به رندر فریم بعدی کند، به آنچه فریم بعدی خواهد شد
منتقل میشوند. به محض اینکه کامپوزیتور بافر قبلی را آزاد کند (معمولاً
بلافاصله پس از اینکه foot یک فریم جدید را ارسال کرد)، foot ریسمانی
را آغاز میکند که تغییرات را روی بافر تازه آزادشده رونوشت میکند. از
آنجا که این کار در یک ریسمان جداگانه انجام میشود، foot میتواند
همزمان به پردازش ورودی ادامه دهد. بعداً، هنگامی که زمان رندر یک فریم
جدید فرا میرسد، تغییرات از قبل منتقل شدهاند و foot میتواند بلافاصله
رندر واقعی را آغاز کند.
بنابراین، فعال بودن این گزینه هم کارایی را بهبود میبخشد (رونوشت
تغییرات دو فریم آخر ریسمانی میشود)، و هم تاخیر ورودی را بهبود میدهد
(رندر فریم بعدی دیگر مجبور نیست ابتدا تغییرات بین دو فریم آخر را
انتقال دهد).
پیشفرض: yes
همچنین ببینید (SEE ALSO)
foot(1), footclient(1)
2026-09-03 foot.ini(5)