foot(1) General Commands Manual foot(1)

foot - شبیه‌ساز ترمینال Wayland

foot [OPTIONS]
foot [OPTIONS] <command> [COMMAND OPTIONS]

تمام آرگومان‌های انتهایی (غیرگزینه‌ای) به‌عنوان یک دستور و آرگومان‌های آن جهت اجرا (به‌جای شل پیش‌فرض) در نظر گرفته می‌شوند.

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

می‌توانید با افزودن یک دستور سفارشی به خط فرمان foot، شل پیش‌فرض را لغو و جایگزین کنید:

foot htop

-c,--config=PATH

مسیر فایل پیکربندی؛ برای جزئیات به foot.ini(5) مراجعه کنید.

فایل پیکربندی به‌طور خودکار به ترمینال‌های جدیدی که از طریق spawn-terminal ایجاد می‌شوند منتقل می‌شود (به foot.ini(5) مراجعه کنید).

-C,--check-config

اعتبارسنجی پیکربندی و سپس خروج با کد 0 در صورت بی‌نقص بودن، یا خروج با کد 230 در غیر این صورت (به وضعیت خروج (EXIT STATUS) مراجعه کنید).

-o,--override=[SECTION.]KEY=VALUE

لغو و بازنویسی یک گزینه تنظیم‌شده در فایل پیکربندی. اگر SECTION مشخص نشده باشد، مقدار پیش‌فرض main خواهد بود.

-f,--font=FONT

فهرستی از قلم‌های جداشده با کاما برای استفاده، در قالب fontconfig (به FONT FORMAT مراجعه کنید).

قلم اول، قلم اصلی است. قلم‌های باقی‌مانده قلم‌های جایگزین (fallback) هستند که هرگاه یک گلیف در قلم اصلی یافت نشود، استفاده خواهند شد.

قلم‌های جایگزین به ترتیبی که نوشته شده‌اند جستجو می‌شوند. اگر گلیفی در هیچ‌یک از قلم‌های جایگزین یافت نشود، فهرست جایگزین پویای fontconfig (برای قلم اصلی) جستجو می‌شود.

پیش‌فرض: monospace.

-w,--window-size-pixels=WIDTHxHEIGHT

تنظیم عرض و ارتفاع اولیه پنجره، بر حسب پیکسل. پیش‌فرض: 700x500.

-W,--window-size-chars=WIDTHxHEIGHT

تنظیم عرض و ارتفاع اولیه پنجره، بر حسب نویسه (کاراکتر). پیش‌فرض: تنظیم‌نشده.

-t,--term=TERM

مقداری که متغیر محیطی TERM روی آن تنظیم می‌شود (به TERMINFO و ENVIRONMENT مراجعه کنید). پیش‌فرض: foot.

-T,--title=TITLE

عنوان اولیه پنجره. پیش‌فرض: foot.

-a,--app-id=ID

مقداری که مشخصه app-id پنجره Wayland روی آن تنظیم می‌شود. پیش‌فرض: foot (در حالت عادی)، یا footclient (در حالت سرور).

--class=ID

نام مستعار برای --app-id.

toplevel-tag=TAG

مقداری که مشخصه toplevel-tag پنجره Wayland روی آن تنظیم می‌شود. کامپوزیتور می‌تواند از این مقدار برای مدیریت نشست، قوانین پنجره و غیره استفاده کند. پیش‌فرض: تنظیم‌نشده

-m,--maximized

شروع در حالت بیشینه‌شده (ماکسیمم). اگر هر دو گزینه --maximized و --fullscreen مشخص شوند، اولویت با آخرین مورد خواهد بود.

-F,--fullscreen

شروع در حالت تمام‌صفحه. اگر هر دو گزینه --maximized و --fullscreen مشخص شوند، اولویت با آخرین مورد خواهد بود.

-L,--login-shell

شروع یک شل ورود (login shell) با قرار دادن یک '-' در ابتدای argv[0].

--pty

نمایش یک pty موجود به‌جای ایجاد موردی تازه. این گزینه برای تعامل با کنسول‌های ماشین مجازی (VM) مفید است.

این گزینه در حال حاضر در ترکیب با -s,--server پشتیبانی نمی‌شود.

