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

SECTION: main

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

SECTION: environment

309       This section is used to define environment variables that will be set
310       in the client application, in addition to the variables inherited from
311       the terminal process itself.
312
313       The format is simply:
314
315       name=value
316
317       Note: do not set TERM here; use the term option in the main (default)
318       section instead.
319

SECTION: bell

321       urgent
322           When set to yes, foot will signal urgency to the compositor through
323           the XDG activation protocol whenever BEL is received, and the win‐
324           dow does NOT have keyboard foccus.
325
326           If the compositor does not implement this protocol, the margins
327           will be painted in red instead.
328
329           Applications can enable/disable this feature programmatically with
330           the CSI ? 1042 h and CSI ? 1042 l escape sequences.
331
332           Default: no
333
334       notify
335           When set to yes, foot will emit a desktop notification using the
336           command specified in the notify option whenever BEL is received. By
337           default, bell notifications are shown only when the window does not
338           have keyboard focus. See notify-focus-inhibit.
339
340           Default: no
341
342       command
343           When set, foot will execute this command when BEL is received. De‐
344           fault: none
345
346       command-focused
347           Whether to run the command on BEL even while focused. Default: no
348

SECTION: scrollback

350       lines
351           Number of scrollback lines. The maximum number of allocated lines
352           will be this value plus the number of visible lines, rounded up to
353           the nearest power of 2. Default: 1000.
354
355       multiplier
356           Amount to multiply mouse scrolling with. It is a decimal number,
357           i.e. fractions are allowed. Default: 3.0.
358
359       indicator-position
360           Configures the style of the scrollback position indicator. One of
361           none, fixed or relative. none disables the indicator completely.
362           fixed always renders the indicator near the top of the window, and
363           relative renders the indicator at the position corresponding to the
364           current scrollback position. Default: relative.
365
366       indicator-format
367           Which format to use when displaying the scrollback position indica‐
368           tor. Either percentage, line, or a custom fixed string. This option
369           is ignored if indicator-position=none. Default: empty string.
370

SECTION: url

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

SECTION: cursor

414       This section controls the cursor style and color. Note that applica‐
415       tions can change these at runtime.
416
417       style
418           Configures the default cursor style, and is one of: block, beam or
419           underline. Note that this can be overridden by applications. De‐
420           fault: block.
421
422       blink
423           Boolean. Enables blinking cursor. Note that this can be overridden
424           by applications. Default: no.
425
426       color
427           Two RRGGBB values (i.e. plain old 6-digit hex values, without pre‐
428           fix) specifying the foreground (text) and background (cursor) col‐
429           ors for the cursor.
430
431           Default: inverse foreground/background colors.
432
433           Note that this value only applies to the block cursor. The other
434           cursor styles are always rendered with the foreground color.
435
436       beam-thickness
437           Thickness (width) of the beam styled cursor. The value is in
438           points, and its exact value thus depends on the monitor's DPI. To
439           instead specify a thickness in pixels, use the px suffix: e.g.
440           beam-thickness=2px. Default: 1.5
441
442       underline-thickness
443           Thickness (height) of the underline styled cursor. The value is in
444           points, and its exact value thus depends on the monitor's DPI.
445
446           To instead specify a thickness in pixels, use the px suffix: e.g.
447           underline-thickness=2px.
448
449           Note that if left unset, the cursor's thickness will scale with the
450           font size, while if set, the size is fixed.
451
452           Default: font underline thickness.
453

SECTION: mouse

455       hide-when-typing
456           Boolean. When enabled, the mouse cursor is hidden while typing. De‐
457           fault: no.
458
459       alternate-scroll-mode
460           Boolean. This option controls the initial value for the alternate
461           scroll mode. When this mode is enabled, mouse scroll events are
462           translated to up/down key events when displaying the alternate
463           screen.
464
465           This lets you scroll with the mouse in e.g. pagers (like less)
466           without enabling native mouse support in them.
467
468           Alternate scrolling is not used if the application enables native
469           mouse support.
470
471           This option can be modified by applications at run-time using the
472           escape sequences CSI ? 1007 h (enable) and CSI ? 1007 l (disable).
473
474           Default: yes.
475

