1foot.ini(5)                   File Formats Manual                  foot.ini(5)
2
3
4

NAME

6       foot.ini - configuration file for foot(1)
7

DESCRIPTION

9       foot uses the standard unix configuration format, with section based
10       key/value pairs. The default section is usually unnamed, i.e. not pre‐
11       fixed with a [section]. However it can also be explicitly named [main],
12       say if it needs to be reopened after any of the other sections.
13
14       foot will search for a configuration file in the following locations,
15       in this order:
16
17XDG_CONFIG_HOME/foot/foot.ini
18~/.config/foot/foot.ini
19XDG_CONFIG_DIRS/foot/foot.ini
20
21

SECTION: main

23       shell
24           Executable to launch. Typically a shell. Default: $SHELL if set,
25           otherwise the user's default shell (as specified in /etc/passwd).
26           You can also pass arguments. For example /bin/bash --norc.
27
28       login-shell
29           Boolean. If enabled, the shell will be launched as a login shell,
30           by prepending a '-' to argv[0]. Default: no.
31
32       term
33           Value to set the environment variable TERM to. Default: foot
34
35       font, font-bold, font-italic, font-bold-italic
36           Comma separated list of fonts to use, in fontconfig format. That
37           is, a font name followed by a list of colon-separated options. Most
38           noteworthy is :size=n, which is used to set the font size. Note
39           that the font size is also affected by the dpi-aware option.
40
41           Examples:
42               •   Dina:weight=bold:slant=italic
43               •   Courier New:size=12
44               •   Fantasque Sans Mono:fontfeatures=ss01
45
46
47           For each option, the first font is the primary font. The remaining
48           fonts are fallback fonts that will be used whenever a glyph cannot
49           be found in the primary font.
50
51           The fallback fonts are searched in the order they appear. If a
52           glyph cannot be found in any of the fallback fonts, the dynamic
53           fallback list from fontconfig (for the primary font) is searched.
54
55           font-bold, font-italic and font-bold-italic allow custom fonts to
56           be used for bold/italic/bold+italic fonts. If left unconfigured,
57           the bold/italic variants of the regular font(s) specified in font
58           are used. Note: you may have to tweak the size(s) of the custom
59           bold/italic fonts to match the regular font.
60
61           To disable bold and/or italic fonts, set e.g. font-bold to exactly
62           the same value as font.
63
64           Default: monospace:size=8 (font), not set (font-bold, font-italic,
65           font-bold-italic).
66
67       include
68           Absolute path to configuration file to import.
69
70           The import file has its own section scope. I.e. the including con‐
71           figuration is still in the default section after the include, re‐
72           gardless of which section the included file ends in.
73
74               •   The path must be an absolute path, or start with ~/.
75               •   Multiple include directives are allowed, but only one path
76                   per directive.
77               •   Nested imports are allowed.
78
79
80           Default: not set.
81
82       line-height
83           An absolute value, in points, that override line height from the
84           font metrics.
85
86           You can specify a height in pixels by using the px suffix: e.g.
87           line-height=12px.
88
89           See also: vertical-letter-offset.
90
91           Default: not set.
92
93       letter-spacing
94           Spacing between letters, in points. A positive value will increase
95           the cell size, and a negative value shrinks it.
96
97           You can specify a letter spacing in pixels by using the px suffix:
98           e.g. letter-spacing=2px.
99
100           See also: horizontal-letter-offset.
101
102           Default: 0.
103
104       horizontal-letter-offset, vertical-letter-offset
105           Configure the horizontal and vertical offsets used when positioning
106           glyphs within cells, in points, relative to the top left corner.
107
108           To specify an offset in pixels, append px: e.g. horizontal-letter-
109           offset=2px.
110
111           Default: 0.
112
113       underline-offset
114           Use a custom offset for underlines. The offset is, by default, in
115           points and relative the font's baseline. A positive value positions
116           the underline under the baseline, while a negative value positions
117           it above the baseline.
118
119           To specify an offset in pixels, append px: underline-offset=2px.
120
121           If left unset (the default), the offset specified in the font is
122           used, or estimated by foot if the font lacks underline positioning
123           information.
124
125           Default: unset.
126
127       box-drawings-uses-font-glyphs Boolean. When disabled, foot generates
128           box/line drawing characters itself. The are several advantages to
129           doing this instead of using font glyphs:
130
131               •   No antialiasing effects where e.g. line endpoints appear
132                   dimmed down, or blurred.
133               •   Line- and box characters are guaranteed to span the entire
134                   cell, resulting in a gap-less appearance.
135               •   No alignment issues, i.e. lines are centered when they
136                   should be.
137               •   Many fonts lack some, or all, of the line- and box drawing
138                   characters, causing fallback fonts to be used, which re‐
139                   sults in out-of-place looking glyphs (for example, badly
140                   sized).
141
142
143           When enabled, box/line drawing characters are rendered using font
144           glyphs. This may result in a more uniform look, in some use cases.
145
146           Default: no.
147
148       dpi-aware
149           auto, yes, or no.
150
151           When set to yes, fonts are sized using the monitor's DPI, making a
152           font of a given size have the same physical size, regardless of
153           monitor. In other words, if you drag a foot window between differ‐
154           ent monitors, the font size remains the same.
155
156           In this mode, the monitor's scaling factor is ignored; doubling the
157           scaling factor will not double the font size.
158
159           When set to no, the monitor's DPI is ignored. The font is instead
160           sized using the monitor's scaling factor; doubling the scaling fac‐
161           tor does double the font size.
162
163           Finally, if set to auto, fonts will be sized using the monitor's
164           DPI if all monitors have a scaling factor of 1. If at least one
165           monitor as a scaling factor larger than 1 (regardless of whether
166           the foot window is mapped on that monitor or not), fonts will be
167           scaled using the scaling factor.
168
169           Note that this option typically does not work with bitmap fonts,
170           which only contains a pre-defined set of sizes, and cannot be dy‐
171           namically scaled. Whichever size (of the available ones) that best
172           matches the DPI or scaling factor, will be used.
173
174           Also note that if the font size has been specified in pixels (:pix‐
175           elsize=N, instead of :size=N), DPI scaling (dpi-aware=yes) will
176           have no effect (the specified pixel size will be used as is). But,
177           if the monitor's scaling factor is used to size the font (dpi-
178           aware=no), the font's pixel size will be multiplied with the scal‐
179           ing factor.
180
181           Default: auto
182
183       pad
184           Padding between border and glyphs, in pixels (subject to output
185           scaling), on the form XxY.
186
187           This will add at least X pixels on both the left and right sides,
188           and Y pixels on the top and bottom sides. The grid content will be
189           anchored in the top left corner. I.e. if the window manager forces
190           an odd window size on foot, the additional pixels will be added to
191           the right and bottom sides.
192
193           To instead center the grid content, append center (e.g. pad=5x5
194           center).
195
196           Default: 2x2.
197
198       resize-delay-ms
199           Time, in milliseconds, of "idle time" before foot sends the new
200           window dimensions to the client application while doing an interac‐
201           tive resize of a foot window. Idle time in this context is a period
202           of time where the window size is not changing.
203
204           In other words, while you are fiddling with the window size, foot
205           does not send the updated dimensions to the client. Only when you
206           pause the fiddling for resize-delay-ms milliseconds is the client
207           updated.
208
209           Emphasis is on while here; as soon as the interactive resize ends
210           (i.e. when you let go of the window border), the final dimensions
211           is sent to the client, without any delays.
212
213           Setting it to 0 disables the delay completely.
214
215           Default: 100.
216
217       initial-window-size-pixels
218           Initial window width and height in pixels (subject to output scal‐
219           ing), on the form WIDTHxHEIGHT. The height includes the titlebar
220           when using CSDs. Mutually exclusive to initial-window-size-chars.
221           Default: 700x500.
222
223       initial-window-size-chars
224           Initial window width and height in characters, on the form WIDTHx‐
225           HEIGHT. Mutually exclusive to initial-window-size-pixels.'
226
227           Note that if you have a multi-monitor setup, with different scaling
228           factors, there is a possibility the window size will not be set
229           correctly. If that is the case, use initial-window-size-pixels in‐
230           stead.
231
232           Default: not set.
233
234       initial-window-mode
235           Initial window mode for each newly spawned window: windowed, maxi‐
236           mized or fullscreen. Default: windowed.
237
238       title
239           Initial window title. Default: foot.
240
241       locked-title
242           Boolean. If enabled, applications are not allowed to change the ti‐
243           tle at run-time. Default: no.
244
245       app-id
246           Value to set the app-id property on the Wayland window to. The com‐
247           positor can use this value to e.g. group multiple windows, or apply
248           window management rules. Default: foot.
249
250       bold-text-in-bright
251           Semi-boolean. When enabled, bold text is rendered in a brighter
252           color (in addition to using a bold font). The color is brightened
253           by increasing its luminance.
254
255           If set to palette-based, rather than a simple yes|true, colors
256           matching one of the 8 regular palette colors will be brightened us‐
257           ing the corresponding bright palette color. Other colors will not
258           be brightened.
259
260           Default: no.
261
262       word-delimiters
263           String of characters that act as word delimiters when selecting
264           text. Note that whitespace characters are always word delimiters,
265           regardless of this setting. Default: ,│`|:"'()[]{}<>
266
267       notify
268           Command to execute to display a notification. ${title} and ${body}
269           will be replaced with the notification's actual title and body
270           (message content).
271
272           ${app-id} is replaced with the value of the command line option
273           --app-id, and defaults to foot.
274
275           ${window-title} is replaced with the current window title.
276
277           Applications can trigger notifications in the following ways:
278
279               •   OSC 777: \e]777;notify;<title>;<body>\e\\
280
281
282           By default, notifications are inhibited if the foot window has key‐
283           board focus. See notify-focus-inhibit.
284
285           Default: notify-send -a ${app-id} -i ${app-id} ${title} ${body}.
286
287       notify-focus-inhibit
288           Boolean. If enabled, foot will not display notifications if the
289           terminal window has keyboard focus.
290
291           Default: yes
292
293       selection-target
294           Clipboard target to automatically copy selected text to. One of
295           none, primary, clipboard or both. Default: primary.
296
297       workers
298           Number of threads to use for rendering. Set to 0 to disable multi‐
299           threading. Default: the number of available logical CPUs (including
300           SMT). Note that this is not always the best value. In some cases,
301           the number of physical cores is better.
302

SECTION: bell

304       urgent
305           When set to yes, foot will signal urgency to the compositor through
306           the XDG activation protocol whenever BEL is received, and the win‐
307           dow does NOT have keyboard foccus.
308
309           If the compositor does not implement this protocol, the margins
310           will be painted in red instead.
311
312           Applications can enable/disable this feature programmatically with
313           the CSI ? 1042 h and CSI ? 1042 l escape sequences.
314
315           Default: no
316
317       notify
318           When set to yes, foot will emit a desktop notification using the
319           command specified in the notify option whenever BEL is received. By
320           default, bell notifications are shown only when the window does not
321           have keyboard focus. See notify-focus-inhibit.
322
323           Default: no
324
325       command
326           When set, foot will execute this command when BEL is received. De‐
327           fault: none
328
329       command-focused
330           Whether to run the command on BEL even while focused. Default: no
331

SECTION: scrollback

333       lines
334           Number of scrollback lines. The maximum number of allocated lines
335           will be this value plus the number of visible lines, rounded up to
336           the nearest power of 2. Default: 1000.
337
338       multiplier
339           Amount to multiply mouse scrolling with. It is a decimal number,
340           i.e. fractions are allowed. Default: 3.0.
341
342       indicator-position
343           Configures the style of the scrollback position indicator. One of
344           none, fixed or relative. none disables the indicator completely.
345           fixed always renders the indicator near the top of the window, and
346           relative renders the indicator at the position corresponding to the
347           current scrollback position. Default: relative.
348
349       indicator-format
350           Which format to use when displaying the scrollback position indica‐
351           tor. Either percentage, line, or a custom fixed string. This option
352           is ignored if indicator-position=none. Default: empty string.
353

SECTION: url

355       launch
356           Command to execute when opening URLs. ${url} will be replaced with
357           the actual URL. Default: xdg-open ${url}.
358
359       osc8-underline
360           When to underline OSC-8 URLs. Possible values are url-mode and al‐
361           ways.
362
363           When set to url-mode, OSC-8 URLs are only highlighted in URL mode,
364           just like auto-detected URLs.
365
366           When set to always, OSC-8 URLs are always highlighted, regardless
367           of their other attributes (bold, italic etc). Note that this does
368           not make them clickable.
369
370           Default: url-mode
371
372       label-letters
373           String of characters to use when generating key sequences for URL
374           jump labels.
375
376           If you change this option to include the letter t, you should also
377           change the default [url-bindings].toggle-url-visible key binding to
378           avoid a clash.
379
380           Default: sadfjklewcmpgh.
381
382       protocols
383           Comma separated list of protocols (schemes) that should be recog‐
384           nized in URL mode. Note that only auto-detected URLs are affected
385           by this option. OSC-8 URLs are always enabled, regardless of proto‐
386           col. Default: http, https, ftp, ftps, file, gemini, gopher.
387
388       uri-characters
389           Set of characters allowed in auto-detected URLs. Any character not
390           included in this set constitutes an URL delimiter.
391
392           Default: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU‐
393           VWXYZ0123456789-_.,~:;/?#@!$&%*+="'.
394

SECTION: cursor

396       This section controls the cursor style and color. Note that applica‐
397       tions can change these at runtime.
398
399       style
400           Configures the default cursor style, and is one of: block, beam or
401           underline. Note that this can be overridden by applications. De‐
402           fault: block.
403
404       blink
405           Boolean. Enables blinking cursor. Note that this can be overridden
406           by applications. Default: no.
407
408       color
409           Two RRGGBB values (i.e. plain old 6-digit hex values, without pre‐
410           fix) specifying the foreground (text) and background (cursor) col‐
411           ors for the cursor.
412
413           Default: inversed foreground and background colors.
414
415           Note that this value only applies to the block cursor. The other
416           cursor styles are always rendered with the foreground color.
417
418       beam-thickness
419           Thickness (width) of the beam styled cursor. The value is in
420           points, and its exact value thus depends on the monitor's DPI. To
421           instead specify a thickness in pixels, use the px suffix: e.g.
422           beam-thickness=2px. Default: 1.5
423
424       underline-thickness
425           Thickness (height) of the underline styled cursor. The value is in
426           points, and its exact value thus depends on the monitor's DPI.
427
428           To instead specify a thickness in pixels, use the px suffix: e.g.
429           underline-thickness=2px.
430
431           Note that if left unset, the cursor's thickness will scale with the
432           font size, while if set, the size is fixed.
433
434           Default: font underline thickness.
435

SECTION: mouse

437       hide-when-typing
438           Boolean. When enabled, the mouse cursor is hidden while typing. De‐
439           fault: no.
440
441       alternate-scroll-mode
442           Boolean. This option controls the initial value for the alternate
443           scroll mode. When this mode is enabled, mouse scroll events are
444           translated to up/down key events when displaying the alternate
445           screen.
446
447           This lets you scroll with the mouse in e.g. pagers (like less)
448           without enabling native mouse support in them.
449
450           Alternate scrolling is not used if the application enables native
451           mouse support.
452
453           This option can be modified by applications at run-time using the
454           escape sequences CSI ? 1007 h (enable) and CSI ? 1007 l (disable).
455
456           Default: yes.
457

SECTION: colors

459       This section controls the 16 ANSI colors, the default foreground and
460       background colors, and the extended 256 color palette. Note that appli‐
461       cations can change these at runtime.
462
463       The colors are in RRGGBB format (i.e. plain old 6-digit hex values,
464       without prefix). That is, they do not have an alpha component. You can
465       configure the background transparency with the alpha option.
466
467       foreground
468           Default foreground color. This is the color used when no ANSI color
469           is being used. Default: dcdccc.
470
471       background
472           Default background color. This is the color used when no ANSI color
473           is being used. Default: 111111.
474
475       regular0, regular1 .. regular7
476           The eight basic ANSI colors. Default: 222222, cc9393, 7f9f7f,
477           d0bf8f, 6ca0a3, dc8cc3, 93e0e3 and dcdccc (a variant of the zenburn
478           theme).
479
480       bright0, bright1 .. bright7
481           The eight bright ANSI colors. Default: 666666, dca3a3, bfebbf,
482           f0dfaf, 8cd0d3, fcace3, b3ffff and ffffff (a variant of the zenburn
483           theme).
484
485       dim0, dim1 .. dim7
486           Custom colors to use with dimmed colors. Dimmed colors do not have
487           an entry in the color palette. Applications emit them by combining
488           a color value, and a "dim" attribute.
489
490           By default, foot implements this by reducing the luminance of the
491           current color. This is a generic approach that applies to both col‐
492           ors from the 256-color palette, as well as 24-bit RGB colors.
493
494           You can change this behavior by setting the dimN options. When set,
495           foot will match the current color against the color palette, and if
496           it matches one of the regularN colors, the corresponding dimN color
497           will be used.
498
499           If instead the current color matches one of the brightN colors, the
500           corresponding regularn color will be used.
501
502           If the current color does not match any known colors, it is dimmed
503           by reducing the luminance (i.e. the same behavior as if the dimN
504           options are unconfigured). 24-bit RGB colors will typically fall
505           into this category.
506
507           Note that applications can change the regularN and brighN colors at
508           runtime. However, they have no way of changing the dimN colors. If
509           an application has changed the regularN colors, foot will still use
510           the corresponding dimN color, as configured in foot.ini.
511
512           Default: not set.
513
514       0 .. 255
515           Arbitrary colors in the 256-color palette. Default: for 0 .. 15,
516           see regular and bright defaults above; see
517           https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for an expla‐
518           nation of the remainder.
519
520       alpha
521           Background translucency. A value in the range 0.0-1.0, where 0.0
522           means completely transparent, and 1.0 is opaque. Default: 1.0.
523
524       selection-foreground, selection-background
525           Foreground (text) and background color to use in selected text.
526           Note that both options must be set, or the default will be used.
527           Default: inverse foreground/background.
528
529       jump-labels
530           To color values specifying the foreground (text) and background
531           colors to use when rendering jump labels in URL mode. Default: reg‐
532           ular0 regular3.
533
534       scrollback-indicator
535           Two color values specifying the foreground (text) and background
536           (indicator itself) colors for the scrollback indicator.
537
538           Default: first regular color (black) for foreground, and fifth
539           bright color (light blue) for background.
540
541       urls
542           Color to use for the underline used to highlight URLs in URL mode.
543           Default: regular3.
544

SECTION: csd

546       This section controls the look of the CSDs (Client Side Decorations).
547       Note that the default is to not use CSDs, but instead to use SSDs
548       (Server Side Decorations) when the compositor supports it.
549
550       Note that unlike the colors defined in the colors section, the color
551       values here are in AARRGGBB (i.e. plain old 8-digit hex values) format.
552       I.e. they contain an alpha component - 00 means completely transparent,
553       and ff fully opaque.
554
555       Examples:
556
557       •   ffffffff: white, fully opaque
558       •   ff000000: black, fully opaque
559       •   7fffffff: white, semi-transparent
560       •   ff00ff00: green, fully opaque
561
562
563       preferred
564           Which type of window decorations to prefer: client (CSD), server
565           (SSD) or none.
566
567           Note that this is only a hint to the compositor. Depending on com‐
568           positor support, and how it has been configured, it may instruct
569           foot to use CSDs even though this option has been set to server, or
570           render SSDs despite client or none being set.
571
572           Default: server.
573
574       size
575           Height, in pixels (subject to output scaling), of the titlebar. De‐
576           fault: 26.
577
578       color
579           Titlebar color. Default: use the default foreground color.
580
581       font
582           Font to use for the title bar. This is a list of fonts, similar to
583           the main font option. Note that the font will be sized using the
584           title bar size. That is, all :size and :pixelsize attributes will
585           be ignored. Default: primary font.
586
587       border-width
588           Width of the border, in pixels (subject to output scaling). Note
589           that the border encompasses the entire window, including the title
590           bar. Default: 0.
591
592       border-color
593           Color of border. By default, the title bar color is used. If the
594           title bar color has not been set, the default foreground color
595           (from the color scheme) is used. Default: titlebar color.
596
597       button-width
598           Width, in pixels (subject to output scaling), of the minimize/maxi‐
599           mize/close buttons. Default: 26.
600
601       button-color
602           Foreground color on the minimize/maximize/close buttons. Default:
603           use the default background color.
604
605       button-minimize-color
606           Minimize button's background color. Default: use the default regu‐
607           lar4 color (blue).
608
609       button-maximize-color
610           Maximize button's background color. Default: use the default regu‐
611           lar2 color (green).
612
613       button-close-color
614           Close button's background color. Default: use the default regular1
615           color (red).
616

SECTION: key-bindings

618       This section lets you override the default key bindings.
619
620       The general format is action=combo1...comboN. That is, each action may
621       have one or more key combinations, space separated. Each combination is
622       on the form mod1+mod2+key. The names of the modifiers and the key must
623       be valid XKB key names.
624
625       Note that if Shift is one of the modifiers, the key must not be in up‐
626       per case. For example, Control+Shift+V will never trigger, but Con‐
627       trol+Shift+v will.
628
629       Note that Alt is usually called Mod1.
630
631       xkbcli interactive-wayland can be useful for finding keysym names.
632
633       A key combination can only be mapped to one action. Lets say you want
634       to bind Control+Shift+R to fullscreen. Since this is the default short‐
635       cut for search-start, you first need to unmap the default binding. This
636       can be done by setting action=none; e.g. search-start=none.
637
638       noop
639           All key combinations listed here will not be sent to the applica‐
640           tion. Default: not bound.
641
642       scrollback-up-page
643           Scrolls up/back one page in history. Default: Shift+Page_Up.
644
645       scrollback-up-half-page
646           Scrolls up/back half of a page in history. Default: not bound.
647
648       scrollback-up-line
649           Scrolls up/back a single line in history. Default: not bound.
650
651       scrollback-down-page
652           Scroll down/forward one page in history. Default: Shift+Page_Down.
653
654       scrollback-down-half-page
655           Scroll down/forward half of a page in history. Default: not bound.
656
657       scrollback-down-line
658           Scroll down/forward a single line in history. Default: not bound.
659
660       clipboard-copy
661           Copies the current selection into the clipboard. Default: Con‐
662           trol+Shift+c.
663
664       clipboard-paste
665           Pastes from the clipboard. Default: Control+Shift+v.
666
667       primary-paste
668           Pastes from the primary selection. Default: Shift+Insert (also de‐
669           fined in mouse-bindings).
670
671       search-start
672           Starts a scrollback/history search. Default: Control+Shift+r.
673
674       font-increase
675           Increases the font size by 0.5pt. Default: Control+plus Con‐
676           trol+equal Control+KP_Add.
677
678       font-decrease
679           Decreases the font size by 0.5pt. Default: Control+minus Con‐
680           trol+KP_Subtract.
681
682       font-reset
683           Resets the font size to the default. Default: Control+0 Con‐
684           trol+KP_0.
685
686       spawn-terminal
687           Spawns a new terminal. If the shell has been configured to emit the
688           OSC 7 escape sequence, the new terminal will start in the current
689           working directory. Default: Control+Shift+n.
690
691       minimize
692           Minimizes the window. Default: not bound.
693
694       maximize
695           Toggle the maximized state. Default: not bound.
696
697       fullscreen
698           Toggles the fullscreen state. Default: not bound.
699
700       pipe-visible, pipe-scrollback, pipe-selected
701           Pipes the currently visible text, the entire scrollback, or the
702           currently selected text to an external tool. The syntax for this
703           option is a bit special; the first part of the value is the command
704           to execute enclosed in "[]", followed by the binding(s).
705
706           You can configure multiple pipes as long as the command strings are
707           different and the key bindings are unique.
708
709           Note that the command is not automatically run inside a shell; use
710           sh -c "command line" if you need that.
711
712           Example:
713               pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r
714               firefox"] Control+Print
715
716           Default: not bound
717
718       show-urls-launch
719           Enter URL mode, where all currently visible URLs are tagged with a
720           jump label with a key sequence that will open the URL. Default:
721           Control+Shift+u.
722
723       show-urls-copy
724           Enter URL mode, where all currently visible URLs are tagged with a
725           jump label with a key sequence that will place the URL in the clip‐
726           board. Default: none.
727

SECTION: search-bindings

729       This section lets you override the default key bindings used in scroll‐
730       back search mode. The syntax is exactly the same as the regular key-
731       bindings.
732
733       cancel
734           Aborts the search. The viewport is restored and the primary selec‐
735           tion is not updated. Default: Control+g Control+c Escape.
736
737       commit
738           Exit search mode and copy current selection into the primary selec‐
739           tion. Viewport is not restored. To copy the selection to the regu‐
740           lar clipboard, use Control+Shift+c. Default: Return.
741
742       find-prev
743           Search backwards in the scrollback history for the next match. De‐
744           fault: Control+r.
745
746       find-next
747           Searches forwards in the scrollback history for the next match. De‐
748           fault: Control+s.
749
750       cursor-left
751           Moves the cursor in the search box one character to the left. De‐
752           fault: Left Control+b.
753
754       cursor-left-word
755           Moves the cursor in the search box one word to the left. Default:
756           Control+Left Mod1+b.
757
758       cursor-right
759           Moves the cursor in the search box one character to the right. De‐
760           fault: Right Control+f.
761
762       cursor-right-word
763           Moves the cursor in the search box one word to the right. Default:
764           Control+Right Mod1+f.
765
766       cursor-home
767           Moves the cursor in the search box to the beginning of the input.
768           Default: Home Control+a.
769
770       cursor-end
771           Moves the cursor in the search box to the end of the input. De‐
772           fault: End Control+e.
773
774       delete-prev
775           Deletes the character before the cursor. Default: BackSpace.
776
777       delete-prev-word
778           Deletes the word before the cursor. Default: Mod1+BackSpace Con‐
779           trol+BackSpace.
780
781       delete-next
782           Deletes the character after the cursor. Default: Delete.
783
784       delete-next-word
785           Deletes the word after the cursor. Default: Mod1+d Control+Delete.
786
787       extend-to-word-boundary
788           Extend current selection to the next word boundary. Default: Con‐
789           trol+w.
790
791       extend-to-next-whitespace
792           Extend the current selection to the next whitespace. Default: Con‐
793           trol+Shift+w.
794
795       clipboard-paste
796           Paste from the clipboard into the search buffer. Default: Control+v
797           Control+y.
798
799       primary-paste
800           Paste from the primary selection into the search buffer. Default:
801           Shift+Insert.
802

SECTION: url-bindings

804       This section lets you override the default key bindings used in URL
805       mode. The syntax is exactly the same as the regular key-bindings.
806
807       Be careful; do not use single-letter keys that are also used in
808       [url].label-letters, as doing so will make some URLs inaccessible.
809
810       cancel
811           Exits URL mode without opening an URL. Default: Control+g Control+c
812           Control+d Escape.
813
814       toggle-url-visible
815           By default, the jump label only shows the key sequence required to
816           activate it. This is fine as long as the URL is visible in the
817           original text.
818
819           But with e.g. OSC-8 URLs (the terminal version of HTML anchors,
820           i.e. "links"), the text on the screen can be something completey
821           different than the URL.
822
823           This action toggles between showing and hiding the URL on the jump
824           label.
825
826           Default: t.
827

SECTION: mouse-bindings

829       This section lets you override the default mouse bindings.
830
831       The general format is action=combo1...comboN. That is, each action may
832       have one or more key combinations, space separated. Each combination is
833       on the form mod1+mod2+BTN_<name>[-COUNT]. The names of the modifiers
834       must be valid XKB key names, and the button name must be a valid libin‐
835       put name. You can find the button names using libinput debug-events.
836
837       Note that Shift cannot be used as a modifier in mouse bindings since it
838       is used to enable selection when the client application is grabbing the
839       mouse.
840
841       The trailing COUNT is optional and specifies the click count required
842       to trigger the binding. The default if COUNT is omitted is 1.
843
844       A modifier+button combination can only be mapped to one action. Lets
845       say you want to bind BTN_MIDDLE to fullscreen. Since BTN_MIDDLE is the
846       default binding for primary-paste, you first need to unmap the default
847       binding. This can be done by setting action=none; e.g. primary-
848       paste=none.
849
850       All actions listed under key-bindings can be used here as well.
851
852       select-begin
853           Begin an interactive selection. The selection is finalized, and
854           copied to the primary selection, when the button is released. De‐
855           fault: BTN_LEFT.
856
857       select-begin-block
858           Begin an interactive block selection. The selection is finalized,
859           and copied to the primary selection, when the button is released.
860           Default: Control+BTN_LEFT.
861
862       select-word
863           Begin an interactive word-wise selection, where words are separated
864           by whitespace and all characters defined by the word-delimiters op‐
865           tion. The selection is finalized, and copied to the primary selec‐
866           tion, when the button is released. Default: BTN_LEFT-2.
867
868       select-word-whitespace
869           Same as select-word, but the characters in the word-delimiters op‐
870           tion are ignored. I.e only whitespace characters act as delimiters.
871           The selection is finalized, and copied to the primary selection,
872           when the button is released. Default: Control+_BTN_LEFT-2.
873
874       select-row
875           Begin an interactive row-wise selection. The selection is final‐
876           ized, and copied to the primary selection, when the button is re‐
877           leased. Default: BTN_LEFT-3.
878
879       select-extend
880           Interactively extend an existing selection, using the original se‐
881           lection mode (normal, block, word-wise or row-wise). The selection
882           is finalized, and copied to the primary selection, when the button
883           is released. Default: BTN_RIGHT.
884
885       select-extend-character-wise
886           Same as select-extend, but forces the selection mode to normal
887           (i.e. character wise). Note that this causes subsequent select-ex‐
888           tend operations to be character wise. This action is ignored for
889           block selections. Default: Control+BTN_RIGHT.
890
891       primary-paste
892           Pastes from the primary selection. Default: BTN_MIDDLE.
893

TWEAK

895       This section is for advanced users and describes configuration options
896       that can be used to tweak foot's low-level behavior.
897
898       These options are not included in the example configuration. You should
899       not change these unless you understand what they do.
900
901       Note that these options may change, or be removed at any time, without
902       prior notice.
903
904       When reporting bugs, please mention if, and to what, you have changed
905       any of these options.
906
907       scaling-filter
908           Overrides the default scaling filter used when down-scaling bitmap
909           fonts (e.g. emoji fonts). Possible values are none, nearest, bilin‐
910           ear, cubic or lanczos3. cubic and lanczos3 produce the best re‐
911           sults, but are slower (with lanczos3 being the best and slowest).
912
913           Default: lanczos3.
914
915       overflowing-glyphs
916           Boolean. When enabled, glyphs wider than their cell(s) are allowed
917           to render into one additional neighbouring cell.
918
919           One use case for this are fonts with wide italic characters that
920           "bend" into the next cell. Without this option, such glyphs will
921           appear "cut off".
922
923           Another use case are fonts with "icon" characters in the Unicode
924           private usage area, e.g. Nerd Fonts, or Powerline Fonts and legacy
925           emoji characters like WHITE FROWNING FACE.
926
927           Note: might impact performance depending on the font used. Espe‐
928           cially small font sizes can cause many overflowing glyphs because
929           of subpixel rendering.
930
931           Default: yes.
932
933       render-timer
934           Enables a frame rendering timer, that prints the time it takes to
935           render each frame, in microseconds, either on-screen, to stderr, or
936           both. Valid values are none, osd, log and both. Default: none.
937
938       box-drawing-base-thickness
939           Line thickness to use for LIGHT box drawing line characters, in
940           points. This value is converted to pixels using the monitor's DPI,
941           and then multiplied with the cell size. The end result is that a
942           larger font (and thus larger cells) result in thicker lines. De‐
943           fault: 0.04.
944
945       box-drawing-solid-shades
946           Boolean. When enabled, box drawing "shades" (e.g. LIGHT SHADE,
947           MEDIUM SHADE and DARK SHADE) are rendered as solid blocks using a
948           darker variant of the current foreground color.
949
950           When disabled, they are instead rendered as checker box pattern,
951           using the current foreground color as is.
952
953           Default: yes.
954
955       delayed-render-lower, delayed-render-upper
956           These two values control the timeouts (in nanoseconds) that are
957           used to mitigate screen flicker caused by clients writing large,
958           non-atomic screen updates.
959
960           If a client splits up a screen update over multiple write(3) calls,
961           we may end up rendering an intermediate frame, quickly followed by
962           another frame with the final screen content. For example, the
963           client may erase part of the screen (or scroll) in one write, and
964           then write new content in one or more subsequent writes. Rendering
965           the frame when the screen has been erased, but not yet filled with
966           new content will be perceived as screen flicker.
967
968           The real solution to this is Application Synchronized Updates
969           (https://gitlab.freedesktop.org/terminal-wg/specifica
970           tions/-/merge_requests/2).
971
972           The problem with this is twofold - first, it has not yet been stan‐
973           dardized, and thus there are not many terminal emulators that im‐
974           plement it (foot does implement it), and second, applications must
975           be patched to use it.
976
977           Until this has happened, foot offers an interim workaround; an at‐
978           tempt to mitigate the screen flicker without affecting neither per‐
979           formance nor latency.
980
981           It is based on the fact that the screen is updated at a fixed in‐
982           terval (typically 60Hz). For us, this means it does not matter if
983           we render a new frame at the beginning of a frame interval, or at
984           the end. Thus, the goal is to introduce a delay between receiving
985           client data and rendering the resulting state, but without causing
986           a frame skip.
987
988           While it should be possible to estimate the amount of time left un‐
989           til the next frame, foot's algorithm is currently not that ad‐
990           vanced, but is based on statistics I guess you could say - the de‐
991           lay we introduce is so small that the risk of pushing the frame
992           over to the next frame interval is also very small.
993
994           Now, that was a lot of text. But what is it foot actually does?
995
996           When receiving client data, it schedules a timer, the delayed-ren‐
997           der-lower. If we do not receive any more client data before the
998           timer has run out, we render the frame. If however, we do receive
999           more data, the timer is re-scheduled. That is, each time we receive
1000           client data, frame rendering is delayed another delayed-render-
1001           lower nanoseconds.
1002
1003           Now, while this works very well with most clients, it would be pos‐
1004           sible to construct a malicious client that keeps writing data at a
1005           slow pace. To the user, this would look like foot has frozen as we
1006           never get to render a new frame. To prevent this, an upper limit is
1007           set - delayed-render-upper. If this timer runs out, we render the
1008           frame regardless of what the client is doing.
1009
1010           If changing these values, note that the lower timeout must be set
1011           lower than the upper timeout, but that this is not verified by
1012           foot. Furthermore, both values must be less than 16ms (that is,
1013           16000000 nanoseconds).
1014
1015           You can disable the feature altogether by setting either value to
1016           0. In this case, frames are rendered "as soon as possible".
1017
1018           Default: lower=500000 (0.5ms), upper=8333333 (8.3ms - half a frame
1019           interval).
1020
1021       damage-whole-window
1022           Boolean. When enabled, foot will 'damage' the entire window each
1023           time a frame has been rendered. This forces the compositor to re‐
1024           draw the entire window. If disabled, foot will only 'damage' up‐
1025           dated rows.
1026
1027           There is normally no reason to enable this. However, it has been
1028           seen to workaround an issue with fractional scaling in Gnome.
1029
1030           Note that enabling this option is likely to increase CPU and/or GPU
1031           usage (by the compositor, not by foot), and may have a negative im‐
1032           pact on battery life.
1033
1034           Default: no.
1035
1036       grapheme-shaping
1037           Boolean. When enabled, foot will use utf8proc to do grapheme clus‐
1038           ter segmentation while parsing "printed" text. Then, when render‐
1039           ing, it will use fcft (if compiled with HarfBuzz support) to shape
1040           the grapheme clusters.
1041
1042           This is required to render e.g. flag (emoji) sequences, keycap se‐
1043           quences, modifier sequences, zero-width-joiner (ZWJ) sequences and
1044           emoji tag sequences. It might also improve rendering of composed
1045           characters, depending on font.
1046
1047               •   foot must have been compiled with utf8proc support
1048               •   fcft must have been compiled with HarfBuzz support
1049
1050
1051           See also: grapheme-width-method.
1052
1053           Default: yes
1054
1055       grapheme-width-method
1056           Selects which method to use when calculating the width (i.e. number
1057           of columns) of a grapheme cluster. One of double-width and wc‐
1058           swidth.
1059
1060           wcswidth simply adds together the individual width of all code‐
1061           points making up the cluster.
1062
1063           double-width does the same, but limits the maximum number of col‐
1064           umns to 2. This is more correct, but may break some applications
1065           since applications typically use wcswidth(3) internally to calcu‐
1066           late the width. This results in cursor de-synchronization issues.
1067
1068           Default: wcswidth
1069
1070       font-monospace-warn
1071           Boolean. When enabled, foot will use heuristics to try to verify
1072           the primary font is a monospace font, and warn if it is not.
1073
1074           Disable this if you still want to use the font, even if foot thinks
1075           it is not monospaced.
1076
1077           You may also want to disable it to get slightly faster startup
1078           times.
1079
1080           Default: yes
1081
1082       max-shm-pool-size-mb
1083           This option controls the amount of virtual address space used by
1084           the pixmap memory to which the terminal screen content is rendered.
1085
1086           It does not change how much physical memory foot uses.
1087
1088           Foot uses a memory mapping trick to implement fast rendering of in‐
1089           teractive scrolling (typically, but applies to "slow" scrolling in
1090           general). Example: holding down the 'up' or 'down' arrow key to
1091           scroll in a text editor.
1092
1093           For this to work, it needs a large amount of virtual address space.
1094           Again, note that this is not physical memory.
1095
1096           On a normal x64 based computer, each process has 128TB of virtual
1097           address space, and newer ones have 64PB. This is an insane amount
1098           and most applications do not use anywhere near that amount.
1099
1100           Each foot terminal window can allocate up to 2GB of virtual address
1101           space. With 128TB of address space, that means a maximum of 65536
1102           windows in server/daemon mode (for 2GB). That should be enough,
1103           yes?
1104
1105           However, the Wayland compositor also needs to allocate the same
1106           amount of virtual address space. Thus, it has a slightly higher
1107           chance of running out of address space since it needs to host all
1108           running Wayland clients in the same way, at the same time.
1109
1110           In the off chance that this becomes a problem for you, you can re‐
1111           duce the amount used with this option.
1112
1113           Or, for optimal performance, you can increase it to the maximum al‐
1114           lowed value, 2GB (but note that you most likely will not notice any
1115           difference compared to the default value).
1116
1117           Setting it to 0 disables the feature.
1118
1119           Limitations:
1120               •   only supported on 64-bit architectures
1121               •   only supported on Linux
1122
1123
1124           Default: 512. Maximum allowed: 2048 (2GB).
1125

SEE ALSO

1127       foot(1), footclient(1)
1128
1129
1130
1131                                  2021-11-22                       foot.ini(5)
Impressum