-D,--working-directory=DIR

دایرکتوری کاری اولیه برای برنامه کلاینت. پیش‌فرض: CWD of foot (دایرکتوری کاری جاری foot).

-s,--server[=PATH|FD]

اجرا در حالت سرور. در این حالت، یک نمونه منفرد از foot میزبان چندین ترمینال (پنجره) خواهد بود. برای راه‌اندازی ترمینال‌های جدید از footclient(1) استفاده کنید.

این کار باعث صرفه‌جویی در مصرف حافظه می‌شود؛ چرا که برای نمونه قلم‌ها و حافظه پنهان گلیف‌ها می‌توانند بین ترمینال‌ها به اشتراک گذاشته شوند.

همچنین این ویژگی زمان راه‌اندازی را کاهش می‌دهد، زیرا پیکربندی از پیش بارگذاری و تجزیه شده است و از همه مهم‌تر، قلم‌ها قبلاً بارگذاری شده‌اند (و حافظه پنهان گلیف‌های آن‌ها نیز احتمالاً پر شده است).

هر ترمینال ریسه‌های رندر (rendering threads) اختصاصی خود را خواهد داشت، اما تمامی ارتباطات Wayland و همچنین ورودی/خروجی به شل، در ریسه اصلی تسهیم (multiplex) می‌شوند. بنابراین، این حالت ممکن است در زمان بار کاری سنگین روی چند ترمینال، کارایی را اندکی کاهش دهد.

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

مسیر پیش‌فرض $XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock است.

اگر $XDG_RUNTIME_DIR تنظیم نشده باشد، مسیر پیش‌فرض به جای آن /tmp/foot.sock خواهد بود.

اگر $XDG_RUNTIME_DIR تنظیم شده باشد، اما $WAYLAND_DISPLAY تنظیم نشده باشد، مسیر پیش‌فرض $XDG_RUNTIME_DIR/foot.sock است.

توجه داشته باشید که اگر مقدار پیش‌فرض را تغییر دهید، باید از گزینه --server-socket در footclient(1) نیز استفاده کرده و آن را به مسیر سوکت سفارشی خود اشاره دهید.

اگر آرگومان یک عدد باشد، foot آن را به‌عنوان توصیف‌کننده فایل (file descriptor) سوکتی در نظر می‌گیرد که توسط یک دیمن نظارتی (مانند systemd یا s6) ارائه شده است، و از آن سوکت به‌عنوان سوکت خود استفاده می‌کند.

دو واحد systemd به نام‌های (foot-server.{service,socket}) برای استفاده از این قابلیت با systemd ارائه شده‌اند. برای استفاده از فعال‌سازی مبتنی بر سوکت (socket activation)، فقط واحد socket را فعال کنید.

توجه داشته باشید که اجرای foot --server به‌عنوان یک سرویس systemd از متغیرهای محیطی نمونه کاربری systemd استفاده می‌کند؛ بنابراین، باید $WAYLAND_DISPLAY را با استفاده از دستور systemctl --user import-environment WAYLAND_DISPLAY در آن وارد کنید.

-H,--hold

باز ماندن پنجره پس از خروج پروسه فرزند.

-p,--print-pid=FILE|FD

چاپ PID در این فایل یا FD، پس از راه‌اندازی موفقیت‌آمیز. فایل (یا FD) بلافاصله پس از نوشتن PID بسته می‌شود. در صورت مشخص شدن یک FILE، فایل در زمان خروج حذف (unlink) خواهد شد..PP این گزینه تنها در ترکیب با -s,--server قابل استفاده است.

-d,--log-level={info,warning,error,none}

سطح لاگ، که هم برای خروجی لاگ در stderr و هم برای syslog استفاده می‌شود. پیش‌فرض: warning.

-l,--log-colorize=[{never,always,auto}]

رنگی‌سازی خروجی لاگ در stderr را فعال یا غیرفعال می‌کند. پیش‌فرض: auto.

-S,--log-no-syslog

ثبت لاگ در syslog را غیرفعال می‌کند. لاگ‌گیری تنها در stderr انجام می‌شود. این گزینه تنها در ترکیب با -s,--server قابل استفاده است.

-v,--version