SECTION: colors

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

SECTION: csd

572       This section controls the look of the CSDs (Client Side Decorations).
573       Note that the default is to not use CSDs, but instead to use SSDs
574       (Server Side Decorations) when the compositor supports it.
575
576       Note that unlike the colors defined in the colors section, the color
577       values here are in AARRGGBB (i.e. plain old 8-digit hex values) format.
578       I.e. they contain an alpha component - 00 means completely transparent,
579       and ff fully opaque.
580
581       Examples:
582
583       •   ffffffff: white, fully opaque
584       •   ff000000: black, fully opaque
585       •   7fffffff: white, semi-transparent
586       •   ff00ff00: green, fully opaque
587
588
589       preferred
590           Which type of window decorations to prefer: client (CSD), server
591           (SSD) or none.
592
593           Note that this is only a hint to the compositor. Depending on com‐
594           positor support, and how it has been configured, it may instruct
595           foot to use CSDs even though this option has been set to server, or
596           render SSDs despite client or none being set.
597
598           Default: server.
599
600       size
601           Height, in pixels (subject to output scaling), of the titlebar.
602           Setting it to 0 will hide the titlebar, while still showing the
603           border (if border-width is set to a non-zero value). Default: 26.
604
605       color
606           Titlebar color. Default: use the default foreground color.
607
608       font
609           Font to use for the title bar. This is a list of fonts, similar to
610           the main font option. Note that the font will be sized using the
611           title bar size. That is, all :size and :pixelsize attributes will
612           be ignored. Default: primary font.
613
614       hide-when-maximized
615           Boolean. When enabled, the CSD titlebar is hidden when the window
616           is maximized. The completely disable the titlebar, set size to 0
617           instead. Default: no.
618
619       border-width
620           Width of the border, in pixels (subject to output scaling). Note
621           that the border encompasses the entire window, including the title
622           bar. Default: 0.
623
624       border-color
625           Color of border. By default, the title bar color is used. If the
626           title bar color has not been set, the default foreground color
627           (from the color scheme) is used. Default: titlebar color.
628
629       button-width
630           Width, in pixels (subject to output scaling), of the minimize/maxi‐
631           mize/close buttons. Default: 26.
632
633       button-color
634           Foreground color on the minimize/maximize/close buttons. Default:
635           use the default background color.
636
637       button-minimize-color
638           Minimize button's background color. Default: use the default regu‐
639           lar4 color (blue).
640
641       button-maximize-color
642           Maximize button's background color. Default: use the default regu‐
643           lar2 color (green).
644
645       button-close-color
646           Close button's background color. Default: use the default regular1
647           color (red).
648

SECTION: key-bindings

