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 (defaulting to $HOME/.con‐
18               fig/foot/foot.ini if unset)
19XDG_CONFIG_DIRS/foot/foot.ini (defaulting to
20               /etc/xdg/foot/foot.ini if unset)
21
22
23       An example configuration file containing all options with their default
24       value commented out will usually be installed to
25       /etc/xdg/foot/foot.ini.
26
27       Options are set using KEY=VALUE pairs:
28
29           [colors]
30           background=000000
31           foreground=ffffff
32
33       Empty values (KEY=) are not supported. String options do allow the
34       empty string to be set, but it must be quoted: KEY="")
35

SECTION: main

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

SECTION: environment

357       This section is used to define environment variables that will be set
358       in the client application, in addition to the variables inherited from
359       the terminal process itself.
360
361       The format is simply:
362
363       name=value
364
365       Note: do not set TERM here; use the term option in the main (default)
366       section instead.
367

SECTION: bell

369       urgent
370           When set to yes, foot will signal urgency to the compositor through
371           the XDG activation protocol whenever BEL is received, and the win‐
372           dow does NOT have keyboard focus.
373
374           If the compositor does not implement this protocol, the margins
375           will be painted in red instead.
376
377           Applications can enable/disable this feature programmatically with
378           the CSI ? 1042 h and CSI ? 1042 l escape sequences.
379
380           Default: no
381
382       notify
383           When set to yes, foot will emit a desktop notification using the
384           command specified in the notify option whenever BEL is received. By
385           default, bell notifications are shown only when the window does not
386           have keyboard focus. See notify-focus-inhibit.
387
388           Default: no
389
390       command
391           When set, foot will execute this command when BEL is received. De‐
392           fault: none
393
394       command-focused
395           Whether to run the command on BEL even while focused. Default: no
396

SECTION: scrollback

398       lines
399           Number of scrollback lines. The maximum number of allocated lines
400           will be this value plus the number of visible lines, rounded up to
401           the nearest power of 2. Default: 1000.
402
403       multiplier
404           Amount to multiply mouse scrolling with. It is a decimal number,
405           i.e. fractions are allowed. Default: 3.0.
406
407       indicator-position
408           Configures the style of the scrollback position indicator. One of
409           none, fixed or relative. none disables the indicator completely.
410           fixed always renders the indicator near the top of the window, and
411           relative renders the indicator at the position corresponding to the
412           current scrollback position. Default: relative.
413
414       indicator-format
415           Which format to use when displaying the scrollback position indica‐
416           tor. Either percentage, line, or a custom fixed string. This option
417           is ignored if indicator-position=none. Default: empty string.
418

SECTION: url

420       launch
421           Command to execute when opening URLs. ${url} will be replaced with
422           the actual URL. Default: xdg-open ${url}.
423
424       osc8-underline
425           When to underline OSC-8 URLs. Possible values are url-mode and al‐
426           ways.
427
428           When set to url-mode, OSC-8 URLs are only highlighted in URL mode,
429           just like auto-detected URLs.
430
431           When set to always, OSC-8 URLs are always highlighted, regardless
432           of their other attributes (bold, italic etc). Note that this does
433           not make them clickable.
434
435           Default: url-mode
436
437       label-letters
438           String of characters to use when generating key sequences for URL
439           jump labels.
440
441           If you change this option to include the letter t, you should also
442           change the default [url-bindings].toggle-url-visible key binding to
443           avoid a clash.
444
445           Default: sadfjklewcmpgh.
446
447       protocols
448           Comma separated list of protocols (schemes) that should be recog‐
449           nized in URL mode. Note that only auto-detected URLs are affected
450           by this option. OSC-8 URLs are always enabled, regardless of proto‐
451           col. Default: http, https, ftp, ftps, file, gemini, gopher, irc,
452           ircs.
453
454       uri-characters
455           Set of characters allowed in auto-detected URLs. Any character not
456           included in this set constitutes a URL delimiter.
457
458           Default: abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTU‐
459           VWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]
460

SECTION: cursor