شماره نسخه را نمایش می‌دهد و خارج می‌شود.

-e

نادیده گرفته می‌شود؛ جهت سازگاری با xterm -e.

این گزینه در واکنش به چندین راه‌انداز برنامه اضافه شد که -e را با این فرض که همه ترمینال‌ها معنایی یکسان با xterm(1) برای آن پیاده‌سازی کرده‌اند، به ترمینال‌های دلخواه ارسال می‌کردند. نادیده گرفتن آن اجازه می‌دهد foot برای مثال به‌صورت foot -e man foot با همان نتایج مشابه در xterm فراخوانی شود، به‌جای اینکه خطای "invalid option" تولید کند.

کلیدهای میانبر زیر به‌صورت پیش‌فرض در دسترس هستند. آن‌ها را می‌توان در foot.ini(5) تغییر داد. همچنین کنش‌های بیشتری (به‌صورت پیش‌فرض غیرفعال) در دسترس هستند؛ foot.ini(5) را ببینید.

shift+page up/page down

پیمایش به بالا/پایین در تاریخچه

ctrl+shift+c, XF86Copy

کپی کردن متن انتخاب‌شده در کلیپ‌بورد

ctrl+shift+v, XF86Paste

چسباندن از کلیپ‌بورد

shift+insert

چسباندن از انتخاب اولیه (primary selection)

ctrl+shift+r

شروع جستجو در تاریخچه پیمایش (scrollback)

ctrl++, ctrl+=

افزایش اندازه قلم

ctrl+-

کاهش اندازه قلم

ctrl+0

بازنشانی اندازه قلم

ctrl+shift+n

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

ctrl+shift+o

فعال‌سازی حالت URL، که به شما اجازه «باز کردن» URLها را می‌دهد.

ctrl+shift+u

فعال‌سازی ورودی یونیکد (Unicode).

ctrl+shift+z

پرش به اعلان (prompt) قبلی که در حال حاضر نمایان نیست. نیازمند یکپارچه‌سازی با پوسته (shell integration) است.

ctrl+shift+x

پرش به اعلان (prompt) بعدی. نیازمند یکپارچه‌سازی با پوسته (shell integration) است.

این کلیدهای میانبر بر انتخاب جستجو تأثیر می‌گذارند:

ctrl+r

جستجو به سمت عقب برای یافتن تطابق بعدی. اگر رشته جستجو خالی باشد، از آخرین رشته جستجو شده استفاده می‌شود.

ctrl+s

جستجو به سمت جلو برای یافتن تطابق بعدی. اگر رشته جستجو خالی باشد، از آخرین رشته جستجو شده استفاده می‌شود.

shift+right

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

shift+left

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

ctrl+w, ctrl+shift+right

گسترش انتخاب فعلی (و در نتیجه معیار جستجو) تا انتهای کلمه، یا در صورت قرار داشتن روی یک نویسه جداکننده کلمه، تا کلمه بعدی.

ctrl+shift+w

مشابه ctrl+w، با این تفاوت که تنها نویسه‌های جداکننده کلمه، نویسه‌های فضای خالی (whitespace) هستند.

ctrl+shift+left

گسترش انتخاب فعلی به سمت چپ تا مرز کلمه قبلی.

shift+down

گسترش انتخاب فعلی به اندازه یک خط به سمت پایین

shift+up

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

ctrl+v, ctrl+shift+v, ctrl+y, XF86Paste

چسباندن از کلیپ‌بورد در بافر جستجو.

shift+insert

چسباندن از انتخاب اولیه (primary selection) در بافر جستجو.

escape, ctrl+g, ctrl+c

لغو جستجو

return

اتمام جستجو و کپی تطابق فعلی در انتخاب اولیه (primary selection). انتخاب ترمینال حفظ می‌شود، که به شما امکان می‌دهد با فشردن ctrl+shift+c آن را در کلیپ‌بورد کپی کنید.

این میانبرها بر کادر جستجو در حالت جستجو در تاریخچه پیمایش (scrollback-search) اثر می‌گذارند:

ctrl+b

مکان‌نما را در کادر جستجو یک نویسه به سمت چپ می‌برد.

ctrl+left, alt+b

