footclient(1)
πΈ footclient(1) β the General Commands Manual page, but make it make sense π
okay bestie, so you know how foot(1) can run as a server? yeah. this is the little buddy that talks to it. it's footclient, and it's literally the icon that opens new terminals inside a foot server. let's get into it π«Ά
β¨ NAME β¨
footclient β start new terminals in a foot server. that's the whole job. main character energy, minimal responsibilities. π
π¦ SYNOPSIS π¦
footclient [OPTIONS]
footclient [OPTIONS] <command> [COMMAND OPTIONS]
so here's the vibe: all trailing (non-option) arguments get treated as a command, plus its arguments, and that's what gets executed β instead of the default shell. no cap, everything after the options is the command. β¨
π DESCRIPTION π
footclient is used together with foot(1) in --server mode. they're a duo, iykyk.
run it with no arguments and it opens a brand new terminal window (hosted in the foot server, obviously) running your default shell. the exit code you get back will be that of the terminal. meaning: footclient does not exit until the terminal has terminated. it's committed. it's in it for the long haul. π
π₯ OPTIONS π₯
-t,--term=TERMβ the value that gets set into the environment variableTERM(peep TERMINFO and ENVIRONMENT below). default:foot.-T,--title=TITLEβ initial window title. default:foot.-a,--app-id=IDβ the value to set theapp-idproperty on the Wayland window to. default:foot(normal mode), orfootclient(server mode). she contains multitudes.--class=IDβ alias for--app-id. same thing, different font. πtoplevel-tag=TAGβ the value to set thetoplevel-tagproperty on the Wayland window to. the compositor can use this value for session management, window rules, etc. default: not set.-w,--window-size-pixels=WIDTHxHEIGHTβ set the initial window width and height, in pixels. default:700x500.-W,--window-size-chars=WIDTHxHEIGHTβ set the initial window width and height, in characters. default: not set.-m,--maximizedβ start in maximized mode. if both--maximizedand--fullscreenare specified, the last one takes precedence. order matters, bestie. π«Ά-F,--fullscreenβ start in fullscreen mode. if both--maximizedand--fullscreenare specified, the last one takes precedence. yes, same rule. they're not fighting, they're just taking turns.-L,--login-shellβ start a login shell, by prepending a'-'toargv[0]. classic move.-D,--working-directory=DIRβ initial working directory for the client application. default: the CWD offootclient.-s,--server-socket=PATHβ connect toPATHinstead of$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock.-H,--holdβ remain open after the child process exits. clingy in a cute way π₯Ί-N,--no-waitβ detach the client process from the running terminal, exiting immediately. bye bestie π-o,--override=[SECTION.]KEY=VALUEβ override an option set in the configuration file. ifSECTIONis not given, it defaults tomain.-E,--client-environmentβ the child process in the new terminal instance will usefootclient's environment, instead of the server's. β οΈ but heads up: environment variables listed in the Variables set in the child process section will be overwritten by thefootserver anyway. so for example, the new terminal will useTERMfrom the configuration, notfootclient's environment. sneaky but real.-d,--log-level={info,warning,error,none}β log level, used both for log output on stderr as well as syslog. default:warning.-l,--log-colorize=[{never,always,auto}]β enables or disables colorization of log output on stderr. aesthetic logging, lowkey essential π-v,--versionβ show the version number and quit.-eβ ignored; for compatibility withxterm -e. seefoot(1)for more details. it's just there so old scripts don't cry.
π EXIT STATUS π
footclientwill exit with code220if there's a failure infootclientitself (for example, the server socket does not exist). that's a you problem, not a server problem.- if
-N,--no-waitis used,footclientexits with code0as soon as thefootserver has been instructed to open a new window. mission accomplished, dipping immediately. - if not,
footclientmay also exit with code230. this indicates a failure in thefootserver. not her fault, fr fr. - in all other cases the exit code is that of the client application (i.e. the shell).
π§ TERMINFO π§
client applications use the terminfo identifier specified by the environment variable TERM (set by foot) to determine terminal capabilities.
foot has two terminfo definitions: foot and foot-direct, with foot being the default.
the difference between the two is in the number of colors they describe: foot describes 256 colors and foot-direct describes 16.7 million colors (24-bit truecolor). slay π
β note that using thefootterminfo does not limit the number of usable colors to 256; applications can still use 24-bit RGB colors. in fact, most applications work best withfoot(including 24-bit colors)). using*-directterminfo entries has been known to crash some ncurses applications even. π so likeβ¦ be careful.
there are however applications that need a *-direct terminfo entry for 24-bit support. Emacs is one such example. (emacs stays emacs-ing π)
while using either foot or foot-direct is strongly recommended, it is possible to use e.g. xterm-256color as well. this can be useful when remoting to a system where foot's terminfo entries cannot easily be installed.
π note that terminfo entries can be installed in the user's home directory. i.e. if you do not have root access, or if there is no distro package forfoot's terminfo entries, you can installfoot's terminfo entries manually, by copyingfootandfoot-directto~/.terminfo/f/. no sudo needed, we love to see it.
π ENVIRONMENT π
π¦ Variables used by footclient
XDG_RUNTIME_DIRβ used to construct the default PATH for the--server-socketoption, when no explicit argument is given (see above).WAYLAND_DISPLAYβ used to construct the default PATH for the--server-socketoption, when no explicit argument is given (see above). yep, same line. they're a team. π«Ά
if the socket at the default PATH does not exist, footclient will fallback to the less specific path, with the following priority:
$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock$XDG_RUNTIME_DIR/foot.sock/tmp/foot.sock
π Variables set in the child process
TERMβ terminfo/termcap identifier. this is used by client applications to determine which capabilities a terminal supports. the value is set according to either the--termcommand-line option or thetermconfig option infoot.ini(5).COLORTERMβ this variable is set totruecolor, to indicate to client applications that 24-bit RGB colors are supported. π¨PWDβ current working directory (at the time of launchingfoot).SHELLβ set to the launched shell, if the shell is valid (it is listed in/etc/shells).
in addition to the variables listed above, custom environment variables may be defined in foot.ini(5).
π Variables unset in the child process
TERM_PROGRAM,TERM_PROGRAM_VERSIONβ these environment variables are set by certain other terminal emulators. we unset them, to prevent applications from misdetectingfoot. not on our watch. π
in addition to the variables listed above, custom environment variables to unset may be defined in foot.ini(5).
β Signals β
the following signals have special meaning in footclient:
SIGUSR1: switch to the dark color theme ([colors-dark]). π€SIGUSR2: switch to the light color theme ([colors-light]). π€
when sending SIGUSR1/SIGUSR2 to a footclient instance, the theme is changed in that instance only. this is different from when you send SIGUSR1/SIGUSR2 to the server process, where all instances change the theme. big difference, don't mix it up bestie. π
note: for obvious reasons, this is not supported whenfootclientis started with--no-wait. obviously. she's already gone. π
π SEE ALSO π
foot(1) β go read that one too, it's the whole other half of the duo π«Ά
and that's the page, bestie β¨ this was the footclient(1) page from the General Commands Manual, dated 2026-09-08, and it says footclient(1) in the corner because obviously it does π
periodt. πΈ
π¦ where this page comes from
- arch rolling: foot 1.28.0-2 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms