foot.ini(5) File Formats Manual foot.ini(5)

foot.ini - پرونده پیکربندی برای foot(1)

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=""

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.

این بخش برای تعریف متغیرهای محیطی استفاده می‌شود که علاوه بر متغیرهای به ارث رسیده از خود فرآیند ترمینال، در برنامه کلاینت تنظیم خواهند شد.

قالب آن بسیار ساده است:

name=value

نکته: TERM را در اینجا تنظیم نکنید؛ به جای آن از گزینه term در بخش اصلی (پیش‌فرض) استفاده کنید.

osc52

این‌که آیا OSC-52 (دسترسی به بریده‌دان) فعال است یا غیرفعال. یکی از مقادیر disabled، copy-enabled، paste-enabled یا enabled.

قابلیت OSC-52 به برنامه ترمینال دسترسی به بریده‌دان میزبان (یعنی بریده‌دان Wayland) را می‌دهد. این مورد معمولاً یک مشکل امنیتی نیست، زیرا تمام برنامه‌ها می‌توانند مستقیماً از طریق سوکت Wayland به بریده‌دان دسترسی داشته باشند.

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

  • disabled: تمام دسترسی‌ها به بریده‌دان را غیرفعال می‌کند
  • copy-enabled: برنامه‌ها می‌توانند روی بریده‌دان بنویسند، اما نمی‌توانند از آن بخوانند.
  • paste-enabled: برنامه‌ها می‌توانند از بریده‌دان بخوانند، اما نمی‌توانند روی آن بنویسند.
  • enabled: تمام برنامه‌ها دسترسی کامل به بریده‌دان میزبان دارند. این حالت پیش‌فرض است.

پیش‌فرض: enabled

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

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;<title>;<body>\e\\
  • دستور OSC 99: \e]99;;<title>\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

lines

تعداد سطرهای تاریخچه پیمایش (scrollback). حداکثر تعداد سطرهای تخصیص‌یافته برابر با این مقدار به علاوه تعداد سطرهای قابل مشاهده خواهد بود که به نزدیک‌ترین توان ۲ به بالا گرد می‌شود. پیش‌فرض: 1000.

multiplier

مقداری برای ضرب در پیمایش موش‌واره. این یک عدد اعشاری است، یعنی مقادیر کسری مجاز هستند. پیش‌فرض: 3.0.

indicator-position

شیوه نمایش نشانگر موقعیت تاریخچه پیمایش را پیکربندی می‌کند. یکی از مقادیر none، fixed یا relative. مقدار none نشانگر را به طور کامل غیرفعال می‌کند. مقدار fixed همیشه نشانگر را نزدیک بالای پنجره رندر می‌کند، و relative نشانگر را در موقعیتی متناسب با موقعیت پیمایش جاری رندر می‌نماید. پیش‌فرض: relative.

indicator-format

قالبی که هنگام نمایش نشانگر موقعیت تاریخچه پیمایش استفاده می‌شود. یکی از مقادیر percentage (درصد)، line (سطر)، یا یک رشته ثابت سفارشی. در صورت تنظیم indicator-position=none این گزینه نادیده گرفته می‌شود. پیش‌فرض: empty string (رشته خالی).

توجه داشته باشید که می‌توانید عبارات منظم سفارشی را نیز اضافه کنید، به بخش «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:/?#@!$&*+,;=.~_%^-]+'))

مشابه حالت «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.

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

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.

hide-when-typing

بولی. در صورت فعال بودن، مکان‌نمای موش‌واره هنگام تایپ کردن پنهان می‌شود. پیش‌فرض: no.

alternate-scroll-mode

بولی. این گزینه مقدار اولیه را برای حالت پیمایش جایگزین (alternate scroll mode) کنترل می‌کند. هنگامی که این حالت فعال باشد، رویدادهای پیمایش موش‌واره هنگام نمایش صفحه جایگزین به رویدادهای کلیدهای up/down تبدیل می‌شوند.

این به شما امکان می‌دهد با موش‌واره در مثلاً صفحه‌بندها (مانند less) بدون فعال‌سازی پشتیبانی بومی موش‌واره در آن‌ها پیمایش کنید.

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

این گزینه می‌تواند توسط برنامه‌ها در زمان اجرا با استفاده از توالی‌های گریز CSI ? 1007 h (فعال) و CSI ? 1007 l (غیرفعال) تغییر کند.

پیش‌فرض: yes.

long-press-delay

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

پیش‌فرض: 400.

این دو بخش ۱۶ رنگ 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.

این بخش ظاهر 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 (قرمز).

این بخش به شما امکان می‌دهد کلیدهای میانبر پیش‌فرض را بازنویسی کنید.

قالب کلی به صورت 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.

این بخش به شما امکان می‌دهد کلیدهای میانبر پیش‌فرض مورداستفاده در حالت جستجوی تاریخچه پیمایش را بازنویسی کنید. نحو آن دقیقاً همانند 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.

این بخش به شما امکان می‌دهد کلیدهای میانبر پیش‌فرض مورداستفاده در حالت 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.

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

قالب آن به صورت 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

این بخش به شما امکان می‌دهد کلیدهای میانبر پیش‌فرض موش‌واره را بازنویسی کنید.

قالب کلی به صورت action=combo1...comboN است. یعنی هر اقدام می‌تواند یک یا چند ترکیب کلید جداشده با فاصله داشته باشد. هر ترکیب به صورت mod1+mod2+BTN_<name>[-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 تعریف شده است).

این بخش ویژه کاربران پیشرفته است و گزینه‌های پیکربندی را شرح می‌دهد که می‌توان از آن‌ها برای تنظیم دقیق رفتارهای سطح پایین 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

foot(1), footclient(1)

2026-09-03