مکان‌نما را در کادر جستجو یک کلمه به سمت چپ می‌برد..PP
ctrl+f
مکان‌نما را در جعبهٔ جست‌وجو یک نویسه به راست جابه‌جا می‌کند.

ctrl+right, alt+f

مکان‌نما را در جعبهٔ جست‌وجو یک کلمه به راست جابه‌جا می‌کند.

Home, ctrl+a

مکان‌نما را در جعبهٔ جست‌وجو به ابتدای ورودی می‌برد.

End, ctrl+e

مکان‌نما را در جعبهٔ جست‌وجو به انتهای ورودی می‌برد.

alt+backspace, ctrl+backspace

کلمهٔ قبل از مکان‌نما را پاک می‌کند.

alt+delete, ctrl+delete

کلمهٔ بعد از مکان‌نما را پاک می‌کند.

ctrl+u

از مکان‌نما تا ابتدای ورودی را پاک می‌کند

ctrl+k

از مکان‌نما تا انتهای ورودی را پاک می‌کند

این میان‌برها بر پیمایش در حالت scrollback-search تأثیر می‌گذارند:

shift+page-up

یک صفحه در تاریخچه به بالا/عقب پیمایش می‌کند.

shift+page-down

یک صفحه در تاریخچه به پایین/جلو پیمایش می‌کند.

t

تغییر وضعیت پدیداری URL در برچسب پرش.

escape, ctrl+g, ctrl+c, ctrl+d

خروج از حالت URL بدون باز کردن نشانی اینترنتی.

left, single-click

کشیدن برای انتخاب؛ هنگام رها کردن، متن برگزیده در گزینش primary کپی می‌شود. این ویژگی معمولاً در زمانی که کلاینت mouse tracking را فعال کرده باشد غیرفعال است، اما با نگه‌داشتن shift می‌توان آن را اجبار کرد.

نگه‌داشتن ctrl یک انتخاب بلوکی ایجاد می‌کند.

left, double-click

کلمهی زیر اشاره‌گر (جداشده با فاصله‌ها، نقطه، ویرگول، پرانتز و غیره) را انتخاب می‌کند. کلید ctrl را نگه دارید تا تمام محتوای زیر اشاره‌گر تا نویسهٔ فاصلهٔ بعدی انتخاب شود.

left, triple-click

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

left, quad-click

کل سطر را انتخاب می‌کند

middle

جای‌گذاری از گزینش primary

right

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

ctrl+right

گسترش انتخاب فعلی، اما با اجبار به صورت نویسه‌به‌نویسه، به‌جای وابسته بودن به حالت انتخاب اولیه.

wheel

پیمایش به بالا/پایین در تاریخچه

ctrl+wheel

افزایش/کاهش اندازهٔ قلم

tap

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

drag

تاریخچه را به بالا/پایین پیمایش می‌کند.

نگه داشتن برای مدتی پیش از کشیدن (میزان تأخیر زمانی قابل پیکربندی است) کشیدن ماوس با دکمه چپ فشرده‌شده را شبیه‌سازی می‌کند.

فونت با نحو FontConfig مشخص می‌شود. یعنی فهرستی از نام فونت و گزینه‌های فونت که با دو نقطه (:) از یکدیگر جدا شده‌اند.

مثال‌ها:

  • Dina:weight=bold:slant=italic
  • Courier New:size=12

نرم‌افزار foot از تشخیص URL پشتیبانی می‌کند. اما برخلاف بسیاری از شبیه‌سازهای ترمینال دیگر که در آن‌ها نشانی‌های وب هنگام حرکت ماوس روی آن‌ها برجسته شده و با کلیک کردن باز می‌شوند، foot از رویکردی مبتنی بر صفحه‌کلید استفاده می‌کند.

فشردن ctrl+shift+o وارد «حالت باز کردن URL» می‌شود، که در آن زیر تمام نشانی‌های وب قابل مشاهده خط کشیده شده و به یک «برچسب پرش» مرتبط می‌شوند. برچسب پرش، توالی کلید (مثلاً "AF") مورد نیاز برای فعال‌سازی نشانی را مشخص می‌کند.