462       This section controls the cursor style and color. Note that applica‐
463       tions can change these at runtime.
464
465       style
466           Configures the default cursor style, and is one of: block, beam or
467           underline. Note that this can be overridden by applications. De‐
468           fault: block.
469
470       blink
471           Boolean. Enables blinking cursor. Note that this can be overridden
472           by applications. Default: no.
473
474       color
475           Two space separated RRGGBB values (i.e. plain old 6-digit hex val‐
476           ues, without prefix) specifying the foreground (text) and back‐
477           ground (cursor) colors for the cursor.
478
479           Example: ff0000 00ff00 (green cursor, red text)
480
481           Default: the regular foreground and background colors, reversed.
482
483       beam-thickness
484           Thickness (width) of the beam styled cursor. The value is in
485           points, and its exact value thus depends on the monitor's DPI. To
486           instead specify a thickness in pixels, use the px suffix: e.g.
487           beam-thickness=2px. Default: 1.5
488
489       underline-thickness
490           Thickness (height) of the underline styled cursor. The value is in
491           points, and its exact value thus depends on the monitor's DPI.
492
493           To instead specify a thickness in pixels, use the px suffix: e.g.
494           underline-thickness=2px.
495
496           Note that if left unset, the cursor's thickness will scale with the
497           font size, while if set, the size is fixed.
498
499           Default: font underline thickness.
500

SECTION: mouse

502       hide-when-typing
503           Boolean. When enabled, the mouse cursor is hidden while typing. De‐
504           fault: no.
505
506       alternate-scroll-mode
507           Boolean. This option controls the initial value for the alternate
508           scroll mode. When this mode is enabled, mouse scroll events are
509           translated to up/down key events when displaying the alternate
510           screen.
511
512           This lets you scroll with the mouse in e.g. pagers (like less)
513           without enabling native mouse support in them.
514
515           Alternate scrolling is not used if the application enables native
516           mouse support.
517
518           This option can be modified by applications at run-time using the
519           escape sequences CSI ? 1007 h (enable) and CSI ? 1007 l (disable).
520
521           Default: yes.
522

SECTION: touch

524       long-press-delay
525           Number of milliseconds to distinguish between a short press and a
526           long press on the touchscreen.
527
528           Default: 400.
529

SECTION: colors

531       This section controls the 16 ANSI colors, the default foreground and
532       background colors, and the extended 256 color palette. Note that appli‐
533       cations can change these at runtime.
534
535       The colors are in RRGGBB format (i.e. plain old 6-digit hex values,
536       without prefix). That is, they do not have an alpha component. You can
537       configure the background transparency with the alpha option.
538
539       foreground
540           Default foreground color. This is the color used when no ANSI color
541           is being used. Default: 839496.
542
543       background
544           Default background color. This is the color used when no ANSI color
545           is being used. Default: 002b36.
546
547       regular0, regular1 .. regular7
548           The eight basic ANSI colors (Black, Red, Green, Yellow, Blue, Ma‐
549           genta, Cyan, White). Default: 242424, f62b5a, 47b413, e3c401,
550           24acd4, f2affd, 13c299, e6e6e6 (starlight theme, V4).
551
552       bright0, bright1 .. bright7
553           The eight bright ANSI colors (Black, Red, Green, Yellow, Blue, Ma‐
554           genta, Cyan, White). Default: 616161, ff4d51, 35d450, e9e836,
555           5dc5f8, feabf2, 24dfc4, ffffff (starlight theme, V4).
556
557       dim0, dim1 .. dim7
558           Custom colors to use with dimmed colors. Dimmed colors do not have
559           an entry in the color palette. Applications emit them by combining
560           a color value, and a "dim" attribute.
561
562           By default, foot implements this by reducing the luminance of the
563           current color. This is a generic approach that applies to both col‐
564           ors from the 256-color palette, as well as 24-bit RGB colors.
565
566           You can change this behavior by setting the dimN options. When set,
567           foot will match the current color against the color palette, and if
568           it matches one of the regularN colors, the corresponding dimN color
569           will be used.
570
571           If instead the current color matches one of the brightN colors, the
572           corresponding regularN color will be used.
573
574           If the current color does not match any known color, it is dimmed
575           by reducing the luminance (i.e. the same behavior as if the dimN
576           options are unconfigured). 24-bit RGB colors will typically fall
577           into this category.
578
579           Note that applications can change the regularN and brightN colors
580           at runtime. However, they have no way of changing the dimN colors.
581           If an application has changed the regularN colors, foot will still
582           use the corresponding dimN color, as configured in foot.ini.
583
584           Default: not set.
585
586       0 .. 255
587           Arbitrary colors in the 256-color palette. Default: for 0 .. 15,
588           see regular and bright defaults above; see
589           https://en.wikipedia.org/wiki/ANSI_escape_code#8-bit for an expla‐
590           nation of the remainder.
591
592       alpha
593           Background translucency. A value in the range 0.0-1.0, where 0.0
594           means completely transparent, and 1.0 is opaque. Default: 1.0.
595
596       selection-foreground, selection-background
597           Foreground (text) and background color to use in selected text.
598           Note that both options must be set, or the default will be used.
599           Default: inverse foreground/background.
600
601       jump-labels
602           Two color values specifying the foreground (text) and background
603           colors to use when rendering jump labels in URL mode. Default: reg‐
604           ular0 regular3.
605
606       scrollback-indicator
607           Two color values specifying the foreground (text) and background
608           (indicator itself) colors for the scrollback indicator. Default:
609           regular0 bright4.
610
611       search-box-no-match
612           Two color values specifying the foreground (text) and background
613           colors for the scrollback search box, when there are no matches.
614           Default: regular0 regular1.
615
616       search-box-match
617           Two color values specifying the foreground (text) and background
618           colors for the scrollback search box, when the search box is either
619           empty, or there are matches. Default: regular0 regular3.
620
621       urls
622           Color to use for the underline used to highlight URLs in URL mode.
623           Default: regular3.
624

