A fast, lightweight and minimalistic Wayland terminal emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

45 KiB

Changelog

Unreleased

Added

  • Support for DECSET/DECRST 2026, as an alternative to the existing "synchronized updates" DCS sequences (dnkl/foot#459).
  • cursor.beam-thickness option to foot.ini (dnkl/foot#464).
  • cursor.underline-thickness option to foot.ini (dnkl/foot#524).
  • Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing characters rendered by foot itself (rather than using font glyphs) (dnkl/foot#471).
  • Dedicated [bell] section to config, supporting multiple actions and a new command action to run an arbitrary command. (dnkl/foot#483)
  • Dedicated [url] section to config.
  • [url].protocols option to foot.ini (dnkl/foot#531).
  • Support for setting the full 256 color palette in foot.ini (dnkl/foot#489)
  • XDG activation support, will be used by [bell].urgent when available (falling back to coloring the window margins red when unavailable) (dnkl/foot#487).
  • ctrl+c as a default key binding; to cancel search/url mode.
  • ${window-title} to notify.
  • Support for including files in foot.ini (dnkl/foot#555).
  • ENVIRONMENT section in foot(1) and footclient(1) man pages (dnkl/foot#556).
  • tweak.pua-double-width option to foot.ini, letting you force Private Usage Area codepoints to be treated as double-width characters.
  • OSC 9 desktop notifications (iTerm2 compatible).
  • Support for LS2 and LS3 (locking shift) escape sequences (dnkl/foot#581).
  • Support for overriding configuration options on the command line (dnkl/foot#554).

Changed

  • fcft: required version bumped from 2.3.x to 2.4.x.
  • generate-alt-random-writes.py --sixel: width and height of emitted sixels has been adjusted.
  • Concealed text (\E[8m) is now revealed when highlighted.
  • The background color of highlighted text is now adjusted, when the foreground and background colors are the same, making the highlighted text legible (dnkl/foot#455).
  • cursor.style=bar to cursor.style=beam. bar remains a recognized value, but will eventually be deprecated, and removed.
  • Point values in line-height, letter-spacing, horizontal-letter-offset and vertical-letter-offset are now rounded, not truncated, when translated to pixel values.
  • Foot’s exit code is now -26/230 when foot itself failed to launch (due to invalid command line options, client application/shell not found etc). Footclient’s exit code is -36/220 when it itself fails to launch (e.g. bad command line option) and -26/230 when the foot server failed to instantiate a new window (dnkl/foot#466).
  • Background alpha no longer applied to palette or RGB colors that matches the background color.
  • Improved performance on compositors that does not release shm buffers immediately, e.g. KWin (dnkl/foot#478).
  • ctrl + w (extend-to-word-boundary) can now be used across lines (dnkl/foot#421).
  • Ignore auto-detected URLs that overlap with OSC-8 URLs.
  • Default value for the notify option to use -a ${app-id} -i ${app-id} ... instead of -a foot -i foot ....
  • scrollback-*+pipe-scrollback key bindings are now passed through to the client application when the alt screen is active (dnkl/foot#573).
  • Reverse video (\E[?5h) now only swaps the default foreground and background colors. Cells with explicit foreground and/or background colors remain unchanged.
  • Tabs (\t) are now preserved when the window is resized, and when copying text (dnkl/foot#508).
  • Writing a sixel on top of another sixel no longer erases the first sixel, but the two are instead blended (dnkl/foot#562).
  • Running foot without a configuration file is no longer an error; it has been demoted to a warning, and is no longer presented as a notification in the terminal window, but only logged on stderr.

Deprecated

  • bell option in foot.ini; set actions in the [bell] section instead.
  • url-launch option in foot.ini; use launch in the [url] section instead.
  • jump-label-letters option in foot.ini; use label-letters in the [url] section instead.
  • osc8-underline option in foot.ini; use osc8-underline in the [url] section instead.

Removed

  • Buffer damage quirk for Plasma/KWin.

Fixed

  • generate-alt-random-writes.py --sixel sometimes crashing, resulting in PGO build failures.
  • Wrong colors in the 256-color cube (dnkl/foot#479).
  • Memory leak triggered by “opening” an OSC-8 URI and then resetting the terminal without closing the URI (dnkl/foot#495).
  • Assertion when emitting a sixel occupying the entire scrollback history (dnkl/foot#494).
  • Font underlines being positioned below the cell (and thus being invisible) for certain combinations of fonts and font sizes (dnkl/foot#503).
  • Sixels with transparent bottom border being resized below the size specified in ”Set Raster Attributes”.
  • Fonts sometimes not being reloaded with the correct scaling factor when dpi-aware=no, or dpi-aware=auto with monitor(s) with a scaling factor > 1 (dnkl/foot#509).
  • Crash caused by certain CSI sequences with very large parameter values (dnkl/foot#522).
  • Rare occurrences where the window did not close when the shell exited. Only seen on FreeBSD (dnkl/foot#534)
  • Foot process(es) sometimes remaining, using 100% CPU, when closing multiple foot windows at the same time (dnkl/foot#542).
  • Regression where <mod>+shift+tab always produced \E[Z instead of the correct \E[27;<mod>;9~ sequence (dnkl/foot#547).
  • Crash when a line wrapping OSC-8 URI crossed the scrollback wrap around (dnkl/foot#552).
  • Selection incorrectly wrapping rows ending with an explicit newline (dnkl/foot#565).
  • Off-by-one error in markup of auto-detected URLs when the URL ends in the right-most column.
  • Multi-column characters being cut in half when resizing the alternate screen.
  • Restore SIGHUP in spawned processes.
  • Text reflow performance (dnkl/foot#504).
  • IL+DL (CSI Ps L + CSI Ps M) now moves the cursor to column 0.
  • SS2 and SS3 (single shift) escape sequences behaving like locking shifts (dnkl/foot#580).
  • TEXT+STRING+UTF8_STRING mime types not being recognized in clipboard offers (dnkl/foot#583).
  • Memory leak caused by custom box drawing glyphs not being completely freed when destroying a foot window instance (dnkl/foot#586).

Security

Contributors

1.7.2

Added

  • URxvt OSC-11 extension to set background alpha (dnkl/foot#436).
  • OSC 17/117/19/119 - change/reset selection background/foreground color.
  • box-drawings-uses-font-glyphs=yes|no option to foot.ini (dnkl/foot#430).

Changed

  • Underline cursor is now rendered below text underline (dnkl/foot#415).
  • Foot now tries much harder to keep URL jump labels inside the window geometry (dnkl/foot#443).
  • bold-text-in-bright may now be set to palette-based, in which case it will use the corresponding bright palette color when the color to brighten matches one of the base 8 colors, instead of increasing the luminance (dnkl/foot#449).

Fixed

  • Reverted "Consumed modifiers are no longer sent to the client application" (dnkl/foot#425).
  • Crash caused by a double free originating in XTSMGRAPHICS - set number of color registers (dnkl/foot#427).
  • Wrong action referenced in error message for key binding collisions (dnkl/foot#432).
  • OSC 4/104 out-of-bounds accesses to the color table. This was the reason pywal turned foot windows transparent (dnkl/foot#434).
  • PTY not being drained when the client application terminates.
  • auto_left_margin not being limited to cub1 (dnkl/foot#441).
  • Crash in scrollback search mode when searching beyond the last output.

Contributors

1.7.1

Changed

  • Update PGO build instructions in INSTALL.md (dnkl/foot#418).
  • In scrollback search mode, empty cells can now be matched by spaces.

Fixed

  • Logic that repairs invalid key bindings ended up breaking valid key bindings instead (dnkl/foot#407).
  • Custom line-height settings now scale when increasing or decreasing the font size at run-time.
  • Newlines sometimes incorrectly inserted into copied text (dnkl/foot#410).
  • Crash when compositor send text-input-v3::enter events without first having sent a keyboard::enter event (dnkl/foot#411).
  • Deadlock when rendering sixel images.
  • URL labels, scrollback search box or scrollback position indicator sometimes not showing up, caused by invalidly sized surface buffers when output scaling was enabled (dnkl/foot#409).
  • Empty sixels resulted in non-empty images.

1.7.0

Added

  • The pad option now accepts an optional third argument, center (e.g. pad=5x5 center), causing the grid to be centered in the window, with equal amount of padding of the left/right and top/bottom side (dnkl/foot#273).
  • line-height, letter-spacing, horizontal-letter-offset and vertical-letter-offset to foot.ini. These options let you tweak cell size and glyph positioning (dnkl/foot#244).
  • Key/mouse binding select-extend-character-wise, which forces the selection mode to 'character-wise' when extending a selection.
  • DECSET 47, 1047 and 1048.
  • URL detection and OSC-8 support. URLs are highlighted and activated using the keyboard (no mouse support). See foot(1)::URLs, or README.md for details (dnkl/foot#14).
  • -d,--log-level={info|warning|error} to both foot and footclient (dnkl/foot#337).
  • -D,--working-directory=DIR to both foot and footclient (dnkl/foot#347)
  • DECSET 80 - sixel scrolling (dnkl/foot#361).
  • DECSET 1070 - sixel private color palette (dnkl/foot#362).
  • DECSET 8452 - position cursor to the right of sixels (dnkl/foot#363).
  • Man page foot-ctlseqs(7), documenting all supported escape sequences (dnkl/foot#235).
  • Support for transparent sixels (DCS parameter P2=1) (dnkl/foot#391).
  • -N,--no-wait to footclient (dnkl/foot#395).
  • Completions for Bash shell (dnkl/foot#10).
  • Implement XTVERSION (CSI > 0q). Foot will reply with DCS>|foot(<major>.<minor>.<patch>)ST (dnkl/foot#359).

Changed

  • The fcft and tllist library subprojects are now handled via Meson wrap files instead of needing to be manually cloned.
  • Box drawing characters are now rendered by foot, instead of using font glyphs (dnkl/foot#198)
  • Double- or triple clicking then dragging now extends the selection word- or line-wise (dnkl/foot#267).
  • The line thickness of box drawing characters now depend on the font size (dnkl/foot#281).
  • Extending a word/line-wise selection now uses the original selection mode instead of switching to character-wise.
  • While doing an interactive resize of a foot window, foot now requires 100ms of idle time (where the window size does not change) before sending the new dimensions to the client application. The timing can be tweaked, or completely disabled, by setting resize-delay-ms (dnkl/foot#301).
  • CSI 13 ; 2 t now reports (0,0).
  • Key binding matching logic; key combinations like Control+Shift+C must now be written as either Control+C or Control+Shift+c, the latter being the preferred variant. (dnkl/foot#376)
  • Consumed modifiers are no longer sent to the client application (dnkl/foot#376).
  • The minimum version requirement for the libxkbcommon dependency is now 1.0.0.
  • Empty pixel rows at the bottom of a sixel is now trimmed.
  • Sixels with DCS parameter P2=0|2 now use the current ANSI background color for empty pixels instead of the default background color (dnkl/foot#391).
  • Sixel decoding optimized; up to 100% faster in some cases.
  • Reported sixel “max geometry” from current window size, to the configured maximum size (defaulting to 10000x10000).

Removed

  • The -g,--geometry command-line option (which had been deprecated and superseded by -w,--window-size-pixels since 1.5.0).

Fixed

  • Some mouse bindings (primary paste, for example) did not require shift to be pressed while used in a mouse grabbing application. This meant the mouse event was never seen by the application.
  • Terminals spawned with ctrl+shift+n not terminating when exiting shell (dnkl/foot#366).
  • Default value of -t,--term in --help output when foot was built without terminfo support.
  • Drain PTY when the client application terminates.

Contributors

1.6.4

Added

  • selection-target=none|primary|clipboard|both to foot.ini. It can be used to configure which clipboard(s) selected text should be copied to. The default is primary, which corresponds to the behavior in older foot releases (dnkl/foot#288).

Changed

  • The IME state no longer stays stuck in the terminal if the IME goes away during preedit.
  • -Dterminfo changed from a boolean to a feature option.
  • Use standard signals instead of a signalfd to handle SIGCHLD. Fixes an issue on FreeBSD where foot did not detect when the client application had terminated.

Fixed

  • BS, HT and DEL from being stripped in bracketed paste mode.

Contributors

1.6.3

Added

  • Completions for fish shell (dnkl/foot#11)
  • FreeBSD support (dnkl/foot#238).
  • IME popup location support: foot now sends the location of the cursor so any popup can be displayed near the text that is being typed.

Changed

  • Trailing comments in foot.ini must now be preceded by a space or tab (dnkl/foot#270)
  • The scrollback search box no longer accepts non-printable characters.
  • Non-formatting C0 control characters, BS, HT and DEL are now stripped from pasted text.

Fixed

  • Exit when the client application terminates, not when the TTY file descriptor is closed.
  • Crash on compositors not implementing the text input interface (dnkl/foot#259).
  • Erased, overflowing glyphs (when tweak.allow-overflowing-double-width-glyphs=yes - the default) not properly erasing the cell overflowed into.
  • word-delimiters option ignores # and subsequent characters (dnkl/foot#270)
  • Combining characters not being rendered when composed with colored bitmap glyphs (i.e. colored emojis).
  • Pasting URIs from the clipboard when the source has not newline-terminated the last URI (dnkl/foot#291).
  • Sixel “current geometry” query response not being bounded by the current window dimensions (fixes lsix output)
  • Crash on keyboard input when repeat rate was zero (i.e. no repeat).
  • Wrong button encoding of mouse buttons 6 and 7 in mouse events.
  • Scrollback search not matching composed characters.
  • High CPU usage when holding down e.g. arrow keys while in scrollback search mode.
  • Rendering of composed characters in the scrollback search box.
  • IME pre-edit cursor when positioned at the end of the pre-edit string.
  • Scrollback search not matching multi-column characters.

Contributors

1.6.2

Fixed

  • Version number in meson.build.

1.6.1

Added

  • --seed to generate-alt-random.py, enabling deterministic PGO builds.

Changed

  • Use -std=c11 instead of -std=c18.
  • Added -Wno-profile-instr-unprofiled to Clang cflags in PGO builds (INSTALL.md)

Fixed

  • Missing dependencies in meson, causing heavily parallelized builds to fail.
  • Background color when alpha < 1.0 being wrong (dnkl/foot#249).
  • generate-alt-random.py failing in containers.

Contributors

1.6.0

For packagers

Starting with this release, foot can be PGO:d (compiled using profile guided optimizations) without a running Wayland session. This means foot can be PGO:d in e.g. sandboxed build scripts. See INSTALL.md.

Added

  • IME support. This is compile-time optional, see INSTALL.md (dnkl/foot#134).
  • DECSET escape to enable/disable IME: CSI ? 737769 h enables IME and CSI ? 737769 l disables it. This can be used to e.g. enable/disable IME when entering/leaving insert mode in vim.
  • dpi-aware option to foot.ini. The default, auto, sizes fonts using the monitor’s DPI when output scaling has been disabled. If output scaling has been enabled, fonts are sized using the scaling factor. DPI-only font sizing can be forced by setting dpi-aware=yes. Setting dpi-aware=no forces font sizing to be based on the scaling factor. (dnkl/foot#206).
  • Implement reverse auto-wrap (auto_left_margin, bw, in terminfo). This mode can be enabled/disabled with CSI ? 45 h and CSI ? 45 l. It is enabled by default (dnkl/foot#150).
  • bell option to foot.ini. Can be set to set-urgency to make foot render the margins in red when receiving BEL while not having keyboard focus. Applications can dynamically enable/disable this with the CSI ? 1042 h and CSI ? 1042 l escape sequences. Note that Wayland does not implement an urgency hint like X11, but that there is a proposal to add support for this. The value set-urgency was chosen for forward-compatibility, in the hopes that this proposal eventualizes (dnkl/foot#157).
  • bell option can also be set to notify, in which case a desktop notification is emitted when foot receives BEL in an unfocused window.
  • word-delimiters option to foot.ini (dnkl/foot#156).
  • csd.preferred can now be set to none to disable window decorations. Note that some compositors will render SSDs despite this option being used (dnkl/foot#163).
  • Terminal content is now auto-scrolled when moving the mouse above or below the window while selecting (dnkl/foot#149).
  • font-bold, font-italic font-bold-italic options to foot.ini. These options allow custom bold/italic fonts. They are unset by default, meaning the bold/italic version of the regular font is used (dnkl/foot#169).
  • Drag & drop support; text, files and URLs can now be dropped in a foot terminal window (dnkl/foot#175).
  • clipboard-paste and primary-paste scrollback search bindings. By default, they are bound to ctrl+v ctrl+y and shift+insert respectively, and lets you paste from the clipboard or primary selection into the search buffer.
  • Support for pipe-* actions in mouse bindings. It was previously not possible to add a command to these actions when used in mouse bindings, making them useless (dnkl/foot#183).
  • bold-text-in-bright option to foot.ini. When enabled, bold text is rendered in a brighter color (dnkl/foot#199).
  • -w,--window-size-pixels and -W,--window-size-chars command line options to footclient (dnkl/foot#189).
  • Short command line options for --title, --maximized, --fullscreen, --login-shell, --hold and --check-config.
  • DECSET escape to modify the escape key to send \E[27;1;27~ instead of \E: CSI ? 27127 h enables the new behavior, CSI ? 27127 l disables it (the default).
  • OSC 777;notify: desktop notifications. Use in combination with the new notify option in foot.ini (dnkl/foot#224).
  • Status line terminfo capabilities hs, tsl, fsl and dsl. This enables e.g. vim to set the window title (dnkl/foot#242).

Changed

  • Blinking text now uses the foreground color, but dimmed down in its off state, instead of the background color.
  • Sixel default maximum size is now 10000x10000 instead of the current window size.
  • Graphical glitches/flashes when resizing the window while running a fullscreen application, i.e. the 'alt' screen (dnkl/foot#221).
  • Cursor will now blink if either CSI ? 12 h or CSI Ps SP q has been used to enable blinking. cursor.blink in foot.ini controls the default state of CSI Ps SP q (dnkl/foot#218).
  • The sub-parameter versions of the SGR RGB color escapes (e.g \E[38:2...m) can now be used without the color space ID parameter.
  • SGR 21 no longer disables bold. According to ECMA-48, SGR 21 is ”double underline”. Foot does not (yet) implement that, but that’s no reason to implement a non-standard behavior.
  • DECRQM now returns actual state of the requested mode, instead of always returning 2.

Removed

  • Support for loading configuration from $XDG_CONFIG_HOME/footrc.
  • scrollback option from foot.ini.
  • geometry from foot.ini.
  • Key binding action scrollback-up and scrollback-down.

Fixed

  • Error when re-assigning a default key binding (dnkl/foot#233).
  • \E[s+\E[u (save/restore cursor) now saves and restores attributes and charset configuration, just like \E7+\E8.
  • Report mouse motion events to the client application also while dragging the cursor outside the grid.
  • Parsing of the sub-parameter versions of indexed SGR color escapes (e.g. \E[38:5...m)
  • Frames occasionally being rendered while application synchronized updates is in effect.
  • Handling of failures to parse the font specification string.
  • Extra private/intermediate characters in escape sequences not being ignored.

Contributors

1.5.4

Changed

  • Num Lock by default overrides the keypad mode. See foot.ini(5)::KEYPAD, or README.md for details (dnkl/foot#194).
  • Single-width characters with double-width glyphs are now allowed to overflow into neighboring cells by default. Set tweak.allow-overflowing-double-width-glyphs to ‘no’ to disable this.

Fixed

  • Resize very slow when window is hidden (dnkl/foot#190).
  • Key mappings for key combinations with shift+tab (dnkl/foot#210).
  • Key mappings for key combinations with alt+return.
  • footclient -m (--maximized) flag being ignored.
  • Crash with explicitly sized sixels with a height less than 6 pixels.
  • Key mappings for esc with modifiers.

Contributors

1.5.3

Fixed

  • Crash when libxkbcommon cannot find a suitable libX11 compose file. Note that foot will run, but without support for dead keys. (dnkl/foot#170).
  • Restored window size when window is un-tiled.
  • XCursor shape in CSD corners when window is tiled.
  • Error handling when processing keyboard input (maybe dnkl/foot#171).
  • Compilation error "overflow in conversion from long 'unsigned int' to 'int' changes value... " seen on platforms where the request argument in ioctl(3) is an int (for example: linux/ppc64).
  • Crash when using the mouse in alternate scroll mode in an unfocused window (dnkl/foot#179).
  • Character dropped from selection when "right-click-hold"-extending a selection (dnkl/foot#180).

1.5.2

Fixed

  • Regression: middle clicking double pastes in e.g. vim (dnkl/foot#168)

1.5.1

Changed

  • Default value of the scrollback.multiplier option in foot.ini from 1.0 to 3.0.
  • shift+insert now pastes from the primary selection by default. This is in addition to middle-clicking with the mouse.

Fixed

  • Mouse bindings now match even if the actual click count is larger than specified in the binding. This allows you to, for example, quickly press the middle-button to paste multiple times (dnkl/foot#146).
  • Color flashes when changing the color palette with OSC 4,10,11 (dnkl/foot#141).
  • Scrollback position is now retained when resizing the window (dnkl/foot#142).
  • Trackpad scrolling speed to better match the mouse scrolling speed, and to be consistent with other (Wayland) terminal emulators. Note that it is (much) slower compared to previous foot versions. Use the scrollback.multiplier option in foot.ini if you find the new speed too slow (dnkl/foot#144).
  • Crash when foot.ini contains an invalid section name (dnkl/foot#159).
  • Background opacity when in reverse video mode.
  • Crash when writing a sixel image that extends outside the terminal's right margin (dnkl/foot#151).
  • Sixel image at non-zero column positions getting sheared at seemingly random occasions (dnkl/foot#151).
  • Crash after either resizing a window or changing the font size if there were sixels present in the scrollback while doing so.
  • Send Device Attributes to only send a response if Ps == 0.
  • Paste from primary when clipboard is empty.

Contributors

1.5.0

Deprecated

  • $XDG_CONFIG_HOME/footrc/~/.config/footrc. Use $XDG_CONFIG_HOME/foot/foot.ini/~/.config/foot/foot.ini instead.
  • scrollback option in foot.ini. Use scrollback.lines instead.
  • scrollback-up key binding. Use scrollback-up-page instead.
  • scrollback-down key binding. Use scrollback-down-page instead.

Added

  • Scrollback position indicator. This feature is optional and controlled by the scrollback.indicator-position and scrollback.indicator-format options in foot.ini (dnkl/foot#42).
  • Key bindings in scrollback search mode are now configurable.
  • --check-config command line option.
  • pipe-selected key binding. Works like pipe-visible and pipe-scrollback, but only pipes the currently selected text, if any (dnkl/foot#51).
  • mouse.hide-when-typing option to foot.ini.
  • scrollback.multiplier option to foot.ini (dnkl/foot#54).
  • colors.selection-foreground and colors.selection-background options to foot.ini.
  • tweak.render-timer option to foot.ini.
  • Modifier support in mouse bindings (dnkl/foot#77).
  • Click count support in mouse bindings, i.e double- and triple-click (dnkl/foot#78).
  • All mouse actions (begin selection, select word, select row etc) are now configurable, via the new select-begin, select-begin-block, select-extend, select-word, select-word-whitespace and select-row options in the mouse-bindings section in foot.ini (dnkl/foot#79).
  • Implement XTSAVE/XTRESTORE escape sequences, CSI ? Ps s and CSI ? Ps r (dnkl/foot#91).
  • $COLORTERM is now set to truecolor at startup, to indicate support for 24-bit RGB colors.
  • Experimental support for rendering double-width glyphs with a character width of 1. Must be explicitly enabled with tweak.allow-overflowing-double-width-glyphs (dnkl/foot#116).
  • initial-window-size-pixels options to foot.ini and -w,--window-size-pixels command line option to foot. This option replaces the now deprecated geometry and -g,--geometry options.
  • initial-window-size-chars option to foot.ini and -W,--window-size-chars command line option to foot. This option configures the initial window size in characters, and is an alternative to initial-window-size-pixels.
  • scrollback-up-half-page and scrollback-down-half-page key bindings. They scroll up/down half of a page in the scrollback (dnkl/foot#128).
  • scrollback-up-line and scrollback-down-line key bindings. They scroll up/down a single line in the scrollback.
  • mouse.alternate-scroll-mode option to foot.ini. This option controls the initial state of the Alternate Scroll Mode, and defaults to yes. When enabled, mouse scroll events are translated to up/down key events in the alternate screen, letting you scroll in e.g. less and other applications without enabling native mouse support in them (dnkl/foot#135).

Changed

  • Renamed man page for foot.ini from foot(5) to foot.ini(5).
  • Configuration errors are no longer fatal; foot will start and print an error inside the terminal (and of course still log errors on stderr).
  • Default --server socket path to use $WAYLAND_DISPLAY instead of $XDG_SESSION_ID (dnkl/foot#55).
  • Trailing empty cells are no longer highlighted in mouse selections.
  • Foot now searches for its configuration in $XDG_DATA_DIRS/foot/foot.ini, if no configuration is found in $XDG_CONFIG_HOME/foot/foot.ini or in $XDG_CONFIG_HOME/footrc.
  • Minimum window size changed from four rows and 20 columns, to 1 row and 2 columns.
  • scrollback-up/down renamed to scrollback-up/down-page.
  • fcft >= 2.3.0 is now required.

Fixed

  • Command lines for pipe-visible and pipe-scrollback are now tokenized (i.e. syntax checked) when the configuration is loaded, instead of every time the key binding is executed.
  • Incorrect multi-column character spacer insertion when reflowing text.
  • Compilation errors in 32-bit builds.
  • Mouse cursor style in top and left margins.
  • Selection is now updated when the cursor moves outside the grid (dnkl/foot#70).
  • Viewport sometimes not moving when doing a scrollback search.
  • Crash when canceling a scrollback search and the window had been resized while searching.
  • Selection start point not moving when the selection changes direction.
  • OSC 10/11/104/110/111 (modify colors) did not update existing screen content (dnkl/foot#94).
  • Extra newlines when copying empty cells (dnkl/foot#97).
  • Mouse events from being sent to client application when a mouse binding has consumed it.
  • Input events from getting mixed with paste data (dnkl/foot#101).
  • Missing DPI values for “some” monitors on Gnome (dnkl/foot#118).
  • Handling of multi-column composed characters while reflowing.
  • Escape sequences sent for key combinations with Return, that did not include Alt.
  • Clipboard (or primary selection) is now cleared when receiving an OSC-52 command with an invalid base64 encoded payload.
  • Cursor position being set outside the grid when reflowing text.
  • CSD buttons to be hidden when window size becomes so small that they no longer fit.

Contributors

1.4.4

Changed

  • Mouse cursor is now always a left_ptr when inside the margins, to indicate it is not possible to start a selection.

Fixed

  • Crash when starting a selection inside the margins.
  • Improved font size consistency across multiple monitors with different DPI (dnkl/foot#47).
  • Handle trailing comments in footrc

1.4.3

Added

  • Section to README.md describing how to programmatically identify foot.
  • LICENSE, README.md and CHANGELOG.md are now installed to ${datadir}/doc/foot.
  • Support for escaping quotes in pipe-visible and pipe-scrollback commands.

Changed

  • Primary DA to no longer indicate support for Selective Erase, Technical Characters and Terminal State Interrogation.
  • Secondary DA to report foot as a VT220 instead of a VT420.
  • Secondary DA to report foot's version number in parameter 2, the Firmware Version. The string is made up of foot's major, minor and patch version numbers, always using two digits for each version number and without any other separating characters. Thus, 1.4.2 would be reported as 010402 (i.e. the full response would be \E[>1;010402;0c).
  • Scrollback search to only move the viewport if the match lies outside it.
  • Scrollback search to focus match, that requires a viewport change, roughly in the center of the screen.
  • Extending a selection with the right mouse button now works while dragging the mouse.

Fixed

  • Crash in scrollback search.
  • Crash when a pipe-visible or pipe-scrollback command contained an unclosed quote (dnkl/foot#49).

Contributors

1.4.2

Changed

  • Maximum window title length from 100 to 2048.

Fixed

  • Crash when overwriting a sixel and the row being overwritten did not cover an entire cell.
  • Assertion failure in debug builds when overwriting a sixel image.

1.4.1

Fixed

  • Compilation errors in release builds with some combinations of compilers and compiler flags.

1.4.0

Added

  • Sync to terminfo. This is a tmux extension that indicates "Synchronized Updates" are supported.
  • --hold command line option to footclient.
  • Key mapping for KP_Decimal.
  • Terminfo entries for keypad keys: ka1, ka2, ka3, kb1, kb3, kc1, kc2, kc3, kp5, kpADD, kpCMA, kpDIV, kpDOT, kpMUL, kpSUB and kpZRO.
  • blink option to footrc; a boolean that lets you control whether the cursor should blink or not by default. Note that applications can override this.
  • Multi-seat support
  • Implemented C0::FF (form feed)
  • pipe-visible and pipe-scrollback key bindings. These let you pipe either the currently visible text, or the entire scrollback to external tools (dnkl/foot#29). Example: pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print

Changed

  • Background transparency to only be used with the default background color.
  • Copy-to-clipboard/primary-selection to insert a line break if either the last cell on the previous line or the first cell on the next line is empty.
  • Number of lines to scroll is now always clamped to the number of lines in the scrolling region..
  • New terminal windows spawned with ctrl+shift+n are no longer double forked.
  • Unicode combining character overflow errors are only logged when debug logging has been enabled.
  • OSC 4 (Set Color) now updates already rendered cells, excluding scrollback.
  • Mouse cursor from hand2 to left_ptr when client is capturing the mouse.
  • Sixel images are now removed when the font size is decreased.
  • DECSCUSR (Set Cursor Style, CSI Ps SP q) now uses Ps=0 instead of Ps=2 to reset the style to the user configured default style. Ps=2 now always configures a Steady Block cursor.
  • Se terminfo capability from \E[2 q to \E[ q.
  • Hollow cursor to be drawn when window has lost keyboard focus rather than visual focus.

Fixed

  • Do not stop an ongoing selection when shift is released. When the client application is capturing the mouse, one must hold down shift to start a selection. This selection is now finalized only when the mouse button is released - not as soon as shift is released.
  • Selected cells did not appear selected if programmatically modified.
  • Rare crash when scrolling and the new viewport ended up exactly on the wrap around.
  • Selection handling when viewport wrapped around.
  • Restore signal mask in the client process.
  • Set IUTF8.
  • Selection of double-width characters. It is no longer possible to select half of a double-width character.
  • Draw hollow block cursor on top of character.
  • Set an initial TIOCSWINSZ. This ensures clients never read a 0x0 terminal size (dnkl/foot#20).
  • Glyphs overflowing into surrounding cells (dnkl/foot#21).
  • Crash when last rendered cursor cell had scrolled off screen and \E[J3 was executed.
  • Assert (debug builds) when an \e]4 OSC escape was not followed by a ;.
  • Window title always being set to "foot" on reset.
  • Terminfo entry kb2 (center keypad key); it is now set to \EOu (which is what foot emits) instead of the incorrect value \EOE.
  • Palette re-use in sixel images. Previously, the palette was reset after each image.
  • Do not auto-resize a sixel image for which the client has specified a size. This fixes an issue where an image would incorrectly overflow into the cell row beneath.
  • Text printed, or other sixel images drawn, on top of a sixel image no longer erases the entire image, only the part(s) covered by the new text or image.
  • Sixel images being erased when printing text next to them.
  • Sixel handling when resizing window.
  • Sixel handling when scrollback wraps around.
  • Foot now issues much fewer wl_surface_damage_buffer() calls (dnkl/foot#35).
  • C0::VT to be processed as C0::LF. Previously, C0::VT would only move the cursor down, but never scroll.
  • C0::HT (Horizontal Tab, or \t) no longer clears LCF (Last Column Flag).
  • C0::LF now always clears LCF. Previously, it only cleared it when the cursor was not at the bottom of the scrolling region.
  • IND and RI now clears LCF.
  • DECAWM now clears LCF.
  • A multi-column character that does not fit on the current line is now printed on the next line, instead of only printing half the character.
  • Font size can no longer be reduced to negative values (dnkl/foot#38).

1.3.0

Added

  • User configurable key- and mouse bindings. See man 5 foot and the example footrc (dnkl/foot#1)
  • initial-window-mode option to footrc, that lets you control the initial mode for each newly spawned window: windowed, maximized or fullscreen.
  • app-id option to footrc and --app-id command line option, that sets the app-id property on the Wayland window.
  • title option to footrc and --title command line option, that sets the initial window title.
  • Right mouse button extends the current selection.
  • CSI Ps ; Ps ; Ps t escape sequences for the following parameters: 11t, 13t, 13;2t, 14t, 14;2t, 15t, 19t.
  • Unicode combining characters.

Changed

  • Spaces no longer removed from zsh font name completions.
  • Default key binding for spawn-terminal to ctrl+shift+n.
  • Renderer is now much faster with interactive scrolling (dnkl/foot#4)
  • memfd sealing failures are no longer fatal errors.
  • Selection to no longer be cleared on resize.
  • The current monitor's subpixel order (RGB/BGR/V-RGB/V-BGR) is preferred over FontConfig's rgba property. Only if the monitor's subpixel order is unknown is FontConfig's rgba property used. If the subpixel order is none, then grayscale antialiasing is used. The subpixel order is ignored if antialiasing has been disabled.
  • The four primary font variants (normal, bold, italic, bold italic) are now loaded in parallel. This speeds up both the initial startup time, as well as DPI changes.
  • Command line parsing no longer tries to parse arguments following the command-to-execute. This means one can now write foot sh -c true instead of foot -- sh -c true.

Removed

  • Keyboard/pointer handler workarounds for Sway 1.2.

Fixed

  • Sixel images moved or deleted on window resize.
  • Cursor sometimes incorrectly restored on exit from alternate screen.
  • 'Underline' cursor being invisible on underlined text.
  • Restored cursor position in 'normal' screen when window was resized while in 'alt' screen.
  • Hostname in OSC 7 URI not being validated.
  • OSC 4 with multiple c;spec pairs.
  • Alt+Return to emit "ESC \r".
  • Trackpad sloooow scrolling to eventually scroll a line.
  • Memory leak in terminal reset.
  • Translation of cursor coordinates on resize
  • Scaling color specifiers in OSC sequences.
  • OSC 12 ? to return the cursor color, not the cursor's text color.
  • OSC 12;#000000 to configure the cursor to use inverted foreground/background colors.
  • Call ioctl(TIOCSCTTY) on the pts fd in the slave process.

1.2.3

Fixed

  • Forgot to version bump 1.2.2

1.2.2

Changed

  • Changed icon name in foot.desktop and foot-server.desktop from terminal to utilities-terminal.
  • XDG_SESSION_ID is now included in the server/daemon default socket path.

Fixed

  • Window size doubling when moving window between outputs with different scaling factors (dnkl/foot#3).
  • Font being too small on monitors with fractional scaling (dnkl/foot#5).

1.2.1

Fixed

  • Building AUR package

1.2.0

Added

  • Run-time text resize using ctrl-+, ctrl+- and ctrl+0
  • Font size adjusts dynamically to outputs' DPI
  • Reflow text when resizing window
  • pad option to footrc
  • login-shell option to footrc and --login-shell command line option
  • Client side decorations (CSDs). This finally makes foot usable on GNOME.
  • Sixel graphics support
  • OSC 12 and 112 escape sequences (set/reset text cursor color)
  • REP CSI escape sequence
  • oc to terminfo
  • foot-server.desktop file
  • Window and cell size reporting escape sequences
  • --hold command line option
  • --print-pid=FILE|FD command line option

Changed

  • Subpixel antialiasing is only enabled when background is opaque
  • Meta/alt ESC prefix can now be disabled with \E[?1036l. In this mode, the 8:th bit is set and the result is UTF-8 encoded. This can also be disabled with \E[1024l (in which case the Alt key is effectively being ignored).
  • terminfo now uses ST instead of BEL as OSC terminator
  • Logging to print to stderr, not stdout
  • Backspace now emits DEL (^?), and ctrl+backspace emits BS (^H)

Removed

  • '28' from DA response