البته این ترکیب کلید مانند تمام ترکیب‌های کلید دیگر در foot قابل سفارشی‌سازی است. گزینه‌های show-urls-launch و show-urls-copy را در foot.ini(5) ببینید.

گزینه show-urls-launch به‌طور پیش‌فرض نشانی وب را با xdg-open باز می‌کند. این رفتار با گزینه url-launch قابل تغییر است.

گزینه show-urls-copy جایگزینی برای show-urls-launch است که عملکرد فعال‌سازی نشانی را تغییر می‌دهد؛ به جای باز کردن نشانی، آن را در کلیپ‌بورد کپی می‌کند. این گزینه به‌طور پیش‌فرض کلیدی اختصاص‌یافته ندارد.

رنگ‌های برچسب پرش، رنگ خط زیر URL و حروف استفاده‌شده در توالی کلیدهای برچسب پرش قابل پیکربندی هستند.

به‌طور پیش‌فرض، foot نویسه‌های meta را با پیشوند ESC ارسال می‌کند. این معادل تنظیم گزینه metaSendsEscape در XTerm روی true است.

این رفتار را می‌توان به صورت برنامه‌ریزی‌شده با E[?1036l غیرفعال کرد (و دوباره با E[?1036h فعال ساخت).

هنگامی که غیرفعال باشد، foot در عوض بیت هشتم نویسه meta را تنظیم کرده و سپس آن را با کدگذاری UTF-8 ارسال می‌کند. این معادل تنظیم گزینه eightBitMeta در XTerm روی true است.

این را نیز می‌توان به‌صورت برنامه‌ریزی‌شده با rmm (بازنشانی حالت متا، E[?1034l) غیرفعال کرد، و دوباره با smm (تنظیم حالت متا، E[?1034h) فعال ساخت.

نرم‌افزار foot هنگام فشردن کلید backspace کد DEL (^?) را ارسال می‌کند. این معادل تنظیم گزینه backarrowKey در XTerm روی false و بازنشانی بودن DECBKM است.

برای ارسال کد BS (^H)، کلیدهای ctrl+backspace را فشار دهید.

توجه داشته باشید که foot ویژگی DECBKM را پیاده‌سازی نمی‌کند، و رفتار شرح داده شده در بالا غیرقابل تغییر است.

در نهایت، فشردن alt بایت ارسالی را با پیشوند ESC همراه می‌کند.

به‌طور پیش‌فرض، Num Lock حالت پیکربندی زمان اجرای صفحه‌کلید عددی را بازنویسی می‌کند؛ هنگامی که فعال باشد، صفحه‌کلید عددی همواره در حالت عددی در نظر گرفته می‌شود. این معادل تنظیم گزینه numLock در XTerm روی true است.

در این حالت، کلیدهای صفحه‌کلید عددی همواره اعداد (در صورت فعال بودن Num Lock) یا کلیدهای حرکت مکان‌نما (بالا، پایین، چپ، راست، page up، page down و غیره) را ارسال می‌کنند.

این رفتار را می‌توان به‌صورت برنامه‌ریزی‌شده با E[?1035l غیرفعال کرد (و دوباره با E[?1035h فعال ساخت).

هنگامی که غیرفعال باشد، در حالت برنامه (application)، صفحه‌کلید عددی به‌جای اعداد، دنباله‌های فرار سفارشی را ارسال می‌کند.

برنامه 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 نصب می‌شود.

برای اطلاعات بیشتر، foot.ini(5) را ببینید.

نمونه‌های جدید ترمینال foot (که به‌طور پیش‌فرض به ctrl+shift+n مقید شده‌اند)، در صورتی که پوسته در ترمینال «والد» تغییرات دایرکتوری را گزارش کند، در دایرکتوری کاری فعلی باز خواهند شد.

این کار با دنباله گریز OSC-7 انجام می‌شود. در بیشتر پوسته‌ها، اگر به‌طور درون‌ساخت از این قابلیت پشتیبانی نکنند، می‌توان با اسکریپت‌نویسی این رفتار را پیاده‌سازی کرد. برای جزئیات به ویکی مراجعه کنید: (https://codeberg.org/dnkl/foot/wiki#user-content-spawning-new-terminal-instances-in-the-current-working-directory)

برنامه Foot می‌تواند نمای جاری را برای تمرکز روی خط‌فرمان دستورهای اجرا شده قبلی جابه‌جا کند (به‌طور پیش‌فرض به ctrl+shift+z/x مقید شده است).

برای عملکرد این ویژگی، پوسته باید پیش از هر اعلان، یک دنباله OSC-133;A (\E]133;A\E\\) ارسال کند.

در zsh، یک روش برای انجام این کار افزودن یک قلاب precmd است:

precmd() {
print -Pn "\e]133;A\e\\"
}

برای جزئیات و مثال‌های مربوط به سایر پوسته‌ها به ویکی مراجعه کنید: (https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts)

کلید میانبر pipe-command-output می‌تواند خروجی آخرین دستور را به برنامه‌ای به انتخاب شما هدایت (pipe) کند (مشابه سایر کلیدهای میانبر pipe-*):

[key-bindings]
pipe-command-output=[sh -c "f=$(mktemp); cat - > $f; footclient emacsclient -nw $f; rm $f"] Control+Shift+g

با فشردن ctrl+shift+g، خروجی آخرین دستور در یک فایل موقت نوشته می‌شود، سپس یک emacsclient در نمونه‌ای جدید از footclient اجرا می‌گردد. فایل موقت پس از بسته شدن نمونه footclient حذف می‌شود.

برای عملکرد این ویژگی، پوسته باید پیش از شروع خروجی دستور، دنباله OSC-133;C (\E]133;C\E\\) و پس از پایان خروجی دستور، دنباله OSC-133;D (\E]133;D\E\\) را ارسال کند.

در fish، یک روش برای انجام این کار افزودن قلاب‌های preexec و postexec است:

function foot_cmd_start --on-event fish_preexec
echo -en "\e]133;C\e\\"
end

function foot_cmd_end --on-event fish_postexec

echo -en "\e]133;D\e\\"
end

برای جزئیات و مثال‌های مربوط به سایر پوسته‌ها به ویکی مراجعه کنید: (https://codeberg.org/dnkl/foot/wiki#user-content-piping-last-commands-output)

برنامه‌های کلاینت از شناسه terminfo تعیین‌شده توسط متغیر محیطی TERM (که توسط foot تنظیم می‌شود) برای تشخیص قابلیت‌های ترمینال استفاده می‌کنند.

برنامه Foot دو تعریف terminfo دارد: foot و foot-direct، که foot پیش‌فرض است.

تفاوت بین این دو در تعداد رنگ‌هایی است که توصیف می‌کنند؛ foot تعداد ۲۵۶ رنگ و foot-direct تعداد ۱۶٫۷ میلیون رنگ (رنگ واقعی ۲۴ بیتی یا truecolor) را توصیف می‌کند.

توجه داشته باشید که استفاده از terminfo مربوط به foot تعداد رنگ‌های قابل استفاده را به ۲۵۶ محدود نمی‌کند؛ برنامه‌ها همچنان می‌توانند از رنگ‌های RGB بیست‌وچهار بیتی استفاده کنند. در واقع، بیشتر برنامه‌ها با foot بهترین عملکرد را دارند (شامل رنگ‌های ۲۴ بیتی). حتی گزارش شده است که استفاده از مدخل‌های terminfo از نوع *-direct باعث کرش کردن برخی برنامه‌های ncurses شده است.

با این حال، برنامه‌هایی وجود دارند که برای پشتیبانی از ۲۴ بیت به یک مدخل terminfo از نوع *-direct نیاز دارند. نرم‌افزار Emacs یکی از این نمونه‌هاست.

اگرچه استفاده از foot یا foot-direct اکیداً توصیه می‌شود، اما امکان استفاده از مواردی مانند xterm-256color نیز وجود دارد. این حالت زمانی مفید است که از راه دور به سیستمی متصل می‌شوید که مدخل‌های terminfo مربوط به foot را نمی‌توان به‌سادگی روی آن نصب کرد.

توجه داشته باشید که مدخل‌های terminfo را می‌توان در دایرکتوری خانگی کاربر نصب کرد. یعنی اگر دسترسی ریشه (root) ندارید، یا بسته‌ای برای توزیع شما جهت مدخل‌های terminfo مربوط به foot وجود ندارد، می‌توانید با کپی کردن foot و foot-direct در ~/.terminfo/f/، مدخل‌های terminfo برنامه foot را به صورت دستی نصب کنید.

دنباله XTGETTCAP یک دنباله گریز است که ابتدا توسط XTerm معرفی شد، و توسط Kitty نیز پیاده‌سازی (و تا حدی گسترش) یافته است.

این ویژگی امکان پرس‌وجو از ترمینال برای تعاریف سنتی و مبتنی بر فایل terminfo را فراهم می‌کند. برای مثال، اگر تمام برنامه‌ها از این ویژگی استفاده می‌کردند، دیگر نیازی به نصب terminfo مربوط به foot روی میزبان‌های راه‌دوری که به آن‌ها SSH می‌زنید نبود.

پیاده‌سازی XTerm (از نسخه XTerm-370 به بعد) تنها از پرس‌وجوی قابلیت‌های کلید (کلیدهای صفحه‌کلید) و سه قابلیت سفارشی پشتیبانی می‌کند:

  • TN - نام ترمینال
  • Co - تعداد رنگ‌ها (نام مستعار برای قابلیت colors)
  • RGB - تعداد بیت‌ها برای هر کانال رنگ (معنای متفاوتی از قابلیت RGB در تعاریف terminfo مبتنی بر فایل دارد!)

برنامه Kitty این قابلیت را گسترش داده و از استعلام تمام قابلیت‌های عدد صحیح و رشته‌ای نیز پشتیبانی می‌کند.

برنامه Foot از این قابلیت پشتیبانی می‌کند و آن را فراتر برده تا قابلیت‌های بولی (boolean) را نیز شامل شود. این بدان معناست که کل terminfo برنامه foot از طریق XTGETTCAP قابل استعلام است.

توجه داشته باشید که هر دو برنامه Kitty و foot پاسخ به پرس‌وجوهای چندقابلیتی را در مقایسه با XTerm اندکی متفاوت مدیریت می‌کنند.

برنامه XTerm یک پاسخ DCS واحد ارسال می‌کند که جفت‌های قابلیت/مقدار در آن با ; جدا شده‌اند. این موضوع چند ایراد دارد:

  • پرچم موفقیت/شکست در ابتدای پاسخ همیشه ۱ (موفقیت) است، مگر اینکه اولین قابلیت مورد استعلام نامعتبر باشد.
  • برنامه XTerm به هیچ‌وجه به یک قابلیت نامعتبر پاسخ نمی‌دهد، مگر اینکه اولین مورد در پرس‌وجوی XTGETTCAP باشد.
  • برنامه XTerm با رسیدن به اولین قابلیت نامعتبر، ارسال پاسخ را خاتمه می‌دهد.

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

از سوی دیگر، Kitty و foot برای هر قابلیت در یک پرس‌وجوی چندگانه، یک پاسخ DCS مجزا ارسال می‌کنند. این رویکرد امکان ارسال پرچم موفقیت/شکست مناسب را برای هر قابلیت مورد پرس‌وجو فراهم می‌سازد. پاسخ‌ها همواره برای تمام قابلیت‌های استعلام‌شده ارسال می‌شوند و هیچ پرس‌وجویی نادیده گرفته نمی‌شود.

در صورت بروز خطا در خود foot، با کد 230 خارج خواهد شد.

در تمام موارد دیگر، کد خروج همان کد خروج برنامهٔ کلاینت (یعنی شل) خواهد بود.

SHELL

فرآیند فرزند پیش‌فرض برای اجرا، زمانی که هیچ آرگومان command مشخص نشده باشد و گزینهٔ shell در foot.ini(5) تنظیم نشده باشد.

HOME

برای تعیین محل فایل پیکربندی استفاده می‌شود؛ برای جزئیات به foot.ini(5) مراجعه کنید.

XDG_CONFIG_HOME

برای تعیین محل فایل پیکربندی استفاده می‌شود؛ برای جزئیات به foot.ini(5) مراجعه کنید.

XDG_CONFIG_DIRS

برای تعیین محل فایل پیکربندی استفاده می‌شود؛ برای جزئیات به foot.ini(5) مراجعه کنید.

XDG_RUNTIME_DIR

برای ساخت PATH پیش‌فرض برای گزینهٔ --server، هنگامی که هیچ آرگومان صریحی داده نشده باشد، استفاده می‌شود (به بالا مراجعه کنید).

WAYLAND_DISPLAY

برای ساخت PATH پیش‌فرض برای گزینهٔ --server، هنگامی که هیچ آرگومان صریحی داده نشده باشد، استفاده می‌شود (به بالا مراجعه کنید).

XCURSOR_THEME

نام تم Xcursor(3) برای استفاده جهت نشانگرها (معمولاً توسط کامپوزیتور Wayland تنظیم می‌شود).

XCURSOR_SIZE

اندازهٔ مورد استفاده برای نشانگرهای Xcursor(3) (معمولاً توسط کامپوزیتور Wayland تنظیم می‌شود).

TERM

شناسهٔ terminfo/termcap. این متغیر توسط برنامه‌های کلاینت استفاده می‌شود تا تعیین کنند ترمینال از چه قابلیت‌هایی پشتیبانی می‌کند. مقدار آن بر اساس گزینهٔ خط فرمان --term یا گزینهٔ پیکربندی term در foot.ini(5) تنظیم می‌شود.

COLORTERM

این متغیر روی truecolor تنظیم می‌شود تا به برنامه‌های کلاینت نشان دهد که از رنگ‌های 24-bit RGB پشتیبانی می‌شود.

PWD

دایرکتوری کاری فعلی (در زمان راه‌اندازی foot)

SHELL

روی شلِ اجرا شده تنظیم می‌شود، در صورتی که شل معتبر باشد (در /etc/shells فهرست شده باشد).

علاوه بر متغیرهای ذکر شده در بالا، متغیرهای محیطی سفارشی را نیز می‌توان در foot.ini(5) تعریف کرد.

TERM_PROGRAM TERM_PROGRAM_VERSION

این متغیرهای محیطی توسط برخی شبیه‌سازهای ترمینال دیگر تنظیم می‌شوند. ما آن‌ها را حذف (unset) می‌کنیم تا از تشخیص نادرست foot توسط برنامه‌ها جلوگیری شود.

علاوه بر متغیرهای ذکر شده در بالا، متغیرهای محیطی سفارشی برای حذف شدن را نیز می‌توان در foot.ini(5) تعریف کرد.

سیگنال‌های زیر در foot معنای ویژه‌ای دارند:

  • SIGUSR1: تغییر به تم رنگی تیره ([colors-dark]).
  • SIGUSR2: تغییر به تم رنگی روشن ([colors-light]).

نکته: شما می‌توانید SIGUSR1/SIGUSR2 را به فرآیند foot --server نیز ارسال کنید، که در این صورت تم تمام نمونه‌های کلاینت تغییر خواهد کرد. علاوه بر این، تمامی نمونه‌های کلاینت آینده نیز از تم انتخاب‌شده استفاده خواهند کرد.

همچنین می‌توانید SIGUSR1/SIGUSR2 را به یک نمونهٔ footclient ارسال کنید؛ برای جزئیات به footclient(1) مراجعه کنید.

لطفاً باگ‌ها را به https://codeberg.org/dnkl/foot/issues گزارش دهید.

پیش از باز کردن یک گزارش جدید، لطفاً گزارش‌های موجود (چه باز و چه بسته) را جستجو کنید. این احتمال وجود دارد که شخص دیگری پیش‌تر همان مشکل را گزارش کرده باشد.

گزارش باید شامل موارد زیر باشد:

  • نسخه Foot (foot --version).
  • خروجی لاگ از foot (دستور foot -d info را از یک ترمینال دیگر اجرا کنید).
  • کدام کامپوزیتور Wayland (و چه نسخه‌ای) را اجرا می‌کنید.
  • در صورت گزارش فروپاشی (crash)، لطفاً سعی کنید یک backtrace کامل (bt full) همراه با نمادها ارائه دهید.
  • مراحل بازتولید مشکل. هرچه جزئیات بیشتر باشد بهتر است.

کانال #foot در irc.libera.chat

foot.ini(5), footclient(1)

2026-09-03