SECTION: csd

626       This section controls the look of the CSDs (Client Side Decorations).
627       Note that the default is to not use CSDs, but instead to use SSDs
628       (Server Side Decorations) when the compositor supports it.
629
630       Note that unlike the colors defined in the colors section, the color
631       values here are in AARRGGBB (i.e. plain old 8-digit hex values) format.
632       I.e. they contain an alpha component - 00 means completely transparent,
633       and ff fully opaque.
634
635       Examples:
636
637       •   ffffffff: white, fully opaque
638       •   ff000000: black, fully opaque
639       •   7fffffff: white, semi-transparent
640       •   ff00ff00: green, fully opaque
641
642
643       preferred
644           Which type of window decorations to prefer: client (CSD), server
645           (SSD) or none.
646
647           Note that this is only a hint to the compositor. Depending on com‐
648           positor support, and how it has been configured, it may instruct
649           foot to use CSDs even though this option has been set to server, or
650           render SSDs despite client or none being set.
651
652           Default: server.
653
654       size
655           Height, in pixels (subject to output scaling), of the titlebar.
656           Setting it to 0 will hide the titlebar, while still showing the
657           border (if border-width is set to a non-zero value). Default: 26.
658
659       color
660           Titlebar color. Default: use the default foreground color.
661
662       font
663           Font to use for the title bar. This is a list of fonts, similar to
664           the main font option. Note that the font will be sized using the
665           title bar size. That is, all :size and :pixelsize attributes will
666           be ignored. Default: primary font.
667
668       hide-when-maximized
669           Boolean. When enabled, the CSD titlebar is hidden when the window
670           is maximized. The completely disable the titlebar, set size to 0
671           instead. Default: no.
672
673       double-click-to-maximize
674           Boolean. When enabled, double-clicking the CSD titlebar will
675           (un)maximize the window. Default: yes.
676
677       border-width
678           Width of the border, in pixels (subject to output scaling). Note
679           that the border encompasses the entire window, including the title
680           bar. Default: 0.
681
682       border-color
683           Color of border. By default, the title bar color is used. If the
684           title bar color has not been set, the default foreground color
685           (from the color scheme) is used. Default: titlebar color.
686
687       button-width
688           Width, in pixels (subject to output scaling), of the minimize/maxi‐
689           mize/close buttons. Default: 26.
690
691       button-color
692           Foreground color on the minimize/maximize/close buttons. Default:
693           use the default background color.
694
695       button-minimize-color
696           Minimize button's background color. Default: use the default regu‐
697           lar4 color (blue).
698
699       button-maximize-color
700           Maximize button's background color. Default: use the default regu‐
701           lar2 color (green).
702
703       button-close-color
704           Close button's background color. Default: use the default regular1
705           color (red).
706

SECTION: key-bindings

