2019-08-11 20:54:28 +02:00
|
|
|
foot(1)
|
|
|
|
|
|
|
|
|
|
# NAME
|
|
|
|
|
foot - Wayland terminal emulator
|
|
|
|
|
|
|
|
|
|
# SYNOPSIS
|
2019-08-15 19:17:51 +02:00
|
|
|
*foot* [_OPTIONS_]++
|
2020-05-08 18:43:03 +02:00
|
|
|
*foot* [_OPTIONS_] <_command_> [_COMMAND OPTIONS_]
|
2019-08-15 19:17:51 +02:00
|
|
|
|
2020-05-08 18:43:03 +02:00
|
|
|
All trailing (non-option) arguments are treated as a command, and its
|
|
|
|
|
arguments, to execute (instead of the default shell).
|
2019-08-11 20:54:28 +02:00
|
|
|
|
2020-08-13 18:34:24 +02:00
|
|
|
# DESCRIPTION
|
|
|
|
|
|
|
|
|
|
*foot* is a Wayland terminal emulator. Running it without arguments
|
|
|
|
|
will start a new terminal window with your default shell.
|
|
|
|
|
|
|
|
|
|
You can override the default shell by appending a custom command to
|
|
|
|
|
the foot command line
|
|
|
|
|
|
2020-10-08 19:54:28 +02:00
|
|
|
*foot sh -c "echo hello world && sleep 5"*
|
2020-08-13 18:34:24 +02:00
|
|
|
|
2019-08-11 20:54:28 +02:00
|
|
|
# OPTIONS
|
|
|
|
|
|
2019-12-17 19:09:09 +01:00
|
|
|
*-c*,*--config*=_PATH_
|
2020-08-27 20:02:30 +02:00
|
|
|
Path to configuration file. Default:
|
|
|
|
|
*$XDG_CONFIG_HOME/foot/foot.ini*.
|
2019-12-17 19:09:09 +01:00
|
|
|
|
2020-07-29 17:48:22 +02:00
|
|
|
*--check-config*
|
|
|
|
|
Verify configuration and then exit with 0 if ok, otherwise exit
|
|
|
|
|
with 1.
|
|
|
|
|
|
2019-08-11 20:54:28 +02:00
|
|
|
*-f*,*--font*=_FONT_
|
2019-09-21 20:01:55 +02:00
|
|
|
Comma separated list of fonts to use, in fontconfig format (see
|
|
|
|
|
*FONT FORMAT*).
|
|
|
|
|
|
|
|
|
|
The first font is the primary font. The remaining fonts are
|
|
|
|
|
fallback fonts that will be used whenever a glyph cannot be found
|
|
|
|
|
in the primary font.
|
|
|
|
|
|
|
|
|
|
The fallback fonts are searched in the order they appear. If a
|
|
|
|
|
glyph cannot be found in any of the fallback fonts, the dynamic
|
|
|
|
|
fallback list from fontconfig (for the primary font) is
|
|
|
|
|
searched.
|
|
|
|
|
|
|
|
|
|
Default: _monospace_.
|
2019-08-11 20:54:28 +02:00
|
|
|
|
2020-09-08 19:17:29 +02:00
|
|
|
*-w*,*--window-size-pixels*=_WIDTHxHEIGHT_
|
|
|
|
|
Set initial window width and height, in pixels. Default: _700x500_.
|
|
|
|
|
|
|
|
|
|
*-W*,*--window-size-chars*=_WIDTHxHEIGHT_
|
|
|
|
|
Set initial window width and height, in characters. Default: _not set_.
|
|
|
|
|
|
2019-08-23 17:26:41 +02:00
|
|
|
*-g*,*--geometry*=_WIDTHxHEIGHT_
|
2020-09-08 19:17:29 +02:00
|
|
|
Deprecated. Alias for *-w*,*--window-size-pixels*.
|
2019-08-23 17:26:41 +02:00
|
|
|
|
2019-08-11 20:54:28 +02:00
|
|
|
*-t*,*--term*=_TERM_
|
2020-04-01 18:40:51 +02:00
|
|
|
Value to set the environment variable *TERM* to. Default: _foot_.
|
|
|
|
|
|
2020-04-01 20:01:31 +02:00
|
|
|
*--title*=_TITLE_
|
2020-04-01 19:59:47 +02:00
|
|
|
Initial window title. Default: _foot_.
|
|
|
|
|
|
2020-04-01 18:40:51 +02:00
|
|
|
*-a*,*--app-id*=_ID_
|
|
|
|
|
Value to set the *app-id* property on the Wayland window
|
|
|
|
|
to. Default: _foot_.
|
2019-08-11 20:54:28 +02:00
|
|
|
|
2020-03-26 19:47:00 +01:00
|
|
|
*--maximized*
|
|
|
|
|
Start in maximized mode. If both *--maximized* and *--fullscreen*
|
|
|
|
|
are specified, the _last_ one takes precedence.
|
|
|
|
|
|
|
|
|
|
*--fullscreen*
|
|
|
|
|
Start in fullscreen mode. If both *--maximized* and *--fullscreen*
|
|
|
|
|
are specified, the _last_ one takes precedence.
|
|
|
|
|
|
2020-02-20 18:36:52 +01:00
|
|
|
*--login-shell*
|
|
|
|
|
Start a login shell, by prepending a '-' to argv[0].
|
|
|
|
|
|
2019-12-14 13:01:37 +01:00
|
|
|
*-s*,*--server*[=_PATH_]
|
2019-11-03 13:46:47 +01:00
|
|
|
Run as a server. In this mode, a single foot instance hosts
|
2019-11-19 14:02:17 +01:00
|
|
|
multiple terminals (windows). Use *footclient*(1) to launch new
|
2019-11-03 13:46:47 +01:00
|
|
|
terminals.
|
|
|
|
|
|
|
|
|
|
This saves some memory since for example fonts and glyph caches
|
|
|
|
|
can be shared between the terminals.
|
|
|
|
|
|
|
|
|
|
It also saves upstart time since the config has already been
|
|
|
|
|
loaded and parsed, and most importantly, fonts have already been
|
|
|
|
|
loaded (and their glyph caches are likely to already have been
|
|
|
|
|
populated).
|
2019-12-14 13:01:37 +01:00
|
|
|
|
2019-11-03 13:46:47 +01:00
|
|
|
Each terminal will have its own rendering threads, but all Wayland
|
|
|
|
|
communication, as well as input/output to the shell, is
|
|
|
|
|
multiplexed in the main thread. Thus, this mode might result in
|
|
|
|
|
slightly worse performance when multiple terminals are under heavy
|
|
|
|
|
load.
|
|
|
|
|
|
|
|
|
|
Also be aware that should one terminal crash, it will take all the
|
|
|
|
|
others with it.
|
2019-12-14 13:01:37 +01:00
|
|
|
|
2020-08-02 12:28:53 +02:00
|
|
|
The default path is
|
2020-08-02 13:10:31 +02:00
|
|
|
*$XDG\_RUNTIME\_DIR/foot-$WAYLAND\_DISPLAY.sock*.
|
2020-08-02 12:28:53 +02:00
|
|
|
|
2020-08-02 13:10:31 +02:00
|
|
|
If *$XDG\_RUNTIME\_DIR* is not set, the default path is instead
|
2020-08-02 12:28:53 +02:00
|
|
|
*/tmp/foot.sock*.
|
|
|
|
|
|
2020-08-02 13:10:31 +02:00
|
|
|
If *$XDG\_RUNTIME\_DIR* is set, but *$WAYLAND\_DISPLAY* is not,
|
|
|
|
|
the default path is *$XDG\_RUNTIME\_DIR/foot.sock*.
|
2020-08-02 12:28:53 +02:00
|
|
|
|
|
|
|
|
Note that if you change the default, you will also need to use the
|
|
|
|
|
*--server-socket* option in *footclient*(1) and point it to your
|
|
|
|
|
custom socket path.
|
2019-11-03 13:46:47 +01:00
|
|
|
|
2020-02-03 19:58:32 +01:00
|
|
|
*--hold*
|
|
|
|
|
Remain open after child process exits.
|
|
|
|
|
|
2020-02-05 19:53:50 +01:00
|
|
|
*-p*,*--print-pid*=_FILE_|_FD_
|
|
|
|
|
Print PID to this file, or FD, when successfully started. The file
|
|
|
|
|
(or FD) is closed immediately after writing the PID. When a _FILE_
|
2020-03-17 12:52:00 +01:00
|
|
|
as been specified, the file is unlinked at exit.
|
2020-02-05 19:53:50 +01:00
|
|
|
|
|
|
|
|
This option can only be used in combination with *-s*,*--server*.
|
|
|
|
|
|
2020-02-05 19:54:16 +01:00
|
|
|
*-l*,*--log-colorize*=[{*never*,*always*,*auto*}]
|
2020-03-17 12:54:33 +01:00
|
|
|
Enables or disables colorization of log output on stderr. Default:
|
|
|
|
|
_auto_.
|
2020-02-05 19:54:16 +01:00
|
|
|
|
|
|
|
|
*-S*,*--log-no-syslog*
|
|
|
|
|
Disables syslog logging. Logging is only done on stderr. This
|
|
|
|
|
option can only be used in combination with *-s*,*--server*.
|
|
|
|
|
|
2019-08-11 20:54:28 +02:00
|
|
|
*-v*,*--version*
|
2019-12-17 19:09:09 +01:00
|
|
|
Show the version number and quit.
|
2019-08-11 20:54:28 +02:00
|
|
|
|
2019-08-30 20:26:29 +02:00
|
|
|
# KEYBOARD SHORTCUTS
|
|
|
|
|
|
2020-03-09 20:32:15 +01:00
|
|
|
The following keyboard shortcuts are available.
|
2019-08-30 20:26:29 +02:00
|
|
|
|
2020-01-04 14:57:59 +01:00
|
|
|
## NORMAL MODE
|
|
|
|
|
|
2020-08-12 18:48:27 +02:00
|
|
|
Note that these are just the defaults; they can be changed in
|
2020-08-27 20:02:30 +02:00
|
|
|
*foot.ini*, see *foot.ini*(5).
|
2020-03-09 20:32:15 +01:00
|
|
|
|
2019-08-30 20:26:29 +02:00
|
|
|
*shift*+*page up*/*page down*
|
|
|
|
|
Scroll up/down in history
|
|
|
|
|
|
|
|
|
|
*ctrl*+*shift*+*c*
|
|
|
|
|
Copy selected text to the _clipboard_
|
|
|
|
|
|
|
|
|
|
*ctrl*+*shift*+*v*
|
|
|
|
|
Paste from _clipboard_
|
|
|
|
|
|
2020-10-10 23:36:41 +02:00
|
|
|
*shift*+*insert*
|
|
|
|
|
Paste from the _primary selection_.
|
|
|
|
|
|
2019-08-30 20:26:29 +02:00
|
|
|
*ctrl*+*shift*+*r*
|
|
|
|
|
Start a scrollback search
|
|
|
|
|
|
2020-02-10 21:57:55 +01:00
|
|
|
*ctrl*+*+*, *ctrl*+*=*
|
2020-02-09 11:36:49 +01:00
|
|
|
Increase font size by 1pt
|
|
|
|
|
|
|
|
|
|
*ctrl*+*-*
|
|
|
|
|
Decrease font size by 1pt
|
|
|
|
|
|
2020-02-10 21:57:55 +01:00
|
|
|
*ctrl*+*0*
|
2020-02-09 11:36:49 +01:00
|
|
|
Reset font size
|
|
|
|
|
|
2020-03-17 21:52:44 +01:00
|
|
|
*ctrl*+*shift*+*n*
|
|
|
|
|
Spawn a new terminal. If the shell has been configured to emit the
|
|
|
|
|
_OSC 7_ escape sequence, the new terminal will start in the
|
|
|
|
|
current working directory.
|
|
|
|
|
|
2020-01-04 14:57:59 +01:00
|
|
|
## SCROLLBACK SEARCH
|
2019-08-30 20:26:29 +02:00
|
|
|
|
|
|
|
|
*ctrl*+*r*
|
|
|
|
|
Search _backward_ for the next match
|
|
|
|
|
|
|
|
|
|
*ctrl*+*s*
|
|
|
|
|
Search _forward_ for the next match
|
|
|
|
|
|
2020-01-04 14:58:29 +01:00
|
|
|
*ctrl*+*w*
|
|
|
|
|
Extend current selection (and thus the search criteria) to the end
|
|
|
|
|
of the word, or the next word if currently at a word separating
|
|
|
|
|
character.
|
|
|
|
|
|
|
|
|
|
*ctrl*+*shift*+*w*
|
|
|
|
|
Same as *ctrl*+*w*, except that the only word separating
|
|
|
|
|
characters are whitespace characters.
|
|
|
|
|
|
2020-11-01 12:39:57 +01:00
|
|
|
*ctrl*+*v*, *ctrl*+*y*
|
|
|
|
|
Paste from clipboard into the searh buffer.
|
|
|
|
|
|
|
|
|
|
*shift*+*insert*
|
|
|
|
|
Paste from primary selection into the search buffer.
|
|
|
|
|
|
2019-08-30 20:26:29 +02:00
|
|
|
*escape*, *ctrl*+*g*
|
|
|
|
|
Cancel the search
|
|
|
|
|
|
|
|
|
|
*return*
|
|
|
|
|
Finish the search and copy the current match to the primary
|
2019-11-29 22:09:08 +01:00
|
|
|
selection. The terminal selection is kept, allowing you to press
|
|
|
|
|
*ctrl*+*shift*+*c* to copy it to the clipboard.
|
2019-08-30 20:26:29 +02:00
|
|
|
|
|
|
|
|
# MOUSE SHORTCUTS
|
|
|
|
|
|
|
|
|
|
*left*, single-click
|
|
|
|
|
Drag to select; when released, the selected text is copied to the
|
2020-01-04 23:56:17 +01:00
|
|
|
_primary_ selection. This feature is normally *disabled* whenever
|
|
|
|
|
the client has enabled _mouse tracking_, but can be forced by
|
|
|
|
|
holding *shift*.
|
2020-01-04 14:58:43 +01:00
|
|
|
|
|
|
|
|
Holding *ctrl* will create a block selection.
|
2019-08-30 20:26:29 +02:00
|
|
|
|
|
|
|
|
*left*, double-click
|
|
|
|
|
Selects the _word_ (separated by spaces, period, comma,
|
|
|
|
|
parenthesis etc) under the pointer. Hold *ctrl* to select
|
|
|
|
|
everything under the pointer up to, and until, the next space
|
|
|
|
|
characters.
|
|
|
|
|
|
|
|
|
|
*left*, triple-click
|
|
|
|
|
Selects the entire row
|
|
|
|
|
|
|
|
|
|
*middle*
|
|
|
|
|
Paste from the _primary_ selection
|
|
|
|
|
|
2020-04-04 12:09:56 +02:00
|
|
|
*right*
|
2020-07-31 06:07:42 +02:00
|
|
|
Extend current selection. Clicking immediately extends the
|
|
|
|
|
selection, while hold-and-drag allows you to interactively resize
|
|
|
|
|
the selection.
|
2020-04-04 12:09:56 +02:00
|
|
|
|
2019-11-03 16:23:18 +01:00
|
|
|
*wheel*
|
|
|
|
|
Scroll up/down in history
|
2019-08-11 20:54:28 +02:00
|
|
|
|
|
|
|
|
# FONT FORMAT
|
|
|
|
|
|
|
|
|
|
The font is specified in FontConfig syntax. That is, a colon-separated
|
|
|
|
|
list of font name and font options.
|
|
|
|
|
|
|
|
|
|
_Examples_:
|
|
|
|
|
- Dina:weight=bold:slant=italic
|
2019-09-21 20:43:29 +02:00
|
|
|
- Courier New:size=12
|
2019-08-12 20:00:09 +02:00
|
|
|
|
2020-01-20 21:28:15 +01:00
|
|
|
# ALT/META CHARACTERS
|
|
|
|
|
|
|
|
|
|
By default, foot prefixes meta characters with *ESC*. This corresponds
|
|
|
|
|
to XTerm's *metaSendsEscape* option set to *true*.
|
|
|
|
|
|
2020-07-25 09:39:03 +02:00
|
|
|
This can be disabled programmatically with *\E[?1036l* (and enabled
|
2020-01-20 21:28:15 +01:00
|
|
|
again with *\E[?1036h*).
|
|
|
|
|
|
|
|
|
|
When disabled, foot will instead set the 8:th bit of meta character
|
|
|
|
|
and then UTF-8 encode it. This corresponds to XTerm's *eightBitMeta*
|
|
|
|
|
option set to *true*.
|
|
|
|
|
|
2020-07-25 09:39:03 +02:00
|
|
|
This can also be disabled programmatically with *rmm* (Reset Meta Mode,
|
2020-01-20 21:28:15 +01:00
|
|
|
*\E[?1034l*), and enabled again with *smm* (Set Meta Mode,
|
|
|
|
|
*\E[?1034h*).
|
|
|
|
|
|
2020-02-21 19:11:03 +01:00
|
|
|
# BACKSPACE
|
|
|
|
|
|
|
|
|
|
Foot transmits DEL (*^?*) on backspace. This corresponds to XTerm's
|
|
|
|
|
*backarrowKey* option set to *false*, and to DECBKM being _reset_.
|
|
|
|
|
|
|
|
|
|
To instead transmit BS (*^H*), press *ctrl*+*backspace*.
|
|
|
|
|
|
|
|
|
|
Note that foot does *not* implement DECBKM, and that the behavior
|
|
|
|
|
described above *cannot* be changed.
|
|
|
|
|
|
|
|
|
|
Finally, pressing *alt* will prefix the transmitted byte with ESC.
|
2019-08-12 20:00:09 +02:00
|
|
|
|
2020-11-11 18:37:28 +01:00
|
|
|
# KEYPAD
|
|
|
|
|
|
|
|
|
|
By default, *Num Lock* overrides the run-time configuration keypad
|
|
|
|
|
mode; when active, the keypad is always considered to be in
|
|
|
|
|
_numerical_ mode. This corresponds to XTerm's *numLock* option set to
|
|
|
|
|
*true*.
|
|
|
|
|
|
|
|
|
|
In this mode, the keypad keys always sends either numbers (Num Lock is
|
|
|
|
|
active) or cursor movement keys (up, down, left, right, page up, page
|
|
|
|
|
down etc).
|
|
|
|
|
|
|
|
|
|
This can be disabled programmatically with *\E[?1035l* (and enabled
|
|
|
|
|
again with *\E[?1035h*).
|
|
|
|
|
|
|
|
|
|
When disabled, the keypad sends custom escape sequences instead of
|
|
|
|
|
numbers, when in _application_ mode.
|
|
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
# CONFIGURATION
|
|
|
|
|
|
2020-08-27 20:02:30 +02:00
|
|
|
See *foot.ini*(5)
|
2019-08-12 20:00:09 +02:00
|
|
|
|
2020-04-04 20:36:46 +02:00
|
|
|
# BUGS
|
|
|
|
|
|
|
|
|
|
Please report bugs to https://codeberg.org/dnkl/foot/issues
|
|
|
|
|
|
2020-04-04 20:54:28 +02:00
|
|
|
The report should contain the following:
|
|
|
|
|
|
|
|
|
|
- Which Wayland compositor (and version) you are running
|
|
|
|
|
- Foot version (*foot --version*)
|
|
|
|
|
- Log output from foot (start foot from another terminal)
|
|
|
|
|
- If reporting a crash, please try to provide a *bt full* backtrace
|
|
|
|
|
with symbols
|
|
|
|
|
- Steps to reproduce. The more details the better
|
|
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
# SEE ALSO
|
|
|
|
|
|
2020-08-27 20:02:30 +02:00
|
|
|
*foot.ini*(5), *footclient*(1)
|