Provided by: foot_1.11.0-2_amd64 bug

NAME

       foot.ini - configuration file for foot(1)

DESCRIPTION

       foot uses the standard unix configuration format, with section based key/value pairs. The default section
       is  usually  unnamed, i.e. not prefixed with a [section]. However it can also be explicitly named [main],
       say if it needs to be reopened after any of the other sections.

       foot will search for a configuration file in the following locations, in this order:

           •   XDG_CONFIG_HOME/foot/foot.ini~/.config/foot/foot.iniXDG_CONFIG_DIRS/foot/foot.ini

SECTION: main

       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
           Value to set the environment variable TERM to. Default: foot

       font, font-bold, font-italic, font-bold-italic
           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. Note that
           the font size is also affected by the dpi-aware option.

           Examples:
               •   Dina:weight=bold:slant=italic
               •   Courier New:size=12
               •   Fantasque Sans Mono:fontfeatures=ss01

           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.

           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.

           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.

           To disable bold and/or italic fonts, set e.g. font-bold to exactly the same value as font.

           Default: monospace:size=8 (font), not set (font-bold, font-italic, font-bold-italic).

       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, or start with ~/.
               •   Multiple include directives are allowed, but only one path per directive.
               •   Nested imports are allowed.

           Default: not set.

       line-height
           An absolute value, in points, that override line height from the font metrics.

           You can specify a height in pixels by using the px suffix: e.g. line-height=12px.

           See also: vertical-letter-offset.

           Default: not set.

       letter-spacing
           Spacing  between  letters,  in  points.  A positive value will increase the cell size, and a negative
           value shrinks it.

           You can specify a letter spacing in pixels by using the px suffix: e.g. letter-spacing=2px.

           See also: horizontal-letter-offset.

           Default: 0.

       horizontal-letter-offset, vertical-letter-offset
           Configure the horizontal and vertical offsets used when positioning glyphs within cells,  in  points,
           relative to the top left corner.

           To specify an offset in pixels, append px: e.g. horizontal-letter-offset=2px.

           Default: 0.

       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:

               •   No antialiasing effects where e.g. line endpoints appear dimmed down, or blurred.
               •   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 in out-of-place looking glyphs (for example, badly sized).

           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.

       dpi-aware
           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.

           In this mode, the monitor's scaling factor is ignored; doubling the scaling factor  will  not  double
           the font size.

           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 DPI if all monitors have  a  scaling
           factor  of  1.  If  at least one monitor as a scaling factor larger than 1 (regardless of whether the
           foot window is mapped on that monitor or not), fonts will be scaled using the scaling factor.

           Note that this option typically does not work with bitmap fonts, which only  contains  a  pre-defined
           set  of  sizes,  and  cannot  be dynamically scaled. Whichever size (of the available ones) that best
           matches the DPI or scaling factor, will be used.

           Also note that if the font size has been specified in pixels (:pixelsize=N, instead of :size=N),  DPI
           scaling  (dpi-aware=yes)  will  have no effect (the specified pixel size will be used as is). But, if
           the monitor's scaling factor is used to size the font (dpi-aware=no), the font's pixel size  will  be
           multiplied with the scaling factor.

           Default: auto

       pad
           Padding between border and glyphs, in pixels (subject to output 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.

       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 pause the fiddling for resize-delay-ms  milliseconds  is  the
           client updated.

           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.

       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
           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.

       initial-window-mode
           Initial window mode for each newly  spawned  window:  windowed,  maximized  or  fullscreen.  Default:
           windowed.

       title
           Initial window title. Default: foot.

       locked-title
           Boolean. If enabled, applications are not allowed to change the title at run-time. Default: no.

       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.

       bold-text-in-bright
           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  not  be
           brightened.

           Default: no.

       word-delimiters
           String of characters that act as word delimiters when selecting text. Note that whitespace characters
           are always word delimiters, regardless of this setting. Default: ,│`|:"'()[]{}<>

       notify
           Command  to  execute  to  display  a  notification.  ${title}  and  ${body} will be replaced with the
           notification's actual title and body (message content).

           ${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.

           Applications can trigger notifications in the following ways:

               •   OSC 777: \e]777;notify;<title>;<body>\e\\

           By default, notifications are inhibited if the foot window  has  keyboard  focus.  See  notify-focus-
           inhibit.

           Default: notify-send -a ${app-id} -i ${app-id} ${title} ${body}.

       notify-focus-inhibit
           Boolean. If enabled, foot will not display notifications if the terminal window has keyboard focus.

           Default: yes

       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.

SECTION: bell

       urgent
           When set to yes, foot will signal urgency to the  compositor  through  the  XDG  activation  protocol
           whenever BEL is received, and the window does NOT have keyboard foccus.

           If the compositor does not implement this protocol, the margins will be painted in red instead.

           Applications  can enable/disable this feature programmatically with the CSI ? 1042 h and CSI ? 1042 l
           escape sequences.

           Default: no

       notify
           When set to yes, foot will emit a desktop notification using the  command  specified  in  the  notify
           option  whenever  BEL is received. By default, bell notifications are shown only when the window does
           not have keyboard focus. See notify-focus-inhibit.

           Default: no

       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: no

SECTION: scrollback

       lines
           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.

       multiplier
           Amount to multiply mouse scrolling with. It is a decimal number, i.e. fractions are allowed. Default:
           3.0.

       indicator-position
           Configures  the  style  of  the  scrollback  position indicator. One of none, fixed or relative. none
           disables the indicator completely. fixed always renders the indicator near the top of the window, and
           relative renders the indicator at the position corresponding  to  the  current  scrollback  position.
           Default: relative.

       indicator-format
           Which  format to use when displaying the scrollback position indicator. Either percentage, line, or a
           custom fixed string. This option is ignored if indicator-position=none. Default: empty string.

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.

           If you change this option to include  the  letter  t,  you  should  also  change  the  default  [url-
           bindings].toggle-url-visible key binding to avoid a clash.

           Default: sadfjklewcmpgh.

       protocols
           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, irc, ircs.

       uri-characters
           Set  of  characters allowed in auto-detected URLs. Any character not included in this set constitutes
           an URL delimiter.

           Default: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'.

SECTION: cursor

       This section controls the cursor style and color. Note that applications can change these at runtime.

       style
           Configures the default cursor style, and is one of: block, beam or underline. Note that this  can  be
           overridden by applications. Default: block.

       blink
           Boolean. Enables blinking cursor. Note that this can be overridden by applications. Default: no.

       color
           Two  RRGGBB  values  (i.e.  plain  old  6-digit hex values, without prefix) 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.

       beam-thickness
           Thickness (width) of the beam 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. 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.

SECTION: mouse

       hide-when-typing
           Boolean. When enabled, the mouse cursor is hidden while typing. Default: no.

       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  escape  sequences  CSI  ?  1007  h
           (enable) and CSI ? 1007 l (disable).

           Default: yes.

SECTION: colors

       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.

       The colors are in RRGGBB format (i.e. plain old 6-digit hex values, without prefix). That is, they do not
       have an alpha component. You can configure the background transparency with the alpha option.

       foreground
           Default foreground color. This is the color used when no ANSI color is being used. Default: dcdccc.

       background
           Default background color. This is the color used when no ANSI color is being used. Default: 111111.

       regular0, regular1 .. regular7
           The eight basic ANSI colors (Black, Red, Green, Yellow, Blue, Magenta, Cyan, White). Default: 222222,
           cc9393, 7f9f7f, d0bf8f, 6ca0a3, dc8cc3, 93e0e3 and dcdccc (a variant of the zenburn theme).

       bright0, bright1 .. bright7
           The eight bright ANSI colors (Black, Red,  Green,  Yellow,  Blue,  Magenta,  Cyan,  White).  Default:
           666666, dca3a3, bfebbf, f0dfaf, 8cd0d3, fcace3, b3ffff and ffffff (a variant of the zenburn theme).

       dim0, dim1 .. dim7
           Custom  colors  to  use  with dimmed colors. Dimmed colors do not have an entry in the color palette.
           Applications emit them by combining a color value, and a "dim" attribute.

           By default, foot implements this by reducing the luminance of the current color. This  is  a  generic
           approach that applies to both colors from the 256-color palette, as well as 24-bit RGB colors.

           You can change this behavior by setting the dimN options. When set, foot will match the current color
           against the color palette, and if it matches one of the regularN colors, the corresponding dimN color
           will be used.

           If instead the current color matches one of the brightN colors, the corresponding regularn color will
           be used.

           If  the  current  color does not match any known colors, it is dimmed by reducing the luminance (i.e.
           the same behavior as if the dimN options are unconfigured). 24-bit RGB  colors  will  typically  fall
           into this category.

           Note  that  applications  can change the regularN and brighN colors at runtime. However, they have no
           way of changing the dimN colors. If an application has changed the regularN colors, foot  will  still
           use the corresponding dimN color, as configured in foot.ini.

           Default: not set.

       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.

       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.

       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.

       jump-labels
           Two color values specifying the foreground (text) and background colors to use  when  rendering  jump
           labels in URL mode. Default: regular0 regular3.

       scrollback-indicator
           Two  color  values  specifying the foreground (text) and background (indicator itself) colors for the
           scrollback indicator.

           Default: first regular color (black)  for  foreground,  and  fifth  bright  color  (light  blue)  for
           background.

       urls
           Color to use for the underline used to highlight URLs in URL mode. Default: regular3.

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.

       Note  that  unlike  the colors defined in the colors section, the color values here are in AARRGGBB (i.e.
       plain old 8-digit hex values) format. I.e.  they  contain  an  alpha  component  -  00  means  completely
       transparent, and ff fully opaque.

       Examples:

       •   ffffffff: white, fully opaque
       •   ff000000: black, fully opaque
       •   7fffffff: white, semi-transparent
       •   ff00ff00: green, fully opaque

       preferred
           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 server, or
           render SSDs despite client or none being set.

           Default: server.

       size
           Height, in pixels (subject to output scaling), of the titlebar. Default: 26.

       color
           Titlebar color. Default: use the default foreground color.

       font
           Font to use for the title bar. This is a list of fonts, similar to 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.

       border-width
           Width  of  the  border,  in  pixels (subject to output scaling). Note that the border encompasses the
           entire window, including the title bar. Default: 0.

       border-color
           Color of border. By default, the title bar color is used. If the title bar color has  not  been  set,
           the default foreground color (from the color scheme) is used. Default: titlebar color.

       button-width
           Width, in pixels (subject to output scaling), of the minimize/maximize/close buttons. Default: 26.

       button-color
           Foreground color on the minimize/maximize/close buttons. Default: use the default background color.

       button-minimize-color
           Minimize button's background color. Default: use the default regular4 color (blue).

       button-maximize-color
           Maximize button's background color. Default: use the default regular2 color (green).

       button-close-color
           Close button's background color. Default: use the default regular1 color (red).

SECTION: key-bindings

       This section lets you override the default key bindings.

       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 and the key
       must be valid XKB key names.

       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.

       Note that Alt is usually called Mod1.

       xkbcli interactive-wayland can be useful for finding keysym names.

       A  key  combination  can  only  be  mapped  to  one  action. Lets say you want to bind Control+Shift+R to
       fullscreen. Since this is the default shortcut for search-start, you first  need  to  unmap  the  default
       binding. This can be done by setting action=none; e.g. search-start=none.

       noop
           All key combinations listed here will not be sent to the application. Default: not bound.

       scrollback-up-page
           Scrolls up/back one page in history. Default: Shift+Page_Up.

       scrollback-up-half-page
           Scrolls up/back half of a page in history. Default: not bound.

       scrollback-up-line
           Scrolls up/back a single line in history. Default: not bound.

       scrollback-down-page
           Scroll down/forward one page in history. Default: Shift+Page_Down.

       scrollback-down-half-page
           Scroll down/forward half of a page in history. Default: not bound.

       scrollback-down-line
           Scroll down/forward a single line in history. Default: not bound.

       clipboard-copy
           Copies the current selection into the clipboard. Default: Control+Shift+c XF86Copy.

       clipboard-paste
           Pastes from the clipboard. Default: Control+Shift+v XF86Paste.

       primary-paste
           Pastes from the primary selection. Default: Shift+Insert (also defined in mouse-bindings).

       search-start
           Starts a scrollback/history search. Default: Control+Shift+r.

       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
           Spawns  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. Default: Control+Shift+n.

       minimize
           Minimizes the window. Default: not bound.

       maximize
           Toggle the maximized state. Default: not bound.

       fullscreen
           Toggles the fullscreen state. Default: not bound.

       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).

           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:
               pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r firefox"] Control+Print

           Default: not bound

       show-urls-launch
           Enter URL mode, where all currently visible URLs are tagged with a jump label  with  a  key  sequence
           that will open the URL. Default: Control+Shift+u.

       show-urls-copy
           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 clipboard. Default: none.

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 selection is not updated. Default:
           Control+g Control+c Escape.

       commit
           Exit search mode and copy current selection into the primary selection. Viewport is not restored.  To
           copy the selection to the regular clipboard, use Control+Shift+c. Default: Return.

       find-prev
           Search backwards in the scrollback history for the next match. Default: Control+r.

       find-next
           Searches forwards in the scrollback history for the next 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 right. Default: Control+Right Mod1+f.

       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
           Deletes the word after the cursor. Default: Mod1+d 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: Control+Shift+w.

       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.

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.

       Be careful; do not use single-letter keys that are also used in [url].label-letters,  as  doing  so  will
       make some URLs inaccessible.

       cancel
           Exits URL mode without opening an URL. Default: Control+g Control+c Control+d Escape.

       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.

           Default: t.

SECTION: mouse-bindings

       This section lets you override the default mouse bindings.

       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+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.

       The trailing COUNT is optional and specifies the click count required to trigger the binding. The default
       if COUNT is omitted is 1.

       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.

       selection-override-modifiers
           The modifiers set in this set (which may be set to any combination of modifiers, e.g. mod1+mod2+mod3,
           as  well  as  none) are used to enable selecting text with the mouse irrespective of whether a client
           application currently has the mouse grabbed. These modifiers cannot be used  as  modifiers  in  mouse
           bindings.  Because  the  order  of bindings is significant, it is best to set this prior to any other
           mouse bindings that might use modifiers in the default set. Default: Shift

       The actions to which mouse combos can be bound are listed below. All actions  listed  under  key-bindings
       can be used here as well.

       select-begin
           Begin an interactive selection. The selection is finalized, and copied to the primary selection, when
           the button is 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.

       select-word
           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.

       select-word-whitespace
           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.

       select-row
           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.

       primary-paste
           Pastes from the primary selection. Default: BTN_MIDDLE.

TWEAK

       This  section  is for advanced users and describes configuration options 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.

       Note that these options may change, or be removed at any time, without prior notice.

       When reporting bugs, please mention if, and to what, you have changed any of these options.

       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.

       overflowing-glyphs
           Boolean. When enabled, glyphs wider than their cell(s) are allowed  to  render  into  one  additional
           neighbouring cell.

           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".

           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.

           Note: might impact performance depending on the font used. Especially small font sizes can cause many
           overflowing glyphs because of subpixel rendering.

           Default: yes.

       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.

       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.

       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.

       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.

           If  a  client  splits  up  a  screen  update over multiple write(3) calls, we may end up rendering an
           intermediate frame, quickly 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
           delay we introduce is so small that the risk of pushing the frame over to the next frame interval  is
           also very small.

           Now, that was a lot of text. But what is it foot actually does?

           When  receiving client data, it schedules a timer, the delayed-render-lower. If we do not receive any
           more client data 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).

           You  can  disable  the  feature  altogether  by  setting  either value to 0. In this case, frames are
           rendered "as soon as possible".

           Default: lower=500000 (0.5ms), upper=8333333 (8.3ms - half a frame interval).

       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.

           Default: no.

       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  and  emoji tag sequences. It might also improve rendering of composed
           characters, depending on font.

               •   foot must have been compiled with utf8proc support
               •   fcft must have been compiled with HarfBuzz support

           See also: grapheme-width-method.

           Default: yes

       grapheme-width-method
           Selects which method to use when calculating the  width  (i.e.  number  of  columns)  of  a  grapheme
           cluster. One of wcswidth, double-width and max.

           wcswidth simply adds together the individual width of all codepoints making up the cluster.

           double-width  does the same, but limits the maximum number of columns to 2. This is more correct, but
           may break some applications since applications typically use wcswidth(3) internally to calculate  the
           width. This results in cursor de-synchronization issues.

           max uses the width of the largest codepoint in the cluster.

           Default: wcswidth

       font-monospace-warn
           Boolean.  When  enabled,  foot  will  use heuristics to try to verify the primary font is a monospace
           font, and warn if it is not.

           Disable this if you still want to use the font, even if foot thinks it is not monospaced.

           You may also want to disable it to get slightly faster startup times.

           Default: yes

       max-shm-pool-size-mb
           This option controls the amount of virtual address space used by  the  pixmap  memory  to  which  the
           terminal screen content is rendered.

           It does not change how much physical memory foot uses.

           Foot uses a memory mapping trick to implement fast rendering of interactive scrolling (typically, but
           applies to "slow" scrolling in general). Example: holding down the 'up' or 'down' arrow key to scroll
           in a text editor.

           For  this  to  work,  it  needs a large amount of virtual address space. Again, note that this is not
           physical memory.

           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?

           However,  the  Wayland  compositor  also  needs to allocate the same amount of virtual address space.
           Thus, it has a slightly higher chance of running out of address space since  it  needs  to  host  all
           running Wayland clients in the same way, at the same time.

           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).

           Setting it to 0 disables the feature.

           Limitations:
               •   only supported on 64-bit architectures
               •   only supported on Linux

           Default: 512. Maximum allowed: 2048 (2GB).

SEE ALSO

       foot(1), footclient(1)

                                                   2022-02-21                                        foot.ini(5)