708       This section lets you override the default key bindings.
709
710       The general format is action=combo1...comboN. That is, each action may
711       have one or more key combinations, space separated. Each combination is
712       in the form mod1+mod2+key. The names of the modifiers and the key must
713       be valid XKB key names.
714
715       Note that if Shift is one of the modifiers, the key must not be in up‐
716       per case. For example, Control+Shift+V will never trigger, but Con‐
717       trol+Shift+v will.
718
719       Note that Alt is usually called Mod1.
720
721       xkbcli interactive-wayland can be useful for finding keysym names.
722
723       A key combination can only be mapped to one action. Lets say you want
724       to bind Control+Shift+R to fullscreen. Since this is the default short‐
725       cut for search-start, you first need to unmap the default binding. This
726       can be done by setting action=none; e.g. search-start=none.
727
728       noop
729           All key combinations listed here will not be sent to the applica‐
730           tion. Default: not bound.
731
732       scrollback-up-page
733           Scrolls up/back one page in history. Default: Shift+Page_Up.
734
735       scrollback-up-half-page
736           Scrolls up/back half of a page in history. Default: not bound.
737
738       scrollback-up-line
739           Scrolls up/back a single line in history. Default: not bound.
740
741       scrollback-down-page
742           Scroll down/forward one page in history. Default: Shift+Page_Down.
743
744       scrollback-down-half-page
745           Scroll down/forward half of a page in history. Default: not bound.
746
747       scrollback-down-line
748           Scroll down/forward a single line in history. Default: not bound.
749
750       scrollback-home
751           Scroll to the beginning of the scrollback. Default: not bound.
752
753       scrollback-end
754           Scroll to the end (bottom) of the scrollback. Default: not bound.
755
756       clipboard-copy
757           Copies the current selection into the clipboard. Default: Con‐
758           trol+Shift+c XF86Copy.
759
760       clipboard-paste
761           Pastes from the clipboard. Default: Control+Shift+v XF86Paste.
762
763       primary-paste
764           Pastes from the primary selection. Default: Shift+Insert (also de‐
765           fined in mouse-bindings).
766
767       search-start
768           Starts a scrollback/history search. Default: Control+Shift+r.
769
770       font-increase
771           Increases the font size by 0.5pt. Default: Control+plus Con‐
772           trol+equal Control+KP_Add.
773
774       font-decrease
775           Decreases the font size by 0.5pt. Default: Control+minus Con‐
776           trol+KP_Subtract.
777
778       font-reset
779           Resets the font size to the default. Default: Control+0 Con‐
780           trol+KP_0.
781
782       spawn-terminal
783           Spawns a new terminal. If the shell has been configured to emit the
784           OSC 7 escape sequence, the new terminal will start in the current
785           working directory. Default: Control+Shift+n.
786
787       minimize
788           Minimizes the window. Default: not bound.
789
790       maximize
791           Toggle the maximized state. Default: not bound.
792
793       fullscreen
794           Toggles the fullscreen state. Default: not bound.
795
796       pipe-visible, pipe-scrollback, pipe-selected
797           Pipes the currently visible text, the entire scrollback, or the
798           currently selected text to an external tool. The syntax for this
799           option is a bit special; the first part of the value is the command
800           to execute enclosed in "[]", followed by the binding(s).
801
802           You can configure multiple pipes as long as the command strings are
803           different and the key bindings are unique.
804
805           Note that the command is not automatically run inside a shell; use
806           sh -c "command line" if you need that.
807
808           Example:
809               pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r
810               firefox"] Control+Print
811
812           Default: not bound
813
814       show-urls-launch
815           Enter URL mode, where all currently visible URLs are tagged with a
816           jump label with a key sequence that will open the URL (and exit URL
817           mode). Default: Control+Shift+o.
818
819       show-urls-persistent
820           Similar to show-urls-launch, but does not automatically exit URL
821           mode after activating an URL. Default: none.
822
823       show-urls-copy
824           Enter URL mode, where all currently visible URLs are tagged with a
825           jump label with a key sequence that will place the URL in the clip‐
826           board. Default: none.
827
828       prompt-prev
829           Jump to the previous, currently not visible, prompt (requires shell
830           integration, see foot(1)). Default: Control+Shift+z.
831
832       prompt-next
833           Jump the next prompt (requires shell integration, see foot(1)). De‐
834           fault: Control+Shift+x.
835
836       unicode-input
837           Input a Unicode character by typing its codepoint in hexadecimal,
838           followed by Enter or Space.
839
840           For example, to input the character ö (LATIN SMALL LETTER O WITH
841           DIAERESIS, Unicode codepoint 0xf6), you would first activate this
842           key binding, then type: f, 6, Enter.
843
844           Another example: to input 😍 (SMILING FACE WITH HEART-SHAPED EYES,
845           Unicode codepoint 0x1f60d), activate this key binding, then type:
846           1, f, 6, 0, d, Enter.
847
848           Recognized key bindings in Unicode input mode:
849
850           •   Enter, Space: commit the Unicode character, then exit this
851               mode.
852           •   Escape, q, Ctrl+c, Ctrl+d, Ctrl+g: abort input, then exit this
853               mode.
854           •   0-9, a-f: append next digit to the Unicode's codepoint.
855           •   Backspace: undo the last digit.
856
857
858           Note that there is no visual feedback while in this mode. This is
859           by design; foot's Unicode input mode is considered to be a fall‐
860           back. The preferred way of entering Unicode characters, emojis etc
861           is by using an IME.
862
863           Default: Control+Shift+u.
864