650       This section lets you override the default key bindings.
651
652       The general format is action=combo1...comboN. That is, each action may
653       have one or more key combinations, space separated. Each combination is
654       in the form mod1+mod2+key. The names of the modifiers and the key must
655       be valid XKB key names.
656
657       Note that if Shift is one of the modifiers, the key must not be in up‐
658       per case. For example, Control+Shift+V will never trigger, but Con‐
659       trol+Shift+v will.
660
661       Note that Alt is usually called Mod1.
662
663       xkbcli interactive-wayland can be useful for finding keysym names.
664
665       A key combination can only be mapped to one action. Lets say you want
666       to bind Control+Shift+R to fullscreen. Since this is the default short‐
667       cut for search-start, you first need to unmap the default binding. This
668       can be done by setting action=none; e.g. search-start=none.
669
670       noop
671           All key combinations listed here will not be sent to the applica‐
672           tion. Default: not bound.
673
674       scrollback-up-page
675           Scrolls up/back one page in history. Default: Shift+Page_Up.
676
677       scrollback-up-half-page
678           Scrolls up/back half of a page in history. Default: not bound.
679
680       scrollback-up-line
681           Scrolls up/back a single line in history. Default: not bound.
682
683       scrollback-down-page
684           Scroll down/forward one page in history. Default: Shift+Page_Down.
685
686       scrollback-down-half-page
687           Scroll down/forward half of a page in history. Default: not bound.
688
689       scrollback-down-line
690           Scroll down/forward a single line in history. Default: not bound.
691
692       scrollback-home
693           Scroll to the beginning of the scrollback. Default: not bound.
694
695       scrollback-end
696           Scroll to the end (bottom) of the scrollback. Default: not bound.
697
698       clipboard-copy
699           Copies the current selection into the clipboard. Default: Con‐
700           trol+Shift+c XF86Copy.
701
702       clipboard-paste
703           Pastes from the clipboard. Default: Control+Shift+v XF86Paste.
704
705       primary-paste
706           Pastes from the primary selection. Default: Shift+Insert (also de‐
707           fined in mouse-bindings).
708
709       search-start
710           Starts a scrollback/history search. Default: Control+Shift+r.
711
712       font-increase
713           Increases the font size by 0.5pt. Default: Control+plus Con‐
714           trol+equal Control+KP_Add.
715
716       font-decrease
717           Decreases the font size by 0.5pt. Default: Control+minus Con‐
718           trol+KP_Subtract.
719
720       font-reset
721           Resets the font size to the default. Default: Control+0 Con‐
722           trol+KP_0.
723
724       spawn-terminal
725           Spawns a new terminal. If the shell has been configured to emit the
726           OSC 7 escape sequence, the new terminal will start in the current
727           working directory. Default: Control+Shift+n.
728
729       minimize
730           Minimizes the window. Default: not bound.
731
732       maximize
733           Toggle the maximized state. Default: not bound.
734
735       fullscreen
736           Toggles the fullscreen state. Default: not bound.
737
738       pipe-visible, pipe-scrollback, pipe-selected
739           Pipes the currently visible text, the entire scrollback, or the
740           currently selected text to an external tool. The syntax for this
741           option is a bit special; the first part of the value is the command
742           to execute enclosed in "[]", followed by the binding(s).
743
744           You can configure multiple pipes as long as the command strings are
745           different and the key bindings are unique.
746
747           Note that the command is not automatically run inside a shell; use
748           sh -c "command line" if you need that.
749
750           Example:
751               pipe-visible=[sh -c "xurls | uniq | tac | fuzzel | xargs -r
752               firefox"] Control+Print
753
754           Default: not bound
755
756       show-urls-launch
757           Enter URL mode, where all currently visible URLs are tagged with a
758           jump label with a key sequence that will open the URL (and exit URL
759           mode). Default: Control+Shift+u.
760
761       show-urls-persistent
762           Similar to show-urls-launch, but does not automatically exit URL
763           mode after activating an URL. Default: none.
764
765       show-urls-copy
766           Enter URL mode, where all currently visible URLs are tagged with a
767           jump label with a key sequence that will place the URL in the clip‐
768           board. Default: none.
769
770       prompt-prev
771           Jump to the previous, currently not visible, prompt (requires shell
772           integration, see foot(1)). Default: Control+Shift+z.
773
774       prompt-next
775           Jump the next prompt (requires shell integration, see foot(1)). De‐
776           fault: Control+Shift+x.
777
778       unicode-input
779           Input a Unicode character by typing its codepoint in hexadecimal,
780           followed by Enter or Space.
781
782           For example, to input the character ö (LATIN SMALL LETTER O WITH
783           DIAERESIS, Unicode codepoint 0xf6), you would first activate this
784           key binding, then type: f, 6, Enter.
785
786           Another example: to input 😍 (SMILING FACE WITH HEART-SHAPED EYES,
787           Unicode codepoint 0x1f60d), activate this key binding, then type:
788           1, f, 6, 0, d, Enter.
789
790           Recognized key bindings in Unicode input mode:
791
792           •   Enter, Space: commit the Unicode character, then exit this
793               mode.
794           •   Escape, q, Ctrl+c, Ctrl+d, Ctrl+g: abort input, then exit this
795               mode.
796           •   0-9, a-f: append next digit to the Unicode's codepoint.
797           •   Backspace: undo the last digit.
798
799
800           Note that there is no visual feedback while in this mode. This is
801           by design; foot's Unicode input mode is considered to be a fall‐
802           back. The preferred way of entering Unicode characters, emojis etc
803           is by using an IME.
804
805           Default: none.
806

SECTION: search-bindings

808       This section lets you override the default key bindings used in scroll‐
809       back search mode. The syntax is exactly the same as the regular key-
810       bindings.
811
812       cancel
813           Aborts the search. The viewport is restored and the primary selec‐
814           tion is not updated. Default: Control+g Control+c Escape.
815
816       commit
817           Exit search mode and copy current selection into the primary selec‐
818           tion. Viewport is not restored. To copy the selection to the regu‐
819           lar clipboard, use Control+Shift+c. Default: Return.
820
821       find-prev
822           Search backwards in the scrollback history for the next match. De‐
823           fault: Control+r.
824
825       find-next
826           Searches forwards in the scrollback history for the next match. De‐
827           fault: Control+s.
828
829       cursor-left
830           Moves the cursor in the search box one character to the left. De‐
831           fault: Left Control+b.
832
833       cursor-left-word
834           Moves the cursor in the search box one word to the left. Default:
835           Control+Left Mod1+b.
836
837       cursor-right
838           Moves the cursor in the search box one character to the right. De‐
839           fault: Right Control+f.
840
841       cursor-right-word
842           Moves the cursor in the search box one word to the right. Default:
843           Control+Right Mod1+f.
844
845       cursor-home
846           Moves the cursor in the search box to the beginning of the input.
847           Default: Home Control+a.
848
849       cursor-end
850           Moves the cursor in the search box to the end of the input. De‐
851           fault: End Control+e.
852
853       delete-prev
854           Deletes the character before the cursor. Default: BackSpace.
855
856       delete-prev-word
857           Deletes the word before the cursor. Default: Mod1+BackSpace Con‐
858           trol+BackSpace.
859
860       delete-next
861           Deletes the character after the cursor. Default: Delete.
862
863       delete-next-word
864           Deletes the word after the cursor. Default: Mod1+d Control+Delete.
865
866       extend-to-word-boundary
867           Extend current selection to the next word boundary. Default: Con‐
868           trol+w.
869
870       extend-to-next-whitespace
871           Extend the current selection to the next whitespace. Default: Con‐
872           trol+Shift+w.
873
874       clipboard-paste
875           Paste from the clipboard into the search buffer. Default: Control+v
876           Control+y.
877
878       primary-paste
879           Paste from the primary selection into the search buffer. Default:
880           Shift+Insert.
881
882       unicode-input
883           Unicode input mode. See key-bindings.unicode-input for details. De‐
884           fault: none.
885

SECTION: url-bindings

887       This section lets you override the default key bindings used in URL
888       mode. The syntax is exactly the same as the regular key-bindings.
889
890       Be careful; do not use single-letter keys that are also used in
891       [url].label-letters, as doing so will make some URLs inaccessible.
892
893       cancel
894           Exits URL mode without opening a URL. Default: Control+g Control+c
895           Control+d Escape.
896
897       toggle-url-visible
898           By default, the jump label only shows the key sequence required to
899           activate it. This is fine as long as the URL is visible in the
900           original text.
901
902           But with e.g. OSC-8 URLs (the terminal version of HTML anchors,
903           i.e. "links"), the text on the screen can be something completey
904           different than the URL.
905
906           This action toggles between showing and hiding the URL on the jump
907           label.
908
909           Default: t.
910

SECTION: text-bindings

912       This section lets you remap key combinations to custom escape se‐
913       quences.
914
915       The format is text=combo1...comboN. That is, the string to emit may
916       have one or more key combinations, space separated. Each combination is
917       in the form mod1+mod2+key. The names of the modifiers and the key must
918       be valid XKB key names.
919
920       The text string specifies the characters, or bytes, to emit when the
921       associated key combination(s) are pressed. There are two ways to spec‐
922       ify a character:
923
924       •   Normal, printable characters are written as-is: abcdef.
925       •   Bytes (e.g. ESC) are written as two-digit hexadecimal numbers, with
926           a \x prefix: \x1b.
927
928
929       Example: you would like to remap Super+k to the Up key.
930
931       The escape sequence for the Up key is ESC [ A (without the spaces).
932       Thus, we need to specify this in foot.ini (Mod4 is the XKB name for the
933       Super/logo key):
934
935       \x1b[A = Mod4+k
936
937       Another example: to remap Super+c to Control+c:
938
939       \x03 = Mod4+c
940

SECTION: mouse-bindings

942       This section lets you override the default mouse bindings.
943
944       The general format is action=combo1...comboN. That is, each action may
945       have one or more key combinations, space separated. Each combination is
946       in the form mod1+mod2+BTN_<name>[-COUNT]. The names of the modifiers
947       must be valid XKB key names, and the button name must be a valid libin‐
948       put name. You can find the button names using libinput debug-events.
949
950       The trailing COUNT is optional and specifies the click count required
951       to trigger the binding. The default if COUNT is omitted is 1.
952
953       A modifier+button combination can only be mapped to one action. Lets
954       say you want to bind BTN_MIDDLE to fullscreen. Since BTN_MIDDLE is the
955       default binding for primary-paste, you first need to unmap the default
956       binding. This can be done by setting action=none; e.g. primary-
957       paste=none.
958
959       selection-override-modifiers
960           The modifiers set in this set (which may be set to any combination
961           of modifiers, e.g. mod1+mod2+mod3, as well as none) are used to en‐
962           able selecting text with the mouse irrespective of whether a client
963           application currently has the mouse grabbed. These modifiers cannot
964           be used as modifiers in mouse bindings. Because the order of bind‐
965           ings is significant, it is best to set this prior to any other
966           mouse bindings that might use modifiers in the default set. De‐
967           fault: Shift
968
969       The actions to which mouse combos can be bound are listed below. All
970       actions listed under key-bindings can be used here as well.
971
972       select-begin
973           Begin an interactive selection. The selection is finalized, and
974           copied to the primary selection, when the button is released. De‐
975           fault: BTN_LEFT.
976
977       select-begin-block
978           Begin an interactive block selection. The selection is finalized,
979           and copied to the primary selection, when the button is released.
980           Default: Control+BTN_LEFT.
981
982       select-word
983           Begin an interactive word-wise selection, where words are separated
984           by whitespace and all characters defined by the word-delimiters op‐
985           tion. The selection is finalized, and copied to the primary selec‐
986           tion, when the button is released. Default: BTN_LEFT-2.
987
988       select-word-whitespace
989           Same as select-word, but the characters in the word-delimiters op‐
990           tion are ignored. I.e only whitespace characters act as delimiters.
991           The selection is finalized, and copied to the primary selection,
992           when the button is released. Default: Control+BTN_LEFT-2.
993
994       select-row
995           Begin an interactive row-wise selection. The selection is final‐
996           ized, and copied to the primary selection, when the button is re‐
997           leased. Default: BTN_LEFT-3.
998
999       select-extend
1000           Interactively extend an existing selection, using the original se‐
1001           lection mode (normal, block, word-wise or row-wise). The selection
1002           is finalized, and copied to the primary selection, when the button
1003           is released. Default: BTN_RIGHT.
1004
1005       select-extend-character-wise
1006           Same as select-extend, but forces the selection mode to normal
1007           (i.e. character wise). Note that this causes subsequent select-ex‐
1008           tend operations to be character wise. This action is ignored for
1009           block selections. Default: Control+BTN_RIGHT.
1010
1011       primary-paste
1012           Pastes from the primary selection. Default: BTN_MIDDLE.
1013

TWEAK

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

SEE ALSO

1252       foot(1), footclient(1)
1253
1254
1255
1256                                  2022-08-31                       foot.ini(5)
Impressum