| foot(1) | General Commands Manual | foot(1) |
نام (NAME)
foot - شبیهساز ترمینال Wayland
خلاصه دستور (SYNOPSIS)
foot [OPTIONS]
foot [OPTIONS] <command> [COMMAND
OPTIONS]
تمام آرگومانهای انتهایی (غیرگزینهای) بهعنوان یک دستور و آرگومانهای آن جهت اجرا (بهجای شل پیشفرض) در نظر گرفته میشوند.
توضیحات (DESCRIPTION)
foot یک شبیهساز ترمینال Wayland است. اجرای آن بدون آرگومان، یک پنجره ترمینال جدید را با شل پیشفرض شما اجرا خواهد کرد.
میتوانید با افزودن یک دستور سفارشی به خط فرمان foot، شل پیشفرض را لغو و جایگزین کنید:
گزینهها (OPTIONS)
-c,--config=PATH
فایل پیکربندی بهطور خودکار به ترمینالهای جدیدی که از طریق spawn-terminal ایجاد میشوند منتقل میشود (به foot.ini(5) مراجعه کنید).
-C,--check-config
-o,--override=[SECTION.]KEY=VALUE
-f,--font=FONT
قلم اول، قلم اصلی است. قلمهای باقیمانده قلمهای جایگزین (fallback) هستند که هرگاه یک گلیف در قلم اصلی یافت نشود، استفاده خواهند شد.
قلمهای جایگزین به ترتیبی که نوشته شدهاند جستجو میشوند. اگر گلیفی در هیچیک از قلمهای جایگزین یافت نشود، فهرست جایگزین پویای fontconfig (برای قلم اصلی) جستجو میشود.
پیشفرض: monospace.
-w,--window-size-pixels=WIDTHxHEIGHT
-W,--window-size-chars=WIDTHxHEIGHT
-t,--term=TERM
-T,--title=TITLE
-a,--app-id=ID
--class=ID
toplevel-tag=TAG
-m,--maximized
-F,--fullscreen
-L,--login-shell
--pty
این گزینه در حال حاضر در ترکیب با -s,--server پشتیبانی نمیشود.
-D,--working-directory=DIR
-s,--server[=PATH|FD]
این کار باعث صرفهجویی در مصرف حافظه میشود؛ چرا که برای نمونه قلمها و حافظه پنهان گلیفها میتوانند بین ترمینالها به اشتراک گذاشته شوند.
همچنین این ویژگی زمان راهاندازی را کاهش میدهد، زیرا پیکربندی از پیش بارگذاری و تجزیه شده است و از همه مهمتر، قلمها قبلاً بارگذاری شدهاند (و حافظه پنهان گلیفهای آنها نیز احتمالاً پر شده است).
هر ترمینال ریسههای رندر (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
-d,--log-level={info,warning,error,none}
-l,--log-colorize=[{never,always,auto}]
-S,--log-no-syslog
-v,--version
-e
این گزینه در واکنش به چندین راهانداز برنامه اضافه شد که -e را با این فرض که همه ترمینالها معنایی یکسان با xterm(1) برای آن پیادهسازی کردهاند، به ترمینالهای دلخواه ارسال میکردند. نادیده گرفتن آن اجازه میدهد foot برای مثال بهصورت foot -e man foot با همان نتایج مشابه در xterm فراخوانی شود، بهجای اینکه خطای "invalid option" تولید کند.
کلیدهای میانبر (KEYBOARD SHORTCUTS)
کلیدهای میانبر زیر بهصورت پیشفرض در دسترس هستند. آنها را میتوان در foot.ini(5) تغییر داد. همچنین کنشهای بیشتری (بهصورت پیشفرض غیرفعال) در دسترس هستند؛ foot.ini(5) را ببینید.
حالت عادی (NORMAL MODE)
shift+page up/page down
ctrl+shift+c, XF86Copy
ctrl+shift+v, XF86Paste
shift+insert
ctrl+shift+r
ctrl++, ctrl+=
ctrl+-
ctrl+0
ctrl+shift+n
ctrl+shift+o
ctrl+shift+u
ctrl+shift+z
ctrl+shift+x
جستجو در تاریخچه پیمایش (SCROLLBACK SEARCH)
این کلیدهای میانبر بر انتخاب جستجو تأثیر میگذارند:
ctrl+r
ctrl+s
shift+right
shift+left
ctrl+w, ctrl+shift+right
ctrl+shift+w
ctrl+shift+left
shift+down
shift+up
ctrl+v, ctrl+shift+v, ctrl+y, XF86Paste
shift+insert
escape, ctrl+g, ctrl+c
return
این میانبرها بر کادر جستجو در حالت جستجو در تاریخچه پیمایش (scrollback-search) اثر میگذارند:
ctrl+b
ctrl+left, alt+b
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
حالت نشانی اینترنتی (URL MODE)
t
escape, ctrl+g, ctrl+c, ctrl+d
میانبرهای ماوس (MOUSE SHORTCUTS)
left, single-click
نگهداشتن ctrl یک انتخاب بلوکی ایجاد میکند.
left, double-click
left, triple-click
left, quad-click
middle
right
ctrl+right
wheel
ctrl+wheel
tap
drag
نگه داشتن برای مدتی پیش از کشیدن (میزان تأخیر زمانی قابل پیکربندی است) کشیدن ماوس با دکمه چپ فشردهشده را شبیهسازی میکند.
قالب فونت (FONT FORMAT)
فونت با نحو FontConfig مشخص میشود. یعنی فهرستی از نام فونت و گزینههای فونت که با دو نقطه (:) از یکدیگر جدا شدهاند.
مثالها:
- Dina:weight=bold:slant=italic
- Courier New:size=12
نشانیهای وب (URLs)
نرمافزار 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 و حروف استفادهشده در توالی کلیدهای برچسب پرش قابل پیکربندی هستند.
نویسههای ALT/META (ALT/META CHARACTERS)
بهطور پیشفرض، foot نویسههای meta را با پیشوند ESC ارسال میکند. این معادل تنظیم گزینه metaSendsEscape در XTerm روی true است.
این رفتار را میتوان به صورت برنامهریزیشده با E[?1036l غیرفعال کرد (و دوباره با E[?1036h فعال ساخت).
هنگامی که غیرفعال باشد، foot در عوض بیت هشتم نویسه meta را تنظیم کرده و سپس آن را با کدگذاری UTF-8 ارسال میکند. این معادل تنظیم گزینه eightBitMeta در XTerm روی true است.
این را نیز میتوان بهصورت برنامهریزیشده با rmm (بازنشانی حالت متا، E[?1034l) غیرفعال کرد، و دوباره با smm (تنظیم حالت متا، E[?1034h) فعال ساخت.
کلید BACKSPACE (BACKSPACE)
نرمافزار foot هنگام فشردن کلید backspace کد DEL (^?) را ارسال میکند. این معادل تنظیم گزینه backarrowKey در XTerm روی false و بازنشانی بودن DECBKM است.
برای ارسال کد BS (^H)، کلیدهای ctrl+backspace را فشار دهید.
توجه داشته باشید که foot ویژگی DECBKM را پیادهسازی نمیکند، و رفتار شرح داده شده در بالا غیرقابل تغییر است.
در نهایت، فشردن alt بایت ارسالی را با پیشوند ESC همراه میکند.
صفحهکلید عددی (KEYPAD)
بهطور پیشفرض، Num Lock حالت پیکربندی زمان اجرای صفحهکلید عددی را بازنویسی میکند؛ هنگامی که فعال باشد، صفحهکلید عددی همواره در حالت عددی در نظر گرفته میشود. این معادل تنظیم گزینه numLock در XTerm روی true است.
در این حالت، کلیدهای صفحهکلید عددی همواره اعداد (در صورت فعال بودن Num Lock) یا کلیدهای حرکت مکاننما (بالا، پایین، چپ، راست، page up، page down و غیره) را ارسال میکنند.
این رفتار را میتوان بهصورت برنامهریزیشده با E[?1035l غیرفعال کرد (و دوباره با E[?1035h فعال ساخت).
هنگامی که غیرفعال باشد، در حالت برنامه (application)، صفحهکلید عددی بهجای اعداد، دنبالههای فرار سفارشی را ارسال میکند.
پیکربندی (CONFIGURATION)
برنامه 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 است:
برای جزئیات و مثالهای مربوط به سایر پوستهها به ویکی مراجعه کنید: (https://codeberg.org/dnkl/foot/wiki#user-content-jumping-between-prompts)
هدایت خروجی آخرین دستور
کلید میانبر pipe-command-output میتواند خروجی آخرین دستور را به برنامهای به انتخاب شما هدایت (pipe) کند (مشابه سایر کلیدهای میانبر pipe-*):
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_end --on-event fish_postexec
برای جزئیات و مثالهای مربوط به سایر پوستهها به ویکی مراجعه کنید: (https://codeberg.org/dnkl/foot/wiki#user-content-piping-last-commands-output)
ترمینفو (TERMINFO)
برنامههای کلاینت از شناسه 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
دنباله 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 خارج خواهد شد.
در تمام موارد دیگر، کد خروج همان کد خروج برنامهٔ کلاینت (یعنی شل) خواهد بود.
محیط (ENVIRONMENT)
متغیرهای مورد استفادهٔ foot
SHELL
HOME
XDG_CONFIG_HOME
XDG_CONFIG_DIRS
XDG_RUNTIME_DIR
WAYLAND_DISPLAY
XCURSOR_THEME
XCURSOR_SIZE
متغیرهای تنظیمشده در فرآیند فرزند
TERM
COLORTERM
PWD
SHELL
علاوه بر متغیرهای ذکر شده در بالا، متغیرهای محیطی سفارشی را نیز میتوان در foot.ini(5) تعریف کرد.
متغیرهای *حذفشده* در فرآیند فرزند
TERM_PROGRAM TERM_PROGRAM_VERSION
علاوه بر متغیرهای ذکر شده در بالا، متغیرهای محیطی سفارشی برای حذف شدن را نیز میتوان در foot.ini(5) تعریف کرد.
سیگنالها (SIGNALS)
سیگنالهای زیر در 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) همراه با نمادها ارائه دهید.
- مراحل بازتولید مشکل. هرچه جزئیات بیشتر باشد بهتر است.
IRC
کانال #foot در irc.libera.chat
همچنین ببینید (SEE ALSO)
| 2026-09-03 |