SECTION: search-bindings

866       This section lets you override the default key bindings used in scroll‐
867       back search mode. The syntax is exactly the same as the regular key-
868       bindings.
869
870       cancel
871           Aborts the search. The viewport is restored and the primary selec‐
872           tion is not updated. Default: Control+g Control+c Escape.
873
874       commit
875           Exit search mode and copy current selection into the primary selec‐
876           tion. Viewport is not restored. To copy the selection to the regu‐
877           lar clipboard, use Control+Shift+c. Default: Return.
878
879       find-prev
880           Search backwards in the scrollback history for the next match. De‐
881           fault: Control+r.
882
883       find-next
884           Searches forwards in the scrollback history for the next match. De‐
885           fault: Control+s.
886
887       cursor-left
888           Moves the cursor in the search box one character to the left. De‐
889           fault: Left Control+b.
890
891       cursor-left-word
892           Moves the cursor in the search box one word to the left. Default:
893           Control+Left Mod1+b.
894
895       cursor-right
896           Moves the cursor in the search box one character to the right. De‐
897           fault: Right Control+f.
898
899       cursor-right-word
900           Moves the cursor in the search box one word to the right. Default:
901           Control+Right Mod1+f.
902
903       cursor-home
904           Moves the cursor in the search box to the beginning of the input.
905           Default: Home Control+a.
906
907       cursor-end
908           Moves the cursor in the search box to the end of the input. De‐
909           fault: End Control+e.
910
911       delete-prev
912           Deletes the character before the cursor. Default: BackSpace.
913
914       delete-prev-word
915           Deletes the word before the cursor. Default: Mod1+BackSpace Con‐
916           trol+BackSpace.
917
918       delete-next
919           Deletes the character after the cursor. Default: Delete.
920
921       delete-next-word
922           Deletes the word after the cursor. Default: Mod1+d Control+Delete.
923
924       extend-to-word-boundary
925           Extend current selection to the next word boundary. Default: Con‐
926           trol+w.
927
928       extend-to-next-whitespace
929           Extend the current selection to the next whitespace. Default: Con‐
930           trol+Shift+w.
931
932       clipboard-paste
933           Paste from the clipboard into the search buffer. Default: Control+v
934           Control+y.
935
936       primary-paste
937           Paste from the primary selection into the search buffer. Default:
938           Shift+Insert.
939
940       unicode-input
941           Unicode input mode. See key-bindings.unicode-input for details. De‐
942           fault: none.
943

SECTION: url-bindings

945       This section lets you override the default key bindings used in URL
946       mode. The syntax is exactly the same as the regular key-bindings.
947
948       Be careful; do not use single-letter keys that are also used in
949       [url].label-letters, as doing so will make some URLs inaccessible.
950
951       cancel
952           Exits URL mode without opening a URL. Default: Control+g Control+c
953           Control+d Escape.
954
955       toggle-url-visible
956           By default, the jump label only shows the key sequence required to
957           activate it. This is fine as long as the URL is visible in the
958           original text.
959
960           But with e.g. OSC-8 URLs (the terminal version of HTML anchors,
961           i.e. "links"), the text on the screen can be something completely
962           different than the URL.
963
964           This action toggles between showing and hiding the URL on the jump
965           label.
966
967           Default: t.
968

SECTION: text-bindings

