2020-08-27 20:02:30 +02:00
|
|
|
foot.ini(5)
|
2019-08-12 20:00:09 +02:00
|
|
|
|
|
|
|
|
# NAME
|
2020-11-26 18:22:45 +01:00
|
|
|
foot.ini - configuration file for *foot*(1)
|
2019-08-12 20:00:09 +02:00
|
|
|
|
|
|
|
|
# DESCRIPTION
|
|
|
|
|
|
|
|
|
|
*foot* uses the standard _unix configuration format_, with section based
|
|
|
|
|
key/value pairs. The default section is unnamed (i.e. not prefixed
|
|
|
|
|
with a _[section]_).
|
|
|
|
|
|
|
|
|
|
foot will search for a configuration file in the following locations,
|
|
|
|
|
in this order:
|
|
|
|
|
|
2020-08-27 21:09:54 +02:00
|
|
|
- *XDG_CONFIG_HOME/foot/foot.ini*
|
|
|
|
|
- *~/.config/foot/foot.ini*
|
2020-10-08 19:53:30 +02:00
|
|
|
- *XDG_CONFIG_DIRS/foot/foot.ini*
|
2019-08-12 20:00:09 +02:00
|
|
|
|
|
|
|
|
# SECTION: default
|
|
|
|
|
|
2021-01-07 11:48:15 +01:00
|
|
|
*shell*
|
|
|
|
|
Executable to launch. Typically a shell. Default: _$SHELL_ if set,
|
|
|
|
|
otherwise the user's default shell (as specified in
|
|
|
|
|
_/etc/passwd_). You can also pass arguments. For example
|
|
|
|
|
*/bin/bash --norc*.
|
|
|
|
|
|
|
|
|
|
*login-shell*
|
|
|
|
|
Boolean. If enabled, the shell will be launched as a login shell,
|
|
|
|
|
by prepending a '-' to argv[0]. Default: _no_.
|
|
|
|
|
|
|
|
|
|
*term*
|
2021-01-19 14:22:41 +00:00
|
|
|
Value to set the environment variable *TERM* to. Default: _foot_
|
2021-02-09 19:42:55 +01:00
|
|
|
or _xterm-256color_ if built with _-Dterminfo=disabled_
|
2021-01-07 11:48:15 +01:00
|
|
|
|
2020-10-20 21:04:47 +02:00
|
|
|
*font*, *font-bold*, *font-italic*, *font-bold-italic*
|
2020-12-31 12:57:37 +01:00
|
|
|
Comma separated list of fonts to use, in fontconfig format. That
|
|
|
|
|
is, a font name followed by a list of colon-separated
|
|
|
|
|
options. Most noteworthy is *:size=n*, which is used to set the
|
|
|
|
|
font size.
|
|
|
|
|
|
|
|
|
|
Examples:
|
|
|
|
|
- Dina:weight=bold:slant=italic
|
|
|
|
|
- Courier New:size=12
|
|
|
|
|
- Fantasque Sans Mono:fontfeatures=ss01
|
2019-09-21 19:50:16 +02:00
|
|
|
|
2020-10-20 21:04:47 +02:00
|
|
|
For each option, 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.
|
2019-09-21 19:50:16 +02:00
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
|
2020-10-20 21:04:47 +02:00
|
|
|
*font-bold*, *font-italic* and *font-bold-italic* allow custom
|
|
|
|
|
fonts to be used for bold/italic/bold+italic fonts. If left
|
|
|
|
|
unconfigured, the bold/italic variants of the regular font(s)
|
|
|
|
|
specified in *font* are used. *Note*: you _may_ have to tweak the
|
|
|
|
|
size(s) of the custom bold/italic fonts to match the regular font.
|
|
|
|
|
|
2020-10-20 21:12:25 +02:00
|
|
|
To disable bold and/or italic fonts, set e.g. *font-bold* to
|
|
|
|
|
_exactly_ the same value as *font*.
|
|
|
|
|
|
2020-12-31 12:57:37 +01:00
|
|
|
Default: _monospace:size=8_ (*font*), _not set_ (*font-bold*,
|
2020-10-20 21:04:47 +02:00
|
|
|
*font-italic*, *font-bold-italic*).
|
2019-08-12 20:00:09 +02:00
|
|
|
|
2021-05-28 17:44:13 +02:00
|
|
|
*include*
|
|
|
|
|
Absolute path to configuration file to import.
|
|
|
|
|
|
|
|
|
|
The import file has its own section scope. I.e. the including
|
|
|
|
|
configuration is still in the default section after the include,
|
|
|
|
|
regardless of which section the included file ends in.
|
|
|
|
|
|
|
|
|
|
The path must be an absolute path.
|
|
|
|
|
|
|
|
|
|
Multiple include directives are allowed, but only one path per
|
|
|
|
|
directive.
|
|
|
|
|
|
|
|
|
|
Nested imports are allowed.
|
|
|
|
|
|
|
|
|
|
Default: _not set_.
|
|
|
|
|
|
2021-01-07 11:48:50 +01:00
|
|
|
*line-height*
|
2021-01-07 17:07:42 +01:00
|
|
|
An absolute value, in _points_, that override line height from the
|
2021-01-07 11:48:50 +01:00
|
|
|
font metrics.
|
|
|
|
|
|
2021-04-30 20:31:47 +02:00
|
|
|
You can specify a height in _pixels_ by using the *px* suffix:
|
2021-01-07 17:07:42 +01:00
|
|
|
e.g. *line-height=12px*.
|
|
|
|
|
|
|
|
|
|
See also: *vertical-letter-offset*.
|
2021-01-07 11:48:50 +01:00
|
|
|
|
2021-01-11 10:56:40 +01:00
|
|
|
Default: _not set_.
|
2021-01-07 11:48:50 +01:00
|
|
|
|
|
|
|
|
*letter-spacing*
|
2021-01-07 17:07:42 +01:00
|
|
|
Spacing between letters, in _points_. A positive value will
|
|
|
|
|
increase the cell size, and a negative value shrinks it.
|
|
|
|
|
|
2021-04-30 20:31:47 +02:00
|
|
|
You can specify a letter spacing in _pixels_ by using the *px*
|
2021-01-07 17:07:42 +01:00
|
|
|
suffix: e.g. *letter-spacing=2px*.
|
2021-01-07 11:48:50 +01:00
|
|
|
|
2021-01-07 17:07:42 +01:00
|
|
|
See also: *horizontal-letter-offset*.
|
2021-01-07 11:48:50 +01:00
|
|
|
|
|
|
|
|
Default: _0_.
|
|
|
|
|
|
|
|
|
|
*horizontal-letter-offset*, *vertical-letter-offset*
|
|
|
|
|
Configure the horizontal and vertical offsets used when
|
2021-01-07 17:07:42 +01:00
|
|
|
positioning glyphs within cells, in _points_, relative to the top
|
|
|
|
|
left corner.
|
|
|
|
|
|
2021-04-30 20:31:47 +02:00
|
|
|
To specify an offset in _pixels_, append *px*:
|
2021-01-07 17:07:42 +01:00
|
|
|
e.g. *horizontal-letter-offset=2px*.
|
2021-01-07 11:48:50 +01:00
|
|
|
|
|
|
|
|
Default: _0_.
|
|
|
|
|
|
2021-06-17 17:52:38 +02:00
|
|
|
*underline-offset*
|
|
|
|
|
Use a custom offset for underlines. The offset is, by default, in
|
|
|
|
|
_points_ and relative the font's baseline. A positive value
|
|
|
|
|
positions the underline under the baseline, while a negative value
|
|
|
|
|
positions it above the baseline.
|
|
|
|
|
|
|
|
|
|
To specify an offset in _pixels_, append *px*:
|
|
|
|
|
*underline-offset=2px*.
|
|
|
|
|
|
|
|
|
|
If left unset (the default), the offset specified in the font is
|
|
|
|
|
used, or estimated by foot if the font lacks underline positioning
|
|
|
|
|
information.
|
|
|
|
|
|
|
|
|
|
Default: _unset_.
|
|
|
|
|
|
|
|
|
|
*box-drawings-uses-font-glyphs* Boolean. When disabled, foot generates
|
|
|
|
|
box/line drawing characters itself. The are several advantages to
|
|
|
|
|
doing this instead of using font glyphs:
|
2021-04-09 23:19:20 +02:00
|
|
|
|
2021-04-10 11:24:23 +02:00
|
|
|
- No antialiasing effects where e.g. line endpoints appear
|
|
|
|
|
dimmed down, or blurred.
|
2021-04-09 23:19:20 +02:00
|
|
|
- Line- and box characters are guaranteed to span the entire cell,
|
|
|
|
|
resulting in a gap-less appearance.
|
|
|
|
|
- No alignment issues, i.e. lines are centered when they should be.
|
|
|
|
|
- Many fonts lack some, or all, of the line- and box drawing
|
|
|
|
|
characters, causing fallback fonts to be used, which results
|
2021-04-10 11:24:23 +02:00
|
|
|
in out-of-place looking glyphs (for example, badly sized).
|
2021-04-09 23:19:20 +02:00
|
|
|
|
|
|
|
|
When enabled, box/line drawing characters are rendered using font
|
|
|
|
|
glyphs. This may result in a more uniform look, in some use cases.
|
|
|
|
|
|
|
|
|
|
Default: _no_.
|
|
|
|
|
|
2020-11-17 17:59:31 +01:00
|
|
|
*dpi-aware*
|
2020-12-17 12:05:22 +01:00
|
|
|
*auto*, *yes*, or *no*. When set to *yes*, fonts are sized using
|
|
|
|
|
the monitor's DPI, making a font of a given size have the same
|
|
|
|
|
physical size, regardless of monitor. In other words, if you drag
|
|
|
|
|
a foot window between different monitors, the font size remains
|
|
|
|
|
the same.
|
2020-11-17 17:59:31 +01:00
|
|
|
|
2020-12-17 12:05:22 +01:00
|
|
|
In this mode, the monitor's scaling factor is ignored; doubling
|
|
|
|
|
the scaling factor will *not* double the font size.
|
2020-11-17 17:59:31 +01:00
|
|
|
|
2020-12-17 12:05:22 +01:00
|
|
|
When set to *no*, the monitor's DPI is ignored. The font is
|
|
|
|
|
instead sized using the monitor's scaling factor; doubling the
|
|
|
|
|
scaling factor *does* double the font size.
|
|
|
|
|
|
|
|
|
|
Finally, if set to *auto*, fonts will be sized using the monitor's
|
2021-01-11 10:57:51 +01:00
|
|
|
DPI on monitors with a scaling factor of 1, but otherwise using
|
|
|
|
|
the scaling factor.
|
2020-12-17 12:05:22 +01:00
|
|
|
|
|
|
|
|
Default: _auto_
|
2020-11-17 17:59:31 +01:00
|
|
|
|
2020-02-15 19:02:05 +01:00
|
|
|
*pad*
|
2020-04-25 22:39:53 +02:00
|
|
|
Padding between border and glyphs, in pixels (subject to output
|
2021-01-06 11:17:29 +01:00
|
|
|
scaling), on the form _XxY_.
|
|
|
|
|
|
|
|
|
|
This will add _at least_ X pixels on both the left and right
|
|
|
|
|
sides, and Y pixels on the top and bottom sides. The grid content
|
|
|
|
|
will be anchored in the top left corner. I.e. if the window
|
|
|
|
|
manager forces an odd window size on foot, the additional pixels
|
|
|
|
|
will be added to the right and bottom sides.
|
|
|
|
|
|
|
|
|
|
To instead center the grid content, append *center* (e.g. *pad=5x5
|
|
|
|
|
center*).
|
|
|
|
|
|
|
|
|
|
Default: _2x2_.
|
2019-08-23 17:26:41 +02:00
|
|
|
|
2021-01-21 15:14:43 +01:00
|
|
|
*resize-delay-ms*
|
|
|
|
|
Time, in milliseconds, of "idle time" "before foot sends the new
|
|
|
|
|
window dimensions to the client application while doing an
|
|
|
|
|
interactive resize of a foot window. Idle time in this context is
|
|
|
|
|
a period of time where the window size is not changing.
|
|
|
|
|
|
|
|
|
|
In other words, while you are fiddling with the window size, foot
|
|
|
|
|
does not send the updated dimensions to the client. Only when you
|
2021-07-02 16:53:49 +02:00
|
|
|
pause the fiddling for *resize-delay-ms* milliseconds is the
|
|
|
|
|
client updated.
|
2021-01-21 15:14:43 +01:00
|
|
|
|
|
|
|
|
Emphasis is on _while_ here; as soon as the interactive resize
|
|
|
|
|
ends (i.e. when you let go of the window border), the final
|
|
|
|
|
dimensions is sent to the client, without any delays.
|
|
|
|
|
|
|
|
|
|
Setting it to 0 disables the delay completely.
|
|
|
|
|
|
|
|
|
|
Default: _100_.
|
|
|
|
|
|
2020-09-08 19:17:29 +02:00
|
|
|
*initial-window-size-pixels*
|
|
|
|
|
Initial window width and height in _pixels_ (subject to output
|
|
|
|
|
scaling), on the form _WIDTHxHEIGHT_. The height _includes_ the
|
|
|
|
|
titlebar when using CSDs. Mutually exclusive to
|
|
|
|
|
*initial-window-size-chars*. Default: _700x500_.
|
|
|
|
|
|
|
|
|
|
*initial-window-size-chars*
|
|
|
|
|
Initial window width and height in _characters_, on the form
|
|
|
|
|
_WIDTHxHEIGHT_. Mutually exclusive to
|
2020-09-14 17:34:04 +02:00
|
|
|
*initial-window-size-pixels*.'
|
|
|
|
|
|
|
|
|
|
Note that if you have a multi-monitor setup, with different
|
|
|
|
|
scaling factors, there is a possibility the window size will not
|
|
|
|
|
be set correctly. If that is the case, use
|
|
|
|
|
*initial-window-size-pixels* instead.
|
|
|
|
|
|
|
|
|
|
Default: _not set_.
|
2020-09-08 19:17:29 +02:00
|
|
|
|
2020-03-28 12:04:00 +01:00
|
|
|
*initial-window-mode*
|
|
|
|
|
Initial window mode for each newly spawned window: *windowed*,
|
|
|
|
|
*maximized* or *fullscreen*. Default: _windowed_.
|
2020-03-26 19:39:12 +01:00
|
|
|
|
2020-04-01 19:59:47 +02:00
|
|
|
*title*
|
|
|
|
|
Initial window title. Default: _foot_.
|
|
|
|
|
|
2021-07-04 17:59:40 +02:00
|
|
|
*locked-title*
|
|
|
|
|
Boolean. If enabled, applications are not allowed to change the
|
|
|
|
|
title at run-time. Default: _no_.
|
|
|
|
|
|
2020-04-01 18:40:51 +02:00
|
|
|
*app-id*
|
|
|
|
|
Value to set the *app-id* property on the Wayland window to. The
|
|
|
|
|
compositor can use this value to e.g. group multiple windows, or
|
|
|
|
|
apply window management rules. Default: _foot_.
|
|
|
|
|
|
2020-11-14 11:22:23 +01:00
|
|
|
*bold-text-in-bright*
|
2021-04-17 21:57:08 +02:00
|
|
|
Semi-boolean. When enabled, bold text is rendered in a brighter
|
|
|
|
|
color (in addition to using a bold font). The color is brightened
|
|
|
|
|
by increasing its luminance.
|
|
|
|
|
|
|
|
|
|
If set to *palette-based*, rather than a simple *yes|true*, colors
|
|
|
|
|
matching one of the 8 regular palette colors will be brightened
|
|
|
|
|
using the corresponding bright palette color. Other colors will be
|
|
|
|
|
brightened by increasing the luminance.
|
|
|
|
|
|
|
|
|
|
Default: _no_.
|
2020-11-14 11:22:23 +01:00
|
|
|
|
2020-10-09 19:44:23 +02:00
|
|
|
*word-delimiters*
|
|
|
|
|
String of characters that act as word delimiters when selecting
|
2020-10-09 19:50:56 +02:00
|
|
|
text. Note that whitespace characters are _always_ word
|
|
|
|
|
delimiters, regardless of this setting. Default: _,│`|:"'()[]{}<>_
|
2020-10-09 19:44:23 +02:00
|
|
|
|
2020-12-08 19:19:55 +01:00
|
|
|
*notify*
|
|
|
|
|
Command to execute to display a notification. _${title}_ and
|
|
|
|
|
_${body}_ will be replaced with the notification's actual _title_
|
|
|
|
|
and _body_ (message content).
|
2021-02-14 11:22:07 +01:00
|
|
|
|
2021-05-27 12:11:47 +02:00
|
|
|
_${app-id}_ is replaced with the value of the command line option
|
|
|
|
|
_--app-id_, and defaults to *foot*.
|
|
|
|
|
|
|
|
|
|
_${window-title}_ is replaced with the current window title.
|
|
|
|
|
|
2020-12-08 19:19:55 +01:00
|
|
|
Applications can trigger notifications in the following ways:
|
|
|
|
|
|
|
|
|
|
- OSC 777: *\\e]777;notify;<title>;<body>\\e\\\\*
|
|
|
|
|
|
2021-02-14 11:22:07 +01:00
|
|
|
Notifications are *inhibited* if the foot window has keyboard
|
|
|
|
|
focus.
|
|
|
|
|
|
2021-05-27 11:41:57 +02:00
|
|
|
Default: _notify-send -a ${app-id} -i ${app-id} ${title} ${body}_.
|
2020-12-08 19:19:55 +01:00
|
|
|
|
2021-01-20 17:56:14 +01:00
|
|
|
*selection-target*
|
|
|
|
|
Clipboard target to automatically copy selected text to. One of
|
|
|
|
|
*none*, *primary*, *clipboard* or *both*. Default: _primary_.
|
|
|
|
|
|
|
|
|
|
*workers*
|
|
|
|
|
Number of threads to use for rendering. Set to 0 to disable
|
|
|
|
|
multithreading. Default: the number of available logical CPUs
|
|
|
|
|
(including SMT). Note that this is not always the best value. In
|
|
|
|
|
some cases, the number of physical _cores_ is better.
|
|
|
|
|
|
2020-07-29 17:41:24 +02:00
|
|
|
|
2021-04-29 04:12:55 -05:00
|
|
|
# SECTION: bell
|
|
|
|
|
|
|
|
|
|
*urgent*
|
2021-05-07 04:40:07 -05:00
|
|
|
When set to _yes_, the margins will be painted in red
|
2021-04-29 04:12:55 -05:00
|
|
|
whenever *BEL* is received while the window does *not* have
|
|
|
|
|
keyboard focus. Note that Wayland currently does not have an
|
|
|
|
|
_urgency_ hint like X11. The name *urgent* was chosen for
|
|
|
|
|
forward-compatibility in the hopes that a corresponding Wayland
|
|
|
|
|
protocol is added in the future (in which case foot will use that
|
|
|
|
|
instead of painting its margins red).
|
|
|
|
|
|
|
|
|
|
Applications can enable/disable this feature programmatically with
|
|
|
|
|
the *CSI ? 1042 h* and *CSI ? 1042 l* escape sequences.
|
|
|
|
|
|
|
|
|
|
_Note_: expect this feature to be *replaced* with proper
|
|
|
|
|
compositor urgency support once/if that gets implemented.
|
2021-05-07 04:40:07 -05:00
|
|
|
Default: _no_
|
2021-04-29 04:12:55 -05:00
|
|
|
|
|
|
|
|
*notify*
|
2021-05-07 04:40:07 -05:00
|
|
|
When set to _yes_, foot will emit a desktop notification using
|
2021-04-29 04:12:55 -05:00
|
|
|
the command specified in the *notify* option whenever *BEL* is
|
|
|
|
|
received and the window does *not* have keyboard focus. Default:
|
2021-05-07 04:40:07 -05:00
|
|
|
_no_
|
2021-04-29 04:12:55 -05:00
|
|
|
|
|
|
|
|
*command*
|
|
|
|
|
When set, foot will execute this command when *BEL* is received.
|
|
|
|
|
Default: none
|
|
|
|
|
|
|
|
|
|
*command-focused*
|
|
|
|
|
Whether to run the command on *BEL* even while focused. Default:
|
2021-05-07 04:40:07 -05:00
|
|
|
_no_
|
2021-04-29 04:12:55 -05:00
|
|
|
|
|
|
|
|
|
2020-07-29 17:41:24 +02:00
|
|
|
# SECTION: scrollback
|
|
|
|
|
|
|
|
|
|
*lines*
|
2020-10-08 19:54:06 +02:00
|
|
|
Number of scrollback lines. The maximum number of allocated lines
|
|
|
|
|
will be this value plus the number of visible lines, rounded up to
|
|
|
|
|
the nearest power of 2. Default: _1000_.
|
2019-08-12 20:00:09 +02:00
|
|
|
|
2020-08-03 19:43:06 +02:00
|
|
|
*multiplier*
|
|
|
|
|
Amount to multiply mouse scrolling with. It is a decimal number,
|
2020-09-29 09:50:17 +02:00
|
|
|
i.e. fractions are allowed. Default: _3.0_.
|
2020-08-03 19:43:06 +02:00
|
|
|
|
2020-07-29 17:41:24 +02:00
|
|
|
*indicator-position*
|
2020-07-25 14:31:45 +02:00
|
|
|
Configures the style of the scrollback position indicator. One of
|
2020-07-25 14:40:46 +02:00
|
|
|
*none*, *fixed* or *relative*. *none* disables the indicator
|
2020-10-08 19:53:49 +02:00
|
|
|
completely. *fixed* always renders the indicator near the top of
|
2020-07-25 14:38:36 +02:00
|
|
|
the window, and *relative* renders the indicator at the position
|
2020-07-25 14:31:45 +02:00
|
|
|
corresponding to the current scrollback position. Default:
|
2020-07-25 14:38:36 +02:00
|
|
|
_relative_.
|
2020-07-24 18:20:26 +02:00
|
|
|
|
2020-07-29 17:41:24 +02:00
|
|
|
*indicator-format*
|
2020-07-24 18:34:19 +02:00
|
|
|
Which format to use when displaying the scrollback position
|
2020-07-28 19:56:53 +02:00
|
|
|
indicator. Either _percentage_, _line_, or a custom fixed
|
|
|
|
|
string. This option is ignored if
|
2020-07-29 17:41:24 +02:00
|
|
|
*indicator-position=none*. Default: _empty string_.
|
2019-08-12 20:00:09 +02:00
|
|
|
|
|
|
|
|
|
2021-05-20 17:56:56 +02:00
|
|
|
# SECTION: url
|
|
|
|
|
|
|
|
|
|
*launch*
|
|
|
|
|
Command to execute when opening URLs. _${url}_ will be replaced
|
|
|
|
|
with the actual URL. Default: _xdg-open ${url}_.
|
|
|
|
|
|
|
|
|
|
*osc8-underline*
|
|
|
|
|
When to underline OSC-8 URLs. Possible values are *url-mode* and
|
|
|
|
|
*always*.
|
|
|
|
|
|
|
|
|
|
When set to *url-mode*, OSC-8 URLs are only highlighted in URL
|
|
|
|
|
mode, just like auto-detected URLs.
|
|
|
|
|
|
|
|
|
|
When set to *always*, OSC-8 URLs are always highlighted,
|
|
|
|
|
regardless of their other attributes (bold, italic etc). Note that
|
|
|
|
|
this does _not_ make them clickable.
|
|
|
|
|
|
|
|
|
|
Default: _url-mode_
|
|
|
|
|
|
|
|
|
|
*label-letters*
|
|
|
|
|
String of characters to use when generating key sequences for URL
|
|
|
|
|
jump labels. Default: _sadfjklewcmpgh_.
|
|
|
|
|
|
2021-05-20 17:58:06 +02:00
|
|
|
*protocols*
|
2021-05-20 20:45:01 +02:00
|
|
|
Comma separated list of protocols (schemes) that should be
|
|
|
|
|
recognized in URL mode. Note that only auto-detected URLs are
|
|
|
|
|
affected by this option. OSC-8 URLs are always enabled, regardless
|
|
|
|
|
of protocol. Default: _http, https, ftp, ftps, file, gemini,
|
|
|
|
|
gopher_.
|
2021-05-20 17:58:06 +02:00
|
|
|
|
|
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
# SECTION: cursor
|
|
|
|
|
|
2020-03-02 18:47:48 +01:00
|
|
|
This section controls the cursor style and color. Note that
|
2020-07-12 20:23:54 +02:00
|
|
|
applications can change these at runtime.
|
2020-03-02 18:47:48 +01:00
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
*style*
|
2021-04-30 20:31:47 +02:00
|
|
|
Configures the default cursor style, and is one of: *block*,
|
|
|
|
|
*beam* or *underline*. Note that this can be overridden by
|
2020-06-30 17:45:34 +02:00
|
|
|
applications. Default: _block_.
|
|
|
|
|
|
|
|
|
|
*blink*
|
|
|
|
|
Boolean. Enables blinking cursor. Note that this can be overridden
|
|
|
|
|
by applications. Default: _no_.
|
2019-08-12 20:00:09 +02:00
|
|
|
|
|
|
|
|
*color*
|
|
|
|
|
Two RRGGBB values specifying the foreground (text) and background
|
|
|
|
|
(cursor) colors for the cursor. Default: inversed foreground and
|
|
|
|
|
background colors. Note that this value only applies to the block
|
|
|
|
|
cursor. The other cursor styles are always rendered with the
|
|
|
|
|
foreground color.
|
|
|
|
|
|
2021-04-30 20:31:47 +02:00
|
|
|
*beam-thickness*
|
|
|
|
|
Thickness (width) of the beam styled cursor. The value is in
|
2021-05-18 18:52:10 +02:00
|
|
|
points, and its exact value thus depends on the monitor's DPI. To
|
|
|
|
|
instead specify a thickness in pixels, use the *px* suffix:
|
|
|
|
|
e.g. *beam-thickness=2px*. Default: _1.5_
|
|
|
|
|
|
|
|
|
|
*underline-thickness*
|
|
|
|
|
Thickness (height) of the underline styled cursor. The value is in
|
|
|
|
|
points, and its exact value thus depends on the monitor's DPI.
|
|
|
|
|
|
|
|
|
|
To instead specify a thickness in pixels, use the *px* suffix:
|
|
|
|
|
e.g. *underline-thickness=2px*.
|
|
|
|
|
|
|
|
|
|
Note that if left unset, the cursor's thickness will scale with
|
|
|
|
|
the font size, while if set, the size is fixed.
|
|
|
|
|
|
|
|
|
|
Default: _font underline thickness_.
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2021-05-20 17:56:56 +02:00
|
|
|
|
2020-08-04 07:33:15 +02:00
|
|
|
# SECTION: mouse
|
|
|
|
|
|
|
|
|
|
*hide-when-typing*
|
2020-11-26 18:22:45 +01:00
|
|
|
Boolean. When enabled, the mouse cursor is hidden while
|
|
|
|
|
typing. Default: _no_.
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2020-09-15 19:09:00 +02:00
|
|
|
*alternate-scroll-mode*
|
|
|
|
|
Boolean. This option controls the initial value for the _alternate
|
|
|
|
|
scroll mode_. When this mode is enabled, mouse scroll events are
|
|
|
|
|
translated to _up_/_down_ key events when displaying the alternate
|
|
|
|
|
screen.
|
|
|
|
|
|
|
|
|
|
This lets you scroll with the mouse in e.g. pagers (like _less_)
|
|
|
|
|
without enabling native mouse support in them.
|
|
|
|
|
|
|
|
|
|
Alternate scrolling is *not* used if the application enables
|
|
|
|
|
native mouse support.
|
|
|
|
|
|
|
|
|
|
This option can be modified by applications at run-time using the
|
2020-09-16 08:05:38 +02:00
|
|
|
escape sequences *CSI ? 1007 h* (enable) and *CSI ? 1007 l*
|
2020-09-15 19:09:00 +02:00
|
|
|
(disable).
|
|
|
|
|
|
|
|
|
|
Default: _yes_.
|
|
|
|
|
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
# SECTION: colors
|
|
|
|
|
|
2021-05-08 02:18:45 -05:00
|
|
|
This section controls the 16 ANSI colors, the default foreground
|
|
|
|
|
and background colors, and the extended 256 color palette. Note that
|
|
|
|
|
applications can change these at runtime.
|
2020-03-02 18:47:48 +01:00
|
|
|
|
2020-03-02 20:29:28 +01:00
|
|
|
The colors are in RRGGBB format. That is, they do *not* have an alpha
|
|
|
|
|
component. You can configure the background transparency with the
|
|
|
|
|
_alpha_ option.
|
|
|
|
|
|
2019-08-12 20:00:09 +02:00
|
|
|
*foreground*
|
|
|
|
|
Default RRGGBB foreground color. This is the color used when no
|
|
|
|
|
ANSI color is being used. Default: _dcdccc_.
|
|
|
|
|
|
|
|
|
|
*background*
|
|
|
|
|
Default RRGGBB background color. This is the color used when no
|
|
|
|
|
ANSI color is being used. Default: _111111_.
|
|
|
|
|
|
|
|
|
|
*regular0*, *regular1* *..* *regular7*
|
2019-09-21 12:09:50 +02:00
|
|
|
The eight basic ANSI colors. Default: _222222_, _cc9393_,
|
2019-08-12 20:00:09 +02:00
|
|
|
_7f9f7f_, _d0bf8f_, _6ca0a3_, _dc8cc3_, _93e0e3_ and _dcdccc_ (a
|
|
|
|
|
variant of the _zenburn_ theme).
|
|
|
|
|
|
|
|
|
|
*bright0*, *bright1* *..* *bright7*
|
2019-08-23 19:42:14 +02:00
|
|
|
The eight bright ANSI colors. Default: _666666_, _dca3a3_,
|
2019-09-21 12:09:50 +02:00
|
|
|
_bfebbf_, _f0dfaf_, _8cd0d3_, _fcace3_, _b3ffff_ and _ffffff_ (a
|
2019-08-12 20:00:09 +02:00
|
|
|
variant of the _zenburn_ theme).
|
|
|
|
|
|
2021-05-08 02:18:45 -05:00
|
|
|
*0* *..* *255*
|
|
|
|
|
Arbitrary colors in the 256-color palette. Default: for *0* *..*
|
|
|
|
|
*15*, see regular and bright defaults above; see
|
|
|
|
|
https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for an
|
|
|
|
|
explanation of the remainder.
|
|
|
|
|
|
2019-08-15 18:15:43 +02:00
|
|
|
*alpha*
|
|
|
|
|
Background translucency. A value in the range 0.0-1.0, where 0.0
|
|
|
|
|
means completely transparent, and 1.0 is opaque. Default: _1.0_.
|
|
|
|
|
|
2020-08-12 18:53:32 +02:00
|
|
|
*selection-foreground*, *selection-background*
|
|
|
|
|
Foreground (text) and background color to use in selected
|
|
|
|
|
text. Note that *both* options must be set, or the default will be
|
|
|
|
|
used. Default: _inverse foreground/background_.
|
|
|
|
|
|
2021-02-06 11:10:40 +01:00
|
|
|
*jump-labels*
|
|
|
|
|
To RRGGBB values specifying the foreground (text) and background
|
|
|
|
|
colors to use when rendering jump labels in URL mode. Default:
|
|
|
|
|
_regular0 regular3_.
|
|
|
|
|
|
|
|
|
|
*urls*
|
|
|
|
|
Color to use for the underline used to highlight URLs in URL
|
|
|
|
|
mode. Default: _regular3_.
|
|
|
|
|
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2020-03-02 18:42:49 +01:00
|
|
|
# SECTION: csd
|
|
|
|
|
|
|
|
|
|
This section controls the look of the _CSDs_ (Client Side
|
|
|
|
|
Decorations). Note that the default is to *not* use CSDs, but instead
|
|
|
|
|
to use _SSDs_ (Server Side Decorations) when the compositor supports
|
|
|
|
|
it.
|
|
|
|
|
|
2020-03-02 20:29:28 +01:00
|
|
|
Note that unlike the colors defined in the _colors_ section, the color
|
|
|
|
|
values here are in AARRGGBB format. I.e. they contain an alpha
|
|
|
|
|
component.
|
|
|
|
|
|
2020-03-02 18:42:49 +01:00
|
|
|
*preferred*
|
2020-10-10 11:04:17 +02:00
|
|
|
Which type of window decorations to prefer: *client* (CSD),
|
|
|
|
|
*server* (SSD) or *none*.
|
|
|
|
|
|
|
|
|
|
Note that this is only a hint to the compositor. Depending on
|
|
|
|
|
compositor support, and how it has been configured, it may
|
|
|
|
|
instruct foot to use CSDs even though this option has been set to
|
2020-10-10 11:12:48 +02:00
|
|
|
*server*, or render SSDs despite *client* or *none* being set.
|
2020-10-10 11:14:01 +02:00
|
|
|
|
|
|
|
|
Default: _server_.
|
2020-03-02 18:42:49 +01:00
|
|
|
|
2020-03-03 18:18:59 +01:00
|
|
|
*size*
|
|
|
|
|
Height, in pixels (subject to output scaling), of the
|
|
|
|
|
titlebar. Default: _26_.
|
2020-03-02 18:42:49 +01:00
|
|
|
|
2020-03-03 18:18:59 +01:00
|
|
|
*color*
|
2020-03-02 20:29:28 +01:00
|
|
|
Titlebar AARRGGBB color. Default: use the default _foreground_
|
|
|
|
|
color.
|
2020-03-02 18:42:49 +01:00
|
|
|
|
2021-07-22 23:21:31 +02:00
|
|
|
*font*
|
|
|
|
|
Font to use for the title bar. This is a list of fonts, similar to
|
2021-07-22 23:40:40 +02:00
|
|
|
the main *font* option. Note that the font will be sized using the
|
|
|
|
|
title bar size. That is, all *:size* and *:pixelsize* attributes
|
|
|
|
|
will be ignored. Default: _primary font_.
|
2021-07-22 23:21:31 +02:00
|
|
|
|
2020-03-02 20:29:28 +01:00
|
|
|
*button-width*
|
2020-03-03 18:18:59 +01:00
|
|
|
Width, in pixels (subject to output scaling), of the
|
2020-03-06 19:11:31 +01:00
|
|
|
minimize/maximize/close buttons. Default: _26_.
|
2020-03-02 20:29:28 +01:00
|
|
|
|
2021-06-20 10:44:50 +02:00
|
|
|
*button-color*
|
|
|
|
|
Foreground color on the minimize/maximize/close buttons. Default:
|
|
|
|
|
use the default _background_ color.
|
|
|
|
|
|
2020-03-02 20:29:28 +01:00
|
|
|
*button-minimize-color*
|
2021-06-20 10:44:50 +02:00
|
|
|
Minimize button's background color, on the format
|
|
|
|
|
AARRGGBB. Default: use the default _regular4_ color (blue).
|
2020-03-02 20:29:28 +01:00
|
|
|
|
|
|
|
|
*button-maximize-color*
|
2021-06-20 10:44:50 +02:00
|
|
|
Maximize button's background color, on the format
|
|
|
|
|
AARRGGBB. Default: use the default _regular2_ color (green).
|
2020-03-02 20:29:28 +01:00
|
|
|
|
|
|
|
|
*button-close-color*
|
2021-06-20 10:44:50 +02:00
|
|
|
Close button's background color, on the format AARRGGBB. Default:
|
|
|
|
|
use the default _regular1_ color (red).
|
2020-03-02 18:42:49 +01:00
|
|
|
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2020-03-09 20:22:04 +01:00
|
|
|
# SECTION: key-bindings
|
|
|
|
|
|
|
|
|
|
This section lets you override the default key bindings.
|
|
|
|
|
|
2020-03-12 17:42:27 +01:00
|
|
|
The general format is _action=combo1...comboN_. That is, each action
|
|
|
|
|
may have one or more key combinations, space separated. Each
|
|
|
|
|
combination is on the form _mod1+mod2+key_. The names of the modifiers
|
2020-07-27 16:45:34 +02:00
|
|
|
and the key *must* be valid XKB key names.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
2021-02-27 20:55:28 +01:00
|
|
|
Note that if *Shift* is one of the modifiers, the _key_ *must not* be
|
|
|
|
|
in upper case. For example, *Control+Shift+V* will never trigger, but
|
|
|
|
|
*Control+Shift+v* will.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
2020-03-12 10:46:27 +01:00
|
|
|
Note that *Alt* is usually called *Mod1*.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
2020-03-12 17:16:35 +01:00
|
|
|
A key combination can only be mapped to *one* action. Lets say you
|
2020-03-12 17:42:27 +01:00
|
|
|
want to bind *Control+Shift+R* to *fullscreen*. Since this is the
|
2020-03-12 17:16:35 +01:00
|
|
|
default shortcut for *search-start*, you first need to unmap the
|
2020-03-18 14:52:04 +01:00
|
|
|
default binding. This can be done by setting _action=none_;
|
|
|
|
|
e.g. *search-start=none*.
|
2020-03-12 17:16:35 +01:00
|
|
|
|
2020-09-10 18:17:47 +02:00
|
|
|
*scrollback-up-page*
|
2020-09-09 19:40:48 +02:00
|
|
|
Scrolls up/back one page in history. Default: _Shift+Page\_Up_.
|
|
|
|
|
|
2020-09-10 18:17:47 +02:00
|
|
|
*scrollback-up-half-page*
|
|
|
|
|
Scrolls up/back half of a page in history. Default: _not set_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
2020-09-10 18:17:47 +02:00
|
|
|
*scrollback-up-line*
|
|
|
|
|
Scrolls up/back a single line in history. Default: _not set_.
|
|
|
|
|
|
|
|
|
|
*scrollback-down-page*
|
2020-09-09 19:40:48 +02:00
|
|
|
Scroll down/forward one page in history. Default:
|
|
|
|
|
_Shift+Page\_Down_.
|
|
|
|
|
|
2020-09-10 18:17:47 +02:00
|
|
|
*scrollback-down-half-page*
|
|
|
|
|
Scroll down/forward half of a page in history. Default: _not set_.
|
|
|
|
|
|
|
|
|
|
*scrollback-down-line*
|
|
|
|
|
Scroll down/forward a single line in history. Default: _not set_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
|
|
|
|
*clipboard-copy*
|
2021-02-27 21:34:37 +01:00
|
|
|
Copies the current selection into the _clipboard_. Default: _Control+Shift+c_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
|
|
|
|
*clipboard-paste*
|
2021-02-27 21:34:37 +01:00
|
|
|
Pastes from the _clipboard_. Default: _Control+Shift+v_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
|
|
|
|
*primary-paste*
|
2020-10-10 10:27:42 +02:00
|
|
|
Pastes from the _primary selection_. Default: _Shift+Insert_ (also
|
|
|
|
|
defined in *mouse-bindings*).
|
2020-03-09 20:22:04 +01:00
|
|
|
|
|
|
|
|
*search-start*
|
2021-02-27 21:34:37 +01:00
|
|
|
Starts a scrollback/history search. Default: _Control+Shift+r_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
|
|
|
|
*font-increase*
|
|
|
|
|
Increases the font size by 0.5pt. Default: _Control+plus
|
|
|
|
|
Control+equal Control+KP\_Add_.
|
|
|
|
|
|
|
|
|
|
*font-decrease*
|
|
|
|
|
Decreases the font size by 0.5pt. Default: _Control+minus
|
|
|
|
|
Control+KP\_Subtract_.
|
|
|
|
|
|
|
|
|
|
*font-reset*
|
|
|
|
|
Resets the font size to the default. Default: _Control+0 Control+KP\_0_.
|
|
|
|
|
|
|
|
|
|
*spawn-terminal*
|
2020-03-17 21:53:26 +01:00
|
|
|
Spawns a new terminal. If the shell has been configured to emit
|
|
|
|
|
the OSC 7 escape sequence, the new terminal will start in the
|
2021-02-27 21:34:37 +01:00
|
|
|
current working directory. Default: _Control+Shift+n_.
|
2020-03-09 20:22:04 +01:00
|
|
|
|
2020-03-12 09:34:09 +01:00
|
|
|
*minimize*
|
|
|
|
|
Minimizes the window. Default: _not bound_.
|
|
|
|
|
|
|
|
|
|
*maximize*
|
|
|
|
|
Toggle the maximized state. Default: _not bound_.
|
|
|
|
|
|
|
|
|
|
*fullscreen*
|
|
|
|
|
Toggles the fullscreen state. Default: _not bound_.
|
|
|
|
|
|
2020-07-31 17:02:53 +02:00
|
|
|
*pipe-visible*, *pipe-scrollback*, *pipe-selected*
|
|
|
|
|
Pipes the currently visible text, the entire scrollback, or the
|
|
|
|
|
currently selected text to an external tool. The syntax for this
|
|
|
|
|
option is a bit special; the first part of the value is the
|
|
|
|
|
command to execute enclosed in "[]", followed by the binding(s).
|
2020-07-15 17:48:37 +02:00
|
|
|
|
|
|
|
|
You can configure multiple pipes as long as the command strings
|
|
|
|
|
are different and the key bindings are unique.
|
|
|
|
|
|
|
|
|
|
Note that the command is *not* automatically run inside a shell;
|
|
|
|
|
use *sh -c "command line"* if you need that.
|
|
|
|
|
|
|
|
|
|
Example:
|
2021-02-26 09:24:40 +01:00
|
|
|
*pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r
|
2020-07-29 17:32:55 +02:00
|
|
|
firefox"] Control+Print*
|
2020-07-15 17:48:37 +02:00
|
|
|
|
|
|
|
|
Default: _not bound_
|
|
|
|
|
|
2021-02-04 20:39:13 +01:00
|
|
|
*show-urls-launch*
|
2021-02-06 11:18:35 +01:00
|
|
|
Enter URL mode, where all currently visible URLs are tagged with a
|
|
|
|
|
jump label with a key sequence that will open the URL. Default:
|
2021-02-27 21:34:37 +01:00
|
|
|
_Control+Shift+u_.
|
2021-01-30 12:43:59 +01:00
|
|
|
|
2021-02-04 20:55:08 +01:00
|
|
|
*show-urls-copy*
|
2021-02-06 11:18:35 +01:00
|
|
|
Enter URL mode, where all currently visible URLs are tagged with a
|
|
|
|
|
jump label with a key sequence that will place the URL in the
|
2021-02-04 20:55:08 +01:00
|
|
|
clipboard. Default: _none_.
|
|
|
|
|
|
2020-08-04 07:33:15 +02:00
|
|
|
|
2020-07-29 17:27:01 +02:00
|
|
|
# SECTION: search-bindings
|
|
|
|
|
|
|
|
|
|
This section lets you override the default key bindings used in
|
|
|
|
|
scrollback search mode. The syntax is exactly the same as the regular
|
|
|
|
|
**key-bindings**.
|
|
|
|
|
|
|
|
|
|
*cancel*
|
|
|
|
|
Aborts the search. The viewport is restored and the _primary
|
2021-05-25 16:51:07 +01:00
|
|
|
selection_ is **not** updated. Default: _Control+g Control+c
|
|
|
|
|
Escape_.
|
2020-07-29 17:27:01 +02:00
|
|
|
|
|
|
|
|
*commit*
|
|
|
|
|
Exit search mode and copy current selection into the _primary
|
|
|
|
|
selection_. Viewport is **not** restored. To copy the selection to
|
2021-02-27 21:34:37 +01:00
|
|
|
the regular _clipboard_, use *Control+Shift+c*. Default: _Return_.
|
2020-07-29 17:27:01 +02:00
|
|
|
|
|
|
|
|
*find-prev*
|
|
|
|
|
Search **backwards** in the scrollback history for the next
|
|
|
|
|
match. Default: _Control+r_.
|
|
|
|
|
|
|
|
|
|
*find-next*
|
2020-08-15 17:44:11 +02:00
|
|
|
Searches **forwards** in the scrollback history for the next
|
2020-07-29 17:27:01 +02:00
|
|
|
match. Default: _Control+s_.
|
|
|
|
|
|
|
|
|
|
*cursor-left*
|
|
|
|
|
Moves the cursor in the search box one **character** to the
|
|
|
|
|
left. Default: _Left Control+b_.
|
|
|
|
|
|
|
|
|
|
*cursor-left-word*
|
|
|
|
|
Moves the cursor in the search box one **word** to the
|
|
|
|
|
left. Default: _Control+Left Mod1+b_.
|
|
|
|
|
|
|
|
|
|
*cursor-right*
|
|
|
|
|
Moves the cursor in the search box one **character** to the
|
|
|
|
|
right. Default: _Right Control+f_.
|
|
|
|
|
|
|
|
|
|
*cursor-right-word*
|
|
|
|
|
Moves the cursor in the search box one **word** to the
|
2021-05-24 21:34:51 +01:00
|
|
|
right. Default: _Control+Right Mod1+f_.
|
2020-07-29 17:27:01 +02:00
|
|
|
|
|
|
|
|
*cursor-home*
|
|
|
|
|
Moves the cursor in the search box to the beginning of the
|
|
|
|
|
input. Default: _Home Control+a_.
|
|
|
|
|
|
|
|
|
|
*cursor-end*
|
|
|
|
|
Moves the cursor in the search box to the end of the
|
|
|
|
|
input. Default: _End Control+e_.
|
|
|
|
|
|
|
|
|
|
*delete-prev*
|
|
|
|
|
Deletes the **character before** the cursor. Default: _BackSpace_.
|
|
|
|
|
|
|
|
|
|
*delete-prev-word*
|
|
|
|
|
Deletes the **word before** the cursor. Default: _Mod1+BackSpace
|
|
|
|
|
Control+BackSpace_.
|
|
|
|
|
|
|
|
|
|
*delete-next*
|
|
|
|
|
Deletes the **character after** the cursor. Default: _Delete_.
|
|
|
|
|
|
|
|
|
|
*delete-next-word*
|
2021-04-05 14:37:42 +02:00
|
|
|
Deletes the **word after** the cursor. Default: _Mod1+d
|
2020-07-29 17:27:01 +02:00
|
|
|
Control+Delete_.
|
|
|
|
|
|
|
|
|
|
*extend-to-word-boundary*
|
|
|
|
|
Extend current selection to the next word boundary. Default:
|
|
|
|
|
_Control+w_.
|
|
|
|
|
|
|
|
|
|
*extend-to-next-whitespace*
|
|
|
|
|
Extend the current selection to the next whitespace. Default:
|
2021-02-27 21:34:37 +01:00
|
|
|
_Control+Shift+w_.
|
2020-07-29 17:27:01 +02:00
|
|
|
|
2020-11-01 12:39:57 +01:00
|
|
|
*clipboard-paste*
|
|
|
|
|
Paste from the _clipboard_ into the search buffer. Default:
|
|
|
|
|
_Control+v Control+y_.
|
|
|
|
|
|
|
|
|
|
*primary-paste*
|
|
|
|
|
Paste from the _primary selection_ into the search
|
|
|
|
|
buffer. Default: _Shift+Insert_.
|
2020-07-29 17:27:01 +02:00
|
|
|
|
2021-01-30 12:43:59 +01:00
|
|
|
|
|
|
|
|
# SECTION: url-bindings
|
|
|
|
|
|
|
|
|
|
This section lets you override the default key bindings used in URL
|
|
|
|
|
mode. The syntax is exactly the same as the regular **key-bindings**.
|
|
|
|
|
|
|
|
|
|
*cancel*
|
|
|
|
|
Exits URL mode without opening an URL. Default: _Control+g
|
2021-05-25 16:51:07 +01:00
|
|
|
Control+c Control+d Escape_.
|
2021-01-30 12:43:59 +01:00
|
|
|
|
2021-02-14 14:18:11 +01:00
|
|
|
*toggle-url-visible*
|
|
|
|
|
By default, the jump label only shows the key sequence required to
|
|
|
|
|
activate it. This is fine as long as the URL is visible in the
|
|
|
|
|
original text.
|
|
|
|
|
|
|
|
|
|
But with e.g. OSC-8 URLs (the terminal version of HTML anchors,
|
|
|
|
|
i.e. "links"), the text on the screen can be something completey
|
|
|
|
|
different than the URL.
|
|
|
|
|
|
|
|
|
|
This action toggles between showing and hiding the URL on the jump
|
|
|
|
|
label.
|
|
|
|
|
|
2021-02-14 16:58:34 +01:00
|
|
|
Default: _t_.
|
2021-02-14 14:18:11 +01:00
|
|
|
|
2021-01-30 12:43:59 +01:00
|
|
|
|
2020-03-12 10:20:05 +01:00
|
|
|
# SECTION: mouse-bindings
|
|
|
|
|
|
|
|
|
|
This section lets you override the default mouse bindings.
|
|
|
|
|
|
2020-08-10 19:41:27 +02:00
|
|
|
The general format is _action=combo1...comboN_. That is, each action
|
|
|
|
|
may have one or more key combinations, space separated. Each
|
2020-08-11 10:30:27 +02:00
|
|
|
combination is on the form _mod1+mod2+BTN\_<name>[-COUNT]_. The names
|
|
|
|
|
of the modifiers *must* be valid XKB key names, and the button name
|
|
|
|
|
*must* be a valid libinput name. You can find the button names using
|
|
|
|
|
*libinput debug-events*.
|
2020-08-10 19:44:01 +02:00
|
|
|
|
2020-08-11 10:44:27 +02:00
|
|
|
Note that *Shift* cannot be used as a modifier in mouse bindings since
|
|
|
|
|
it is used to enable selection when the client application is grabbing
|
|
|
|
|
the mouse.
|
|
|
|
|
|
2020-08-10 19:44:01 +02:00
|
|
|
The trailing *COUNT* is optional and specifies the click count
|
2020-08-11 10:30:27 +02:00
|
|
|
required to trigger the binding. The default if *COUNT* is omitted is
|
2020-08-10 19:44:01 +02:00
|
|
|
_1_.
|
|
|
|
|
|
2020-08-11 10:30:27 +02:00
|
|
|
A modifier+button combination can only be mapped to *one* action. Lets
|
|
|
|
|
say you want to bind *BTN\_MIDDLE* to *fullscreen*. Since
|
|
|
|
|
*BTN\_MIDDLE* is the default binding for *primary-paste*, you first
|
|
|
|
|
need to unmap the default binding. This can be done by setting
|
|
|
|
|
_action=none_; e.g. *primary-paste=none*.
|
2020-03-12 10:46:27 +01:00
|
|
|
|
2020-03-12 17:24:54 +01:00
|
|
|
All actions listed under *key-bindings* can be user here as well.
|
|
|
|
|
|
2020-08-11 10:03:14 +02:00
|
|
|
*select-begin*
|
|
|
|
|
Begin an interactive selection. The selection is finalized, and
|
|
|
|
|
copied to the _primary selection_, when the button is
|
2020-08-11 10:17:19 +02:00
|
|
|
released. Default: _BTN\_LEFT_.
|
|
|
|
|
|
|
|
|
|
*select-begin-block*
|
|
|
|
|
Begin an interactive block selection. The selection is finalized,
|
|
|
|
|
and copied to the _primary selection_, when the button is
|
|
|
|
|
released. Default: _Control+BTN\_LEFT_.
|
2020-08-11 10:03:14 +02:00
|
|
|
|
|
|
|
|
*select-word*
|
2021-01-06 11:11:46 +01:00
|
|
|
Begin an interactive word-wise selection, where words are
|
|
|
|
|
separated by whitespace and all characters defined by the
|
|
|
|
|
*word-delimiters* option. The selection is finalized, and copied
|
|
|
|
|
to the _primary selection_, when the button is released. Default:
|
|
|
|
|
_BTN\_LEFT-2_.
|
2020-08-11 10:03:14 +02:00
|
|
|
|
|
|
|
|
*select-word-whitespace*
|
2021-01-06 11:11:46 +01:00
|
|
|
Same as *select-word*, but the characters in the *word-delimiters*
|
|
|
|
|
option are ignored. I.e only whitespace characters act as
|
|
|
|
|
delimiters. The selection is finalized, and copied to the _primary
|
|
|
|
|
selection_, when the button is released. Default:
|
|
|
|
|
_Control+_BTN\_LEFT-2_.
|
2020-08-11 10:03:14 +02:00
|
|
|
|
2020-08-11 10:17:19 +02:00
|
|
|
*select-row*
|
2021-01-06 11:11:46 +01:00
|
|
|
Begin an interactive row-wise selection. The selection is
|
|
|
|
|
finalized, and copied to the _primary selection_, when the button
|
|
|
|
|
is released. Default: _BTN\_LEFT-3_.
|
|
|
|
|
|
|
|
|
|
*select-extend*
|
|
|
|
|
Interactively extend an existing selection, using the original
|
|
|
|
|
selection mode (normal, block, word-wise or row-wise). The
|
|
|
|
|
selection is finalized, and copied to the _primary selection_,
|
|
|
|
|
when the button is released. Default: _BTN\_RIGHT_.
|
|
|
|
|
|
|
|
|
|
*select-extend-character-wise*
|
|
|
|
|
Same as *select-extend*, but forces the selection mode to _normal_
|
|
|
|
|
(i.e. character wise). Note that this causes subsequent
|
|
|
|
|
*select-extend* operations to be character wise. This action is
|
|
|
|
|
ignored for block selections. Default: _Control+BTN\_RIGHT_.
|
|
|
|
|
|
2020-08-11 10:17:19 +02:00
|
|
|
|
2020-03-12 10:20:05 +01:00
|
|
|
*primary-paste*
|
2020-03-12 17:42:27 +01:00
|
|
|
Pastes from the _primary selection_. Default: _BTN\_MIDDLE_.
|
2020-03-12 10:20:05 +01:00
|
|
|
|
|
|
|
|
|
2020-10-07 18:38:54 +02:00
|
|
|
# TWEAK
|
2020-03-30 17:31:31 +02:00
|
|
|
|
2020-04-25 22:40:19 +02:00
|
|
|
This section is for advanced users and describes configuration options
|
2020-03-30 17:31:31 +02:00
|
|
|
that can be used to tweak foot's low-level behavior.
|
|
|
|
|
|
|
|
|
|
These options are *not* included in the example configuration. You
|
|
|
|
|
should not change these unless you understand what they do and note
|
|
|
|
|
that changing the default values *will* print a warning when launching
|
|
|
|
|
foot.
|
|
|
|
|
|
2020-09-13 17:59:56 +02:00
|
|
|
Note that these options may change, or be removed at any time, without
|
|
|
|
|
prior notice.
|
|
|
|
|
|
2020-03-30 17:31:31 +02:00
|
|
|
When reporting bugs, please mention if, and to what, you have changed
|
|
|
|
|
any of these options.
|
|
|
|
|
|
2020-09-13 17:59:56 +02:00
|
|
|
*scaling-filter*
|
|
|
|
|
Overrides the default scaling filter used when down-scaling bitmap
|
|
|
|
|
fonts (e.g. emoji fonts). Possible values are *none*, *nearest*,
|
|
|
|
|
*bilinear*, *cubic* or *lanczos3*. *cubic* and *lanczos3* produce
|
|
|
|
|
the best results, but are slower (with *lanczos3* being the best
|
|
|
|
|
_and_ slowest).
|
|
|
|
|
|
|
|
|
|
Default: _lanczos3_.
|
|
|
|
|
|
2021-06-15 11:45:27 +02:00
|
|
|
*overflowing-glyphs*
|
|
|
|
|
Boolean. When enabled, glyphs wider than their cell(s) are allowed
|
|
|
|
|
to render into one additional neighbouring cell.
|
2020-09-03 17:37:44 +02:00
|
|
|
|
2021-06-15 11:45:27 +02:00
|
|
|
One use case for this are fonts with wide italic characters that
|
|
|
|
|
"bend" into the next cell. Without this option, such glyphs will
|
|
|
|
|
appear "cut off".
|
2020-09-05 09:38:48 +02:00
|
|
|
|
2021-06-15 11:45:27 +02:00
|
|
|
Another use case are fonts with "icon" characters in the Unicode
|
|
|
|
|
private usage area, e.g. Nerd Fonts, or Powerline Fonts and legacy
|
|
|
|
|
emoji characters like *WHITE FROWNING FACE*.
|
2020-09-03 17:37:44 +02:00
|
|
|
|
2021-06-15 11:45:27 +02:00
|
|
|
Note: might impact performance depending on the font used.
|
|
|
|
|
Especially small font sizes can cause many overflowing glyphs
|
|
|
|
|
because of subpixel rendering.
|
2021-05-31 17:10:05 +02:00
|
|
|
|
2020-11-13 17:49:23 +01:00
|
|
|
Default: _yes_.
|
2020-09-03 17:37:44 +02:00
|
|
|
|
2020-08-13 18:35:17 +02:00
|
|
|
*render-timer*
|
|
|
|
|
Enables a frame rendering timer, that prints the time it takes to
|
|
|
|
|
render each frame, in microseconds, either on-screen, to stderr,
|
|
|
|
|
or both. Valid values are *none*, *osd*, *log* and
|
|
|
|
|
*both*. Default: _none_.
|
|
|
|
|
|
2021-01-12 17:36:20 +01:00
|
|
|
*box-drawing-base-thickness*
|
|
|
|
|
Line thickness to use for *LIGHT* box drawing line characters, in
|
|
|
|
|
points. This value is converted to pixels using the monitor's DPI,
|
|
|
|
|
and then multiplied with the cell size. The end result is that a
|
|
|
|
|
larger font (and thus larger cells) result in thicker
|
|
|
|
|
lines. Default: _0.04_.
|
|
|
|
|
|
2021-05-05 22:24:25 +02:00
|
|
|
*box-drawing-solid-shades*
|
|
|
|
|
Boolean. When enabled, box drawing "shades" (e.g. LIGHT SHADE,
|
|
|
|
|
MEDIUM SHADE and DARK SHADE) are rendered as solid blocks using a
|
|
|
|
|
darker variant of the current foreground color.
|
|
|
|
|
|
|
|
|
|
When disabled, they are instead rendered as checker box pattern,
|
|
|
|
|
using the current foreground color as is.
|
|
|
|
|
|
|
|
|
|
Default: _yes_.
|
|
|
|
|
|
2020-03-30 17:31:31 +02:00
|
|
|
*delayed-render-lower*, *delayed-render-upper*
|
|
|
|
|
These two values control the timeouts (in nanoseconds) that are
|
|
|
|
|
used to mitigate screen flicker caused by clients writing large,
|
|
|
|
|
non-atomic screen updates.
|
2020-03-30 20:21:23 +02:00
|
|
|
|
2020-04-25 22:40:29 +02:00
|
|
|
If a client splits up a screen update over multiple *write*(3)
|
|
|
|
|
calls, we may end up rendering an intermediate frame, quickly
|
2020-03-30 17:31:31 +02:00
|
|
|
followed by another frame with the final screen content. For
|
|
|
|
|
example, the client may erase part of the screen (or scroll) in
|
|
|
|
|
one write, and then write new content in one or more subsequent
|
|
|
|
|
writes. Rendering the frame when the screen has been erased, but
|
|
|
|
|
not yet filled with new content will be perceived as screen
|
|
|
|
|
flicker.
|
|
|
|
|
|
|
|
|
|
The *real* solution to this is _Application Synchronized Updates_
|
|
|
|
|
(https://gitlab.freedesktop.org/terminal-wg/specifications/-/merge_requests/2).
|
|
|
|
|
|
|
|
|
|
The problem with this is twofold - first, it has not yet been
|
|
|
|
|
standardized, and thus there are not many terminal emulators that
|
|
|
|
|
implement it (foot *does* implement it), and second, applications
|
|
|
|
|
must be patched to use it.
|
|
|
|
|
|
|
|
|
|
Until this has happened, foot offers an interim workaround; an
|
|
|
|
|
attempt to mitigate the screen flicker *without* affecting neither
|
|
|
|
|
performance nor latency.
|
|
|
|
|
|
|
|
|
|
It is based on the fact that the screen is updated at a fixed
|
|
|
|
|
interval (typically 60Hz). For us, this means it does not matter
|
|
|
|
|
if we render a new frame at the *beginning* of a frame interval,
|
|
|
|
|
or at the *end*. Thus, the goal is to introduce a delay between
|
|
|
|
|
receiving client data and rendering the resulting state, but
|
|
|
|
|
without causing a frame skip.
|
|
|
|
|
|
|
|
|
|
While it should be possible to estimate the amount of time left
|
|
|
|
|
until the next frame, foot's algorithm is currently not that
|
|
|
|
|
advanced, but is based on statistics I guess you could say - the
|
2020-03-30 20:21:23 +02:00
|
|
|
delay we introduce is so small that the risk of pushing the frame
|
|
|
|
|
over to the next frame interval is also very small.
|
2020-03-30 17:31:31 +02:00
|
|
|
|
2020-08-15 23:29:38 +02:00
|
|
|
Now, that was a lot of text. But what is it foot actually does?
|
2020-03-30 17:31:31 +02:00
|
|
|
|
|
|
|
|
When receiving client data, it schedules a timer, the
|
2020-07-25 09:41:50 +02:00
|
|
|
*delayed-render-lower*. If we do not receive any more client data
|
2020-03-30 17:31:31 +02:00
|
|
|
before the timer has run out, we render the frame. If however, we
|
|
|
|
|
do receive more data, the timer is re-scheduled. That is, each
|
|
|
|
|
time we receive client data, frame rendering is delayed another
|
|
|
|
|
*delayed-render-lower* nanoseconds.
|
|
|
|
|
|
|
|
|
|
Now, while this works very well with most clients, it would be
|
|
|
|
|
possible to construct a malicious client that keeps writing data
|
|
|
|
|
at a slow pace. To the user, this would look like foot has frozen
|
|
|
|
|
as we never get to render a new frame. To prevent this, an upper
|
|
|
|
|
limit is set - *delayed-render-upper*. If this timer runs out, we
|
|
|
|
|
render the frame regardless of what the client is doing.
|
|
|
|
|
|
|
|
|
|
If changing these values, note that the lower timeout *must* be
|
|
|
|
|
set lower than the upper timeout, but that this is not verified by
|
|
|
|
|
foot. Furthermore, both values must be less than 16ms (that is,
|
|
|
|
|
16000000 nanoseconds).
|
|
|
|
|
|
2020-08-15 23:29:38 +02:00
|
|
|
You can disable the feature altogether by setting either value to
|
2020-03-30 17:31:31 +02:00
|
|
|
0. In this case, frames are rendered "as soon as possible".
|
|
|
|
|
|
|
|
|
|
Default: lower=_500000_ (0.5ms), upper=_8333333_ (8.3ms - half a
|
|
|
|
|
frame interval).
|
|
|
|
|
|
2020-09-06 17:52:07 +02:00
|
|
|
*damage-whole-window*
|
|
|
|
|
Boolean. When enabled, foot will 'damage' the entire window each
|
|
|
|
|
time a frame has been rendered. This forces the compositor to
|
|
|
|
|
redraw the entire window. If disabled, foot will only 'damage'
|
|
|
|
|
updated rows.
|
|
|
|
|
|
|
|
|
|
There is normally *no* reason to enable this. However, it has been
|
|
|
|
|
seen to workaround an issue with _fractional scaling_ in _Gnome_.
|
|
|
|
|
|
|
|
|
|
Note that enabling this option is likely to increase CPU and/or
|
|
|
|
|
GPU usage (by the compositor, not by foot), and may have a
|
|
|
|
|
negative impact on battery life.
|
|
|
|
|
|
2020-11-13 17:49:23 +01:00
|
|
|
Default: _no_.
|
2020-09-06 17:52:07 +02:00
|
|
|
|
2020-08-20 19:25:35 +02:00
|
|
|
*grapheme-shaping*
|
|
|
|
|
Boolean. When enabled, foot will use _utf8proc_ to do grapheme
|
|
|
|
|
cluster segmentation while parsing "printed" text. Then, when
|
|
|
|
|
rendering, it will use _fcft_ (if compiled with _HarfBuzz_
|
|
|
|
|
support) to shape the grapheme clusters.
|
|
|
|
|
|
|
|
|
|
This is required to render e.g. flag (emoji) sequences, keycap
|
|
|
|
|
sequences, modifier sequences, zero-width-joiner (ZWJ) sequences
|
2021-06-24 10:10:38 +02:00
|
|
|
andn emoji tag sequences. It might also improve rendering of
|
|
|
|
|
composed characters, depending on font.
|
2020-08-20 19:25:35 +02:00
|
|
|
|
2021-06-24 10:10:38 +02:00
|
|
|
This is an experimental feature with the following requirements
|
|
|
|
|
and limitations:
|
2020-08-20 19:25:35 +02:00
|
|
|
|
|
|
|
|
- foot must have been compiled with utf8proc support
|
|
|
|
|
- fcft must have been compiled with HarfBuzz support
|
|
|
|
|
- This option must be set to true
|
|
|
|
|
- Foot will use *wcswidth*(3) to calculate a cluster's display
|
|
|
|
|
width. This will typically _not_ match the shaped glyph's width,
|
|
|
|
|
but is necessary to not break cursor synchronization with the
|
|
|
|
|
application running in foot.
|
|
|
|
|
|
2021-06-30 18:00:33 +02:00
|
|
|
See also: *grapheme-width-method*.
|
|
|
|
|
|
2020-08-20 19:25:35 +02:00
|
|
|
Default: _no_
|
|
|
|
|
|
2021-06-30 18:00:33 +02:00
|
|
|
*grapheme-width-method*
|
|
|
|
|
Selects which method to use when calculating the width
|
2021-07-01 08:00:23 +02:00
|
|
|
(i.e. number of columns) of a grapheme cluster. One of
|
|
|
|
|
*double-width* and *wcswidth*.
|
2021-06-30 18:00:33 +02:00
|
|
|
|
|
|
|
|
*wcswidth* simply adds together the individual width of all
|
|
|
|
|
codepoints making up the cluster.
|
|
|
|
|
|
2021-07-01 08:00:23 +02:00
|
|
|
*double-width* does the same, but limits the maximum number of
|
2021-06-30 18:00:33 +02:00
|
|
|
columns to 2. This is more correct, but is likely to break
|
|
|
|
|
applications since applications typically use *wcswidth*(3)
|
|
|
|
|
internally to calculate the width. This results in cursor
|
|
|
|
|
de-synchronization issues.
|
|
|
|
|
|
2021-07-01 08:00:23 +02:00
|
|
|
Default: _double-width_
|
2021-06-30 18:00:33 +02:00
|
|
|
|
2020-03-30 17:31:31 +02:00
|
|
|
*max-shm-pool-size-mb*
|
2021-05-05 09:12:43 +02:00
|
|
|
This option controls the amount of virtual address space used by
|
|
|
|
|
the pixmap memory to which the terminal screen content is
|
|
|
|
|
rendered.
|
2020-03-30 17:31:31 +02:00
|
|
|
|
2021-05-05 09:12:43 +02:00
|
|
|
It does not change how much physical memory foot uses.
|
2020-03-30 17:31:31 +02:00
|
|
|
|
|
|
|
|
Foot uses a memory mapping trick to implement fast rendering of
|
2020-03-30 20:21:23 +02:00
|
|
|
interactive scrolling (typically, but applies to "slow" scrolling
|
|
|
|
|
in general). Example: holding down the 'up' or 'down' arrow key to
|
2020-03-30 17:31:31 +02:00
|
|
|
scroll in a text editor.
|
|
|
|
|
|
|
|
|
|
For this to work, it needs a large amount of virtual address
|
2021-05-05 09:12:43 +02:00
|
|
|
space. Again, note that this is not physical memory.
|
2020-03-30 17:31:31 +02:00
|
|
|
|
|
|
|
|
On a normal x64 based computer, each process has 128TB of virtual
|
|
|
|
|
address space, and newer ones have 64PB. This is an insane amount
|
|
|
|
|
and most applications do not use anywhere near that amount.
|
|
|
|
|
|
|
|
|
|
Each foot terminal window can allocate up to 2GB of virtual
|
|
|
|
|
address space. With 128TB of address space, that means a maximum
|
|
|
|
|
of 65536 windows in server/daemon mode (for 2GB). That should be
|
|
|
|
|
enough, yes?
|
2020-03-30 20:21:23 +02:00
|
|
|
|
2021-05-05 09:12:43 +02:00
|
|
|
However, the Wayland compositor also needs to allocate the same
|
2020-03-30 17:31:31 +02:00
|
|
|
amount of virtual address space. Thus, it has a slightly higher
|
|
|
|
|
chance of running out of address space since it needs to host
|
2021-05-05 09:12:43 +02:00
|
|
|
all running Wayland clients in the same way, at the same time.
|
2020-03-30 17:31:31 +02:00
|
|
|
|
|
|
|
|
In the off chance that this becomes a problem for you, you can
|
|
|
|
|
reduce the amount used with this option.
|
|
|
|
|
|
|
|
|
|
Or, for optimal performance, you can increase it to the maximum
|
|
|
|
|
allowed value, 2GB (but note that you most likely will not notice
|
|
|
|
|
any difference compared to the default value).
|
|
|
|
|
|
2020-09-06 09:34:58 +02:00
|
|
|
Setting it to 0 disables the feature.
|
|
|
|
|
|
2021-05-05 09:12:43 +02:00
|
|
|
Limitations:
|
|
|
|
|
- only supported on 64-bit architectures
|
|
|
|
|
- only supported on Linux
|
2020-03-30 20:21:23 +02:00
|
|
|
|
2020-03-30 17:31:31 +02:00
|
|
|
Default: _512_. Maximum allowed: _2048_ (2GB).
|
2020-07-27 20:06:54 +02:00
|
|
|
|
|
|
|
|
# SEE ALSO
|
|
|
|
|
|
|
|
|
|
*foot*(1), *footclient*(1)
|