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 ~/.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: bell

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

SECTION: scrollback

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

SECTION: url

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

SECTION: cursor

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

SECTION: mouse

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

SECTION: colors

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

SECTION: csd

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

SECTION: key-bindings

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

SECTION: search-bindings

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

SECTION: url-bindings

824       This section lets you override the default key bindings used in URL
825       mode. The syntax is exactly the same as the regular key-bindings.
826
827       Be careful; do not use single-letter keys that are also used in
828       [url].label-letters, as doing so will make some URLs inaccessible.
829
830       cancel
831           Exits URL mode without opening a URL. Default: Control+g Control+c
832           Control+d Escape.
833
834       toggle-url-visible
835           By default, the jump label only shows the key sequence required to
836           activate it. This is fine as long as the URL is visible in the
837           original text.
838
839           But with e.g. OSC-8 URLs (the terminal version of HTML anchors,
840           i.e. "links"), the text on the screen can be something completey
841           different than the URL.
842
843           This action toggles between showing and hiding the URL on the jump
844           label.
845
846           Default: t.
847

SECTION: text-bindings

849       This section lets you remap key combinations to custom escape se‐
850       quences.
851
852       The format is text=combo1...comboN. That is, the string to emit may
853       have one or more key combinations, space separated. Each combination is
854       in the form mod1+mod2+key. The names of the modifiers and the key must
855       be valid XKB key names.
856
857       The text string specifies the characters, or bytes, to emit when the
858       associated key combination(s) are pressed. There are two ways to spec‐
859       ify a character:
860
861       •   Normal, printable characters are written as-is: abcdef.
862       •   Bytes (e.g. ESC) are written as two-digit hexadecimal numbers, with
863           a \x prefix: \x1b.
864
865
866       Example: you would like to remap Super+k to the Up key.
867
868       The escape sequence for the Up key is ESC [ A (without the spaces).
869       Thus, we need to specify this in foot.ini (Mod4 is the XKB name for the
870       Super/logo key):
871
872       \x1b[A = Mod4+k
873
874       Another example: to remap Super+c to Control+c:
875
876       \x03 = Mod4+c
877

SECTION: mouse-bindings

879       This section lets you override the default mouse bindings.
880
881       The general format is action=combo1...comboN. That is, each action may
882       have one or more key combinations, space separated. Each combination is
883       in the form mod1+mod2+BTN_<name>[-COUNT]. The names of the modifiers
884       must be valid XKB key names, and the button name must be a valid libin‐
885       put name. You can find the button names using libinput debug-events.
886
887       The trailing COUNT is optional and specifies the click count required
888       to trigger the binding. The default if COUNT is omitted is 1.
889
890       A modifier+button combination can only be mapped to one action. Lets
891       say you want to bind BTN_MIDDLE to fullscreen. Since BTN_MIDDLE is the
892       default binding for primary-paste, you first need to unmap the default
893       binding. This can be done by setting action=none; e.g. primary-
894       paste=none.
895
896       selection-override-modifiers
897           The modifiers set in this set (which may be set to any combination
898           of modifiers, e.g. mod1+mod2+mod3, as well as none) are used to en‐
899           able selecting text with the mouse irrespective of whether a client
900           application currently has the mouse grabbed. These modifiers cannot
901           be used as modifiers in mouse bindings. Because the order of bind‐
902           ings is significant, it is best to set this prior to any other
903           mouse bindings that might use modifiers in the default set. De‐
904           fault: Shift
905
906       The actions to which mouse combos can be bound are listed below. All
907       actions listed under key-bindings can be used here as well.
908
909       select-begin
910           Begin an interactive selection. The selection is finalized, and
911           copied to the primary selection, when the button is released. De‐
912           fault: BTN_LEFT.
913
914       select-begin-block
915           Begin an interactive block selection. The selection is finalized,
916           and copied to the primary selection, when the button is released.
917           Default: Control+BTN_LEFT.
918
919       select-word
920           Begin an interactive word-wise selection, where words are separated
921           by whitespace and all characters defined by the word-delimiters op‐
922           tion. The selection is finalized, and copied to the primary selec‐
923           tion, when the button is released. Default: BTN_LEFT-2.
924
925       select-word-whitespace
926           Same as select-word, but the characters in the word-delimiters op‐
927           tion are ignored. I.e only whitespace characters act as delimiters.
928           The selection is finalized, and copied to the primary selection,
929           when the button is released. Default: Control+BTN_LEFT-2.
930
931       select-row
932           Begin an interactive row-wise selection. The selection is final‐
933           ized, and copied to the primary selection, when the button is re‐
934           leased. Default: BTN_LEFT-3.
935
936       select-extend
937           Interactively extend an existing selection, using the original se‐
938           lection mode (normal, block, word-wise or row-wise). The selection
939           is finalized, and copied to the primary selection, when the button
940           is released. Default: BTN_RIGHT.
941
942       select-extend-character-wise
943           Same as select-extend, but forces the selection mode to normal
944           (i.e. character wise). Note that this causes subsequent select-ex‐
945           tend operations to be character wise. This action is ignored for
946           block selections. Default: Control+BTN_RIGHT.
947
948       primary-paste
949           Pastes from the primary selection. Default: BTN_MIDDLE.
950

TWEAK

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

SEE ALSO

1189       foot(1), footclient(1)
1190
1191
1192
1193                                  2022-04-28                       foot.ini(5)
Impressum