970       This section lets you remap key combinations to custom escape se‐
971       quences.
972
973       The format is text=combo1...comboN. That is, the string to emit may
974       have one or more key combinations, space separated. Each combination is
975       in the form mod1+mod2+key. The names of the modifiers and the key must
976       be valid XKB key names.
977
978       The text string specifies the characters, or bytes, to emit when the
979       associated key combination(s) are pressed. There are two ways to spec‐
980       ify a character:
981
982       •   Normal, printable characters are written as-is: abcdef.
983       •   Bytes (e.g. ESC) are written as two-digit hexadecimal numbers, with
984           a \x prefix: \x1b.
985
986
987       Example: you would like to remap Super+k to the Up key.
988
989       The escape sequence for the Up key is ESC [ A (without the spaces).
990       Thus, we need to specify this in foot.ini (Mod4 is the XKB name for the
991       Super/logo key):
992
993       \x1b[A = Mod4+k
994
995       Another example: to remap Super+c to Control+c:
996
997       \x03 = Mod4+c
998

SECTION: mouse-bindings

1000       This section lets you override the default mouse bindings.
1001
1002       The general format is action=combo1...comboN. That is, each action may
1003       have one or more key combinations, space separated. Each combination is
1004       in the form mod1+mod2+BTN_<name>[-COUNT]. The names of the modifiers
1005       must be valid XKB key names, and the button name must be a valid libin‐
1006       put name. You can find the button names using libinput debug-events.
1007
1008       The trailing COUNT is optional and specifies the click count required
1009       to trigger the binding. The default if COUNT is omitted is 1.
1010
1011       A modifier+button combination can only be mapped to one action. Lets
1012       say you want to bind BTN_MIDDLE to fullscreen. Since BTN_MIDDLE is the
1013       default binding for primary-paste, you first need to unmap the default
1014       binding. This can be done by setting action=none; e.g. primary-
1015       paste=none.
1016
1017       selection-override-modifiers
1018           The modifiers set in this set (which may be set to any combination
1019           of modifiers, e.g. mod1+mod2+mod3, as well as none) are used to en‐
1020           able selecting text with the mouse irrespective of whether a client
1021           application currently has the mouse grabbed. These modifiers cannot
1022           be used as modifiers in mouse bindings. Because the order of bind‐
1023           ings is significant, it is best to set this prior to any other
1024           mouse bindings that might use modifiers in the default set. De‐
1025           fault: Shift
1026
1027       The actions to which mouse combos can be bound are listed below. All
1028       actions listed under key-bindings can be used here as well.
1029
1030       select-begin
1031           Begin an interactive selection. The selection is finalized, and
1032           copied to the primary selection, when the button is released. De‐
1033           fault: BTN_LEFT.
1034
1035       select-begin-block
1036           Begin an interactive block selection. The selection is finalized,
1037           and copied to the primary selection, when the button is released.
1038           Default: Control+BTN_LEFT.
1039
1040       select-word
1041           Begin an interactive word-wise selection, where words are separated
1042           by whitespace and all characters defined by the word-delimiters op‐
1043           tion. The selection is finalized, and copied to the primary selec‐
1044           tion, when the button is released. Default: BTN_LEFT-2.
1045
1046       select-word-whitespace
1047           Same as select-word, but the characters in the word-delimiters op‐
1048           tion are ignored. I.e only whitespace characters act as delimiters.
1049           The selection is finalized, and copied to the primary selection,
1050           when the button is released. Default: Control+BTN_LEFT-2.
1051
1052       select-row
1053           Begin an interactive row-wise selection. The selection is final‐
1054           ized, and copied to the primary selection, when the button is re‐
1055           leased. Default: BTN_LEFT-3.
1056
1057       select-extend
1058           Interactively extend an existing selection, using the original se‐
1059           lection mode (normal, block, word-wise or row-wise). The selection
1060           is finalized, and copied to the primary selection, when the button
1061           is released. Default: BTN_RIGHT.
1062
1063       select-extend-character-wise
1064           Same as select-extend, but forces the selection mode to normal
1065           (i.e. character wise). Note that this causes subsequent select-ex‐
1066           tend operations to be character wise. This action is ignored for
1067           block selections. Default: Control+BTN_RIGHT.
1068
1069       primary-paste
1070           Pastes from the primary selection. Default: BTN_MIDDLE.
1071

TWEAK

1073       This section is for advanced users and describes configuration options
1074       that can be used to tweak foot's low-level behavior.
1075
1076       These options are not included in the example configuration. You should
1077       not change these unless you understand what they do.
1078
1079       Note that these options may change, or be removed at any time, without
1080       prior notice.
1081
1082       When reporting bugs, please mention if, and to what, you have changed
1083       any of these options.
1084
1085       scaling-filter
1086           Overrides the default scaling filter used when down-scaling bitmap
1087           fonts (e.g. emoji fonts). Possible values are none, nearest, bilin‐
1088           ear, cubic or lanczos3. cubic and lanczos3 produce the best re‐
1089           sults, but are slower (with lanczos3 being the best and slowest).
1090
1091           Default: lanczos3.
1092
1093       overflowing-glyphs
1094           Boolean. When enabled, glyphs wider than their cell(s) are allowed
1095           to render into one additional neighbouring cell.
1096
1097           One use case for this are fonts with wide italic characters that
1098           "bend" into the next cell. Without this option, such glyphs will
1099           appear "cut off".
1100
1101           Another use case are fonts with "icon" characters in the Unicode
1102           private usage area, e.g. Nerd Fonts, or Powerline Fonts and legacy
1103           emoji characters like WHITE FROWNING FACE.
1104
1105           Note: might impact performance depending on the font used. Espe‐
1106           cially small font sizes can cause many overflowing glyphs because
1107           of subpixel rendering.
1108
1109           Default: yes.
1110
1111       render-timer
1112           Enables a frame rendering timer, that prints the time it takes to
1113           render each frame, in microseconds, either on-screen, to stderr, or
1114           both. Valid values are none, osd, log and both. Default: none.
1115
1116       box-drawing-base-thickness
1117           Line thickness to use for LIGHT box drawing line characters, in
1118           points. This value is converted to pixels using the monitor's DPI,
1119           and then multiplied with the cell size. The end result is that a
1120           larger font (and thus larger cells) result in thicker lines. De‐
1121           fault: 0.04.
1122
1123       box-drawing-solid-shades
1124           Boolean. When enabled, box drawing "shades" (e.g. LIGHT SHADE,
1125           MEDIUM SHADE and DARK SHADE) are rendered as solid blocks using a
1126           darker variant of the current foreground color.
1127
1128           When disabled, they are instead rendered as checker box pattern,
1129           using the current foreground color as is.
1130
1131           Default: yes.
1132
1133       delayed-render-lower, delayed-render-upper
1134           These two values control the timeouts (in nanoseconds) that are
1135           used to mitigate screen flicker caused by clients writing large,
1136           non-atomic screen updates.
1137
1138           If a client splits up a screen update over multiple write(3) calls,
1139           we may end up rendering an intermediate frame, quickly followed by
1140           another frame with the final screen content. For example, the
1141           client may erase part of the screen (or scroll) in one write, and
1142           then write new content in one or more subsequent writes. Rendering
1143           the frame when the screen has been erased, but not yet filled with
1144           new content will be perceived as screen flicker.
1145
1146           The real solution to this is Application Synchronized Updates
1147           (https://gitlab.freedesktop.org/terminal-wg/specifica
1148           tions/-/merge_requests/2).
1149
1150           The problem with this is twofold - first, it has not yet been stan‐
1151           dardized, and thus there are not many terminal emulators that im‐
1152           plement it (foot does implement it), and second, applications must
1153           be patched to use it.
1154
1155           Until this has happened, foot offers an interim workaround; an at‐
1156           tempt to mitigate the screen flicker without affecting neither per‐
1157           formance nor latency.
1158
1159           It is based on the fact that the screen is updated at a fixed in‐
1160           terval (typically 60Hz). For us, this means it does not matter if
1161           we render a new frame at the beginning of a frame interval, or at
1162           the end. Thus, the goal is to introduce a delay between receiving
1163           client data and rendering the resulting state, but without causing
1164           a frame skip.
1165
1166           While it should be possible to estimate the amount of time left un‐
1167           til the next frame, foot's algorithm is currently not that ad‐
1168           vanced, but is based on statistics I guess you could say - the de‐
1169           lay we introduce is so small that the risk of pushing the frame
1170           over to the next frame interval is also very small.
1171
1172           Now, that was a lot of text. But what is it foot actually does?
1173
1174           When receiving client data, it schedules a timer, the delayed-ren‐
1175           der-lower. If we do not receive any more client data before the
1176           timer has run out, we render the frame. If however, we do receive
1177           more data, the timer is re-scheduled. That is, each time we receive
1178           client data, frame rendering is delayed another delayed-render-
1179           lower nanoseconds.
1180
1181           Now, while this works very well with most clients, it would be pos‐
1182           sible to construct a malicious client that keeps writing data at a
1183           slow pace. To the user, this would look like foot has frozen as we
1184           never get to render a new frame. To prevent this, an upper limit is
1185           set - delayed-render-upper. If this timer runs out, we render the
1186           frame regardless of what the client is doing.
1187
1188           If changing these values, note that the lower timeout must be set
1189           lower than the upper timeout, but that this is not verified by
1190           foot. Furthermore, both values must be less than 16ms (that is,
1191           16000000 nanoseconds).
1192
1193           You can disable the feature altogether by setting either value to
1194           0. In this case, frames are rendered "as soon as possible".
1195
1196           Default: lower=500000 (0.5ms), upper=8333333 (8.3ms - half a frame
1197           interval).
1198
1199       damage-whole-window
1200           Boolean. When enabled, foot will 'damage' the entire window each
1201           time a frame has been rendered. This forces the compositor to re‐
1202           draw the entire window. If disabled, foot will only 'damage' up‐
1203           dated rows.
1204
1205           There is normally no reason to enable this. However, it has been
1206           seen to workaround an issue with fractional scaling in Gnome.
1207
1208           Note that enabling this option is likely to increase CPU and/or GPU
1209           usage (by the compositor, not by foot), and may have a negative im‐
1210           pact on battery life.
1211
1212           Default: no.
1213
1214       grapheme-shaping
1215           Boolean. When enabled, foot will use utf8proc to do grapheme clus‐
1216           ter segmentation while parsing "printed" text. Then, when render‐
1217           ing, it will use fcft (if compiled with HarfBuzz support) to shape
1218           the grapheme clusters.
1219
1220           This is required to render e.g. flag (emoji) sequences, keycap se‐
1221           quences, modifier sequences, zero-width-joiner (ZWJ) sequences and
1222           emoji tag sequences. It might also improve rendering of composed
1223           characters, depending on font.
1224
1225               •   foot must have been compiled with utf8proc support
1226               •   fcft must have been compiled with HarfBuzz support
1227
1228
1229           See also: grapheme-width-method.
1230
1231           Default: yes
1232
1233       grapheme-width-method
1234           Selects which method to use when calculating the width (i.e. number
1235           of columns) of a grapheme cluster. One of wcswidth, double-width
1236           and max.
1237
1238           wcswidth simply adds together the individual width of all code‐
1239           points making up the cluster.
1240
1241           double-width does the same, but limits the maximum number of col‐
1242           umns to 2. This is more correct, but may break some applications
1243           since applications typically use wcswidth(3) internally to calcu‐
1244           late the width. This results in cursor de-synchronization issues.
1245
1246           max uses the width of the largest codepoint in the cluster.
1247
1248           Default: double-width
1249
1250       font-monospace-warn
1251           Boolean. When enabled, foot will use heuristics to try to verify
1252           the primary font is a monospace font, and warn if it is not.
1253
1254           Disable this if you still want to use the font, even if foot thinks
1255           it is not monospaced.
1256
1257           You may also want to disable it to get slightly faster startup
1258           times.
1259
1260           Default: yes
1261
1262       max-shm-pool-size-mb
1263           This option controls the amount of virtual address space used by
1264           the pixmap memory to which the terminal screen content is rendered.
1265
1266           It does not change how much physical memory foot uses.
1267
1268           Foot uses a memory mapping trick to implement fast rendering of in‐
1269           teractive scrolling (typically, but applies to "slow" scrolling in
1270           general). Example: holding down the 'up' or 'down' arrow key to
1271           scroll in a text editor.
1272
1273           For this to work, it needs a large amount of virtual address space.
1274           Again, note that this is not physical memory.
1275
1276           On a normal x64 based computer, each process has 128TB of virtual
1277           address space, and newer ones have 64PB. This is an insane amount
1278           and most applications do not use anywhere near that amount.
1279
1280           Each foot terminal window can allocate up to 2GB of virtual address
1281           space. With 128TB of address space, that means a maximum of 65536
1282           windows in server/daemon mode (for 2GB). That should be enough,
1283           yes?
1284
1285           However, the Wayland compositor also needs to allocate the same
1286           amount of virtual address space. Thus, it has a slightly higher
1287           chance of running out of address space since it needs to host all
1288           running Wayland clients in the same way, at the same time.
1289
1290           In the off chance that this becomes a problem for you, you can re‐
1291           duce the amount used with this option.
1292
1293           Or, for optimal performance, you can increase it to the maximum al‐
1294           lowed value, 2GB (but note that you most likely will not notice any
1295           difference compared to the default value).
1296
1297           Setting it to 0 disables the feature.
1298
1299           Limitations:
1300               •   only supported on 64-bit architectures
1301               •   only supported on Linux
1302
1303
1304           Default: 512. Maximum allowed: 2048 (2GB).
1305
1306       sixel
1307           Boolean. When enabled, foot will process sixel images. Default: yes
1308
1309       bold-text-in-bright-amount
1310           Amount by which bold fonts are brightened when bold-text-in-bright
1311           is set to yes (the palette-based variant is not affected by this
1312           option). Default: 1.3.
1313

SEE ALSO

1315       foot(1), footclient(1)
1316
1317
1318
1319                                  2023-08-08                       foot.ini(5)
Impressum