- Unreleased
- 1.18.1
- 1.18.0
- 1.17.2
- 1.17.1
- 1.17.0
- 1.16.2
- 1.16.1
- 1.16.0
- 1.15.3
- 1.15.2
- 1.15.1
- 1.15.0
- 1.14.0
- 1.13.1
- 1.13.0
- 1.12.1
- 1.12.0
- 1.11.0
- 1.10.3
- 1.10.2
- 1.10.1
- 1.10.0
- 1.9.2
- 1.9.1
- 1.9.0
- 1.8.2
- 1.8.1
- 1.8.0
- 1.7.2
- 1.7.1
- 1.7.0
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
resize-keep-grid
option, controlling whether the window is resized (and the grid reflowed) or not when e.g. zooming in/out (#1807).strikeout-thickness
option.- Implemented the new
xdg-toplevel-icon-v1
protocol. - Implemented
CSI 21 t
: report window title.
cursor.unfocused-style
is now effective even whencursor.style
is notblock
.- Activating a notification triggered with OSC-777, or BEL, now
focuses the foot window, if XDG activation tokens are supported by
the compositor, the notification daemon, and the notification helper
used by foot (i.e.
desktop-notifications.command
). This has been supported for OSC-99 since 1.18.0, and now we also support it for BEL and OSC-777 (#1822). - Sixel background color (when
P2=0|2
) is now set to the sixel color palette entry #0, instead of using the current ANSI background color. This is what a real VT340 does. - The
.desktop
files no longer use the reverse DNS naming scheme, and their names now match the default app-ids used by foot (foot
andfootclient
) (#1607).
- Some invalid UTF-8 strings passing the validity check when setting the window title, triggering a Wayland protocol error which then caused foot to shutdown.
- "Too large" values for
scrollback.lines
causing an integer overflow, resulting in either visual glitches, crashes, or both (#1828). - Crash when trying to set an invalid cursor shape with OSC-22, when foot uses server-side cursor shapes.
- Occasional visual glitches when selecting text, when foot is running under a compositor that forces foot to double buffer (e.g. KDE/KWin) (#1715).
- Sixels flickering when foot is running under a compositor that forces foot to double buffer (e.g. KDE, or Smithay based compositors) (#1851).
- OSC-99: support for the
s
parameter. Supported keywords aresilent
,system
and names from the freedesktop sound naming specification. ${muted}
and${sound-name}
added to thedesktop-notifications.command
template.
- CSD buttons now activate on mouse button release, rather than press (#1787).
- Regression: OSC-111 not handling alpha changes correctly, causing visual glitches (#1801).
- Craig Barnes
- Shogo Yamazaki
cursor.blink-rate
option, allowing you to configure the rate the cursor blinks with (whencursor.blink=yes
) (#1707);- Support for
wp_single_pixel_buffer_v1
; certain overlay surfaces will now utilize the new single-pixel buffer protocol. This mainly reduces the memory usage, but should also be slightly faster. - Support for high-res mouse wheel scroll events (#1738).
- Styled and colored underlines (#828).
- Support for SGR 21 (double underline).
- Support for
XTPUSHCOLORS
,XTPOPCOLORS
andXTREPORTCOLORS
, i.e. color palette stack (#856). - Log output now respects the
NO_COLOR
environment variable (#1771). - Support for in-band window resize
notifications,
private mode
2048
. - Support for OSC-99 "Kitty desktop notifications".
desktop-notifications.command
option, replacesnotify
.desktop-notifications.inhibit-when-focused
option, replacesnotify-focus-inhibit
.${category}
,${urgency}
,${expire-time}
,${replace-id}
,${icon}
and${action-argument}
added to thedesktop-notifications.command
template.desktop-notifications.command-action-argument
option, defining how${action-argument}
(indesktop-notifications.command
) should be expanded.desktop-notifications.close
option, defining what to execute when an application wants to close an existing notification (via an OSC-99 escape sequence).
-
All
XTGETTCAP
capabilities are now in thetigetstr()
format:- parameterized string capabilities were previously "source
encoded", meaning e.g.
\E
where not "decoded" into\x1b
. - Control characters were also "source encoded", meaning they were
returned as e.g. "^G" instead of
\x07
(#1701).
In other words, if, after this change,
XTGETTCAP
returns a string that is different compared totigetstr()
, then it is likely a bug in foot's implementation ofXTGETTCAP
. - parameterized string capabilities were previously "source
encoded", meaning e.g.
-
If the cursor foreground and background colors are identical (for example, when cursor uses inverted colors and the cell's foreground and background are the same), the cursor will instead be rendered using the default foreground and background colors, inverted (#1761).
-
Mouse wheel events now generate
BTN_WHEEL_BACK
andBTN_WHEEL_FORWARD
"button presses", instead ofBTN_BACK
andBTN_FORWARD
. The default bindings have been updated, andscrollback-up-mouse
,scrollback-down-mouse
,font-increase
andfont-decrease
now use the new button names.This change allow users to separate physical mouse buttons that also generates
BTN_BACK
andBTN_FORWARD
, from wheel scrolling (#1763). -
Replaced the old catppuccin theme with updated flavored themes pulled from catppuccin/foot
-
Mouse selections can now be started inside the margins (#1702).
notify
option; replaced bydesktop-notifications.command
.notify-focus-inhibit
option; replaced bydesktop-notifications.inhibit-when-focused
.
- Crash when zooming in or out, with
dpi-aware=yes
, and the monitor's DPI is 0 (this is true for, for example, nested Wayland sessions, or in virtualized environments). - No error response for empty
XTGETTCAP
request (#1694). - Unicode-mode in one foot client affecting other clients, in foot server mode (#1717).
- IME interfering in URL-mode (#1718).
- OSC-52 reply interleaved with other data sent to the client (#1734).
- XKB compose state being reset when foot receives a new keymap (#1744).
- Regression: alpha changes through OSC-11 sequences not taking effect until window is resized.
- VS15 being ignored (#1742).
- VS16 being ignored for a subset of the valid VS16 sequences (#1742).
- Crash in debug builds, when using OSC-12 to set the cursor color and foot config has not set any custom cursor colors (i.e. without OSC-12, inverted fg/bg would be used).
- Wrong color used when drawing the unfocused, hollow cursor.
- Encoding of
BTN_BACK
andBTN_FORWARD
, when sending a mouse input escape sequence to the terminal application.
- abs3nt
- Artturin
- Craig Barnes
- Jan Beich
- Mariusz Bialonczyk
- Nicolas Kolling Ribas
- Notifications with invalid UTF-8 strings are now ignored.
- Crash when changing aspect ratio of a sixel, in the middle of the sixel data (this is unsupported in foot, but should of course not result in a crash).
- Crash when printing double-width (or longer) characters to, or near, the last column, when auto-wrap (private mode 7) has been disabled.
- Dynamically sized sixel being trimmed to nothing.
- Flickering with
dpi-aware=yes
and window is unmapped/remapped (some compositors do this when window is minimized), in a multi-monitor setup with different monitor DPIs.
cursor.unfocused-style=unchanged|hollow|none
tofoot.ini
. The default ishollow
(#1582).- New key binding:
quit
(#1475).
- Log-level not respected by syslog.
- Regression: terminal shutting down when the PTY is closed by the client application, which may be earlier than when the client application exits (#1666).
- When closing the window, send
SIGHUP
to the client application, before sendingSIGTERM
. The signal sequence is nowSIGHUP
, wait,SIGTERM
, waitSIGKILL
. - Crash when receiving a
DECRQSS
request with more than 2 bytes in theq
parameter.
- Holger Weiß
- izmyname
- Marcin Puc
- tunjan
- Support for opening an existing PTY, e.g. a VM console. (#1564)
- Unicode input mode now accepts input from the numpad as well, numlock is ignored.
- A new
resize-by-cells
option, enabled by default, allows the size of floating windows to be constrained to multiples of the cell size. - Support for custom (i.e. other than ctrl/shift/alt/super) modifiers in key bindings (#1348).
pipe-command-output
key binding.- Support for OSC-176, "Set App-ID" (https://gist.github.com/delthas/d451e2cc1573bb2364839849c7117239).
- Support for
DECRQM
queries with ANSI/ECMA-48 modes (CSI Ps $ p
). - Rectangular edit functions:
DECCARA
,DECRARA
,DECCRA
,DECFRA
andDECERA
(#1633). Rect
capability to terminfo.fe
andfd
(focus in/out enable/disable) capabilities to terminfo.nel
capability to terminfo.
- config: ARGB color values now default to opaque, rather than transparent, when the alpha component has been left out (#1526).
- The
foot
process now changes CWD to/
after spawning the shell process. This ensures the terminal itself does not "lock" a directory; for example, preventing a mount point from being unmounted (#1528). - Kitty keyboard protocol: updated behavior of modifiers bits during modifier key events, to match the (new #6913) behavior in kitty >= 0.32.0 (#1561).
- When changing font sizes or display scales in floating windows, the window will be resized as needed to preserve the same grid size.
smm
now disables private mode 1036 ("send ESC when Meta modifies a key"), and enables private mode 1034 ("8-bit Meta mode").rmm
does the opposite (#1584).- Grid is now always centered in the window, when either fullscreened or maximized.
- Ctrl+wheel up/down bound to
font-increase
andfont-decrease
respectively (in addition to the already existing default key bindingsctrl-+
andctrl+-
). - Use XRGB pixel format (instead of ARGB) when there is no transparency.
- Prefer CSS xcursor names, and fallback to legacy X11 names.
- Kitty keyboard protocol: use the
XKB
mode when retrieving locked modifiers, instead of theGTK
mode. This fixes an issue where some key combinations (e.g. Shift+space) produces different results depending on the state of e.g. the NumLock key. - Kitty keyboard protocol: filter out all locked modifiers (as reported by XKB), rather than hardcoding it to CapsLock only, when determining whether a key combination produces text or not.
- CSI-t queries now report pixel values unscaled, instead of scaled (#1643).
- Sixel: text cursor is now placed on the last text row touched by the sixel, instead of the text row touched by the upper pixel of the last sixel (#chafa-192).
- Sixel: trailing, fully transparent rows are now trimmed (#chafa-192).
1004
(enable focus in/out events) removed from theXM
terminfo capability. To enable focus in/out, use thefe
andfd
capabilities instead.- Tightened the regular expression in the
rv
terminfo capability. - Tightened the regular expression in the
xr
terminfo capability. DECRQM
queries for private mode 67 (DECBKM
) now reply with mode value 4 ("permanently reset") instead of 0 ("not recognized").
- config: improved validation of color values.
- config: double close of file descriptor, resulting in a chain of errors ultimately leading to a startup failure (#1531).
- Crash when using a desktop scaling factor > 1, on compositors that
implements neither the
fractional-scale-v1
, nor thecursor-shape-v1
Wayland protocols (#1573). - Crash in
--server
mode when one or more environment variables are set in[environment]
. - Environment variables normally set by foot lost with
footclient -E,--client-environment
(#1568). - XDG toplevel protocol violation, by trying to set a title that contains an invalid UTF-8 sequence (#1552).
- Crash when erasing the scrollback, when scrollback history is
exactly 0 rows. This happens when
[scrollback].line = 0
, and the window size (number of rows) is a power of two (i.e. 2, 4, 8, 16 etc) (#1610). - VS16 (variation selector 16 - emoji representation) should only affect emojis.
- Pressing a modifier key while the kitty keyboard protocol is enabled no longer resets the viewport, or clears the selection.
- Crash when failing to load an xcursor image (#1624).
- Crash when resizing a dynamically sized sixel (no raster attributes), with a non-1:1 aspect ratio.
- The default sixel color table is now initialized to the colors used by the VT340, instead of not being initialized at all (thus requiring the sixel escape sequence to explicitly set all colors it used).
- Alyssa Ross
- Andrew J. Hesford
- Artturin
- Craig Barnes
- delthas
- eugenrh
- Fazzi
- Gregory Anders
- Jan Palus
- Leonardo Hernández Hernández
- LmbMaxim
- Matheus Afonso Martins Moreira
- Sivecano
- Tim Culverhouse
- xnuk
- Last row and/or column of opaque sixels (not having a size that is a multiple of the cell size) being the wrong color (#1520).
- Foot not starting on linux kernels before 6.3 (#1514).
- Cells underneath erased sixels not being repainted (#1515).
- Support for building with wayland-protocols as a subproject.
- Mouse wheel scrolls can now be used in
mouse-bindings
(#1077). - New mouse bindings:
scrollback-up-mouse
andscrollback-down-mouse
, bound toBTN_BACK
andBTN_FORWARD
respectively. - New key binding:
select-quote
. This key binding selects text between quote characters, and falls back to selecting the entire row (#1364). - Support for DECSET/DECRST/DECRQM 2027 (Grapheme cluster processing).
- New search mode key bindings (along with their defaults)
(#419):
extend-char
(shift+right)extend-line-down
(shift+down)extend-backward-char
(shift+left)extend-backward-to-word-boundary
(ctrl+shift+left)extend-backward-to-next-whitespace
(none)extend-line-up
(shift+up)scrollback-up-page
(shift+page-up)scrollback-up-half-page
(none)scrollback-up-line
(none)scrollback-down-page
(shift+page-down)scrollback-down-half-page
(none)scrollback-down-line
(none)
- Support for visual bell which flashes the terminal window. (#1337).
- Minimum required version of wayland-protocols is now 1.32 (#1391).
foot-server.service
systemd now checks forConditionEnvironment=WAYLAND_DISPLAY
for consistency with the socket unit (#1448)- Default key binding for
select-row
is nowBTN_LEFT+4
. However, in many cases, triple clicking will still be enough to select the entire row; see the new key bindingselect-quote
(mapped toBTN_LEFT+3
by default) (#1364). file://
prefix from URI's are no longer stripped when opened/activated (#1474).XTGETTCAP
with capabilities that are not properly hex encoded will be ignored, instead of echo:ed back to the TTY in an error response.- Command line configuration overrides are now applied even if the configuration file does not exist or can't be parsed. (#1495).
- Wayland surface damage is now more fine-grained. This should result in lower latencies in many use cases, especially on high DPI monitors.
utempter
config option (was deprecated in 1.15.0).
- Race condition for systemd units start in GNOME and KDE (#1436).
- One frame being rendered at the wrong scale after being hidden by another opaque, maximized window (#1464).
- Double-width characters, and grapheme clusters breaking URL auto-detection (#1465).
- Crash when
XDG_ACTIVATION_TOKEN
is set, but compositor does not support XDG activation (#1493). - Crash when compositor calls
fractional_scale::preferred_scale()
when there are no monitors (for example, after a monitor has been turned off and then back on again) (#1498). - Transparency in margins (padding) not being disabled in fullscreen mode (#1503).
- Crash when a scrollback search match is in the last column.
- Scrollback search: grapheme clusters not matching correctly.
- Wrong baseline offset for some fonts (#1511).
- 6t8k
- Alyssa Ross
- CismonX
- Max Gautier
- raggedmyth
- Raimund Sacherer
- Sertonix
-f,--font
command line option not affectingcsd.font
(if unset).- Vertical alignment in URL jump labels, and the scrollback position indicator. The fix in 1.15.2 was incorrect, and was reverted in the last minute. But we forgot to remove the entry from the changelog (#1430).
[tweak].bold-text-in-bright-amount
option (#1434).-Dterminfo-base-name
meson option, allowing you to name the terminfo files to something other than-Ddefault-terminfo
. Use case: have foot default to using the terminfo from ncurses (foot
,foot-direct
), while still packaging foot's terminfo files, but under a different name (e.g.foot-extra
,foot-extra-direct
).
- Crash when copying text that contains invalid UTF-8 (#1423).
- Wrong font size after suspending the monitor (#1431).
- Vertical alignment in URL jump labels, and the scrollback position indicator (#1430).
- Regression: line- and box drawing characters not covering the full
height of the line, when a custom
line-height
is being used (#1430). - Crash when compositor does not implement the viewporter interface (#1444).
- CSD rendering with fractional scaling (#1441).
- Regression: crash with certain combinations of
--window-size-chars=NxM
and desktop scaling factors (#1446).
- When window is mapped, use metadata (DPI, scaling factor, subpixel configuration) from the monitor we were most recently mapped on, instead of the one least recently.
- Starlight theme (the default theme) updated to V4
- Background transparency (alpha) is now disabled in fullscreened windows (#1416).
- Foot server systemd units now use the standard graphical-session.target (#1281).
- If
$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock
does not exist,footclient
now tries$XDG_RUNTIME_DIR/foot.sock
, then/tmp/foot.sock
, even if$WAYLAND_DISPLAY
and/or$XDG_RUNTIME_DIR
are defined (#1281). - Font baseline calculation: try to center the text within the line, instead of anchoring it at the top (#1302).
- Use appropriate rounding when applying fractional scales.
- Xcursor not being scaled correctly on
fractional-scale-v1
capable compositors. dpi-aware=yes
being broken onfractional-scale-v1
capable compositors (and when a fractional scaling factor is being used) (#1404).- Initial font size being wrong on
fractional-scale-v1
capable compositors, with multiple monitors with different scaling factors connected (#1404). - Crash when pointer capability is removed from a seat, on
compositors without
cursor-shape-v1 support
(#1411). - Crash on exit, if the mouse is hovering over the foot window (does not happen on all compositors)
- Visual glitches when CSD titlebar is transparent.
- Ayush Agarwal
- CismonX
- Max Gautier
- Ronan Pigott
- xdavidwu
- VT: implemented
XTQMODKEYS
query (CSI ? Pp m
). - Meson option
utmp-backend=none|libutempter|ulog|auto
. The default isauto
, which will selectlibutempter
on Linux,ulog
on FreeBSD, andnone
for all others. - Sixel aspect ratio.
- Support for the new
fractional-scale-v1
Wayland protocol. This brings true fractional scaling to Wayland in general, and with this release, to foot. - Support for the new
cursor-shape-v1
Wayland protocol, i.e. server side cursor shapes (#1379). - Support for touchscreen input (#517).
csd.double-click-to-maximize
option tofoot.ini
. Defaults toyes
(#1293).
- Default color theme is now starlight (#1321).
- Minimum required meson version is now 0.59 (#1371).
Control+Shift+u
is now bound tounicode-input
instead ofshow-urls-launch
, to follow the convention established in GTK and Qt (#1183).show-urls-launch
now bound toControl+Shift+o
(#1183).- Kitty keyboard protocol: F3 is now encoded as
CSI 13~
instead ofCSI R
. The kitty keyboard protocol originally allowed F3 to be encoded asCSI R
, but this was removed from the specification sinceCSI R
conflicts with the "Cursor Position Report". [main].utempter
renamed to[main].utmp-helper
. The old option name is still recognized, but will log a deprecation warning.- Meson option
default-utempter-path
renamed toutmp-default-helper-path
. - Opaque sixels now retain the background opacity (when current background color is the default background color) (#1360).
- Text cursor's vertical position after emitting a sixel, when sixel
scrolling is enabled (the default) has been updated to match
XTerm's, and the VT382's behavior: the cursor is positioned on
the last sixel row, rather than after it. This allows printing
sixels on the last row without scrolling up, but also means
applications may have to explicitly emit a newline to ensure the
sixel is visible. For example,
cat
:ing a sixel in the shell will typically result in the last row not being visible, unless a newline is explicitly added. - Default sixel aspect ratio is now 2:1 instead of 1:1.
- Sixel images are no longer cropped to the last non-transparent row.
- Sixel images are now re-scaled when the font size is changed (#1383).
dpi-aware
now defaults tono
, and theauto
value has been removed.- When using custom cursor colors (
cursor.color
is set infoot.ini
), the cursor is no longer inverted when the cell is selected, or when the cell has thereverse
(SGR 7) attribute set (#1347).
[main].utempter
option.
auto
value for thedpi-aware
option.
- Incorrect icon in dock and window switcher on Gnome (#1317)
- Crash when scrolling after resizing the window with non-zero scrolling regions.
XTMODKEYS
state not being reset on a terminal reset.- In Gnome dock foot always groups under "foot client". Change instances of footclient and foot to appear as "foot client" and "foot" respectively. (#1355).
- Glitchy rendering when alpha (transparency) is changed between opaque and non-opaque at runtime (using OSC-11).
- Regression: crash when resizing the window when
resize-delay-ms > 0
(#1377). - Crash when scrolling up while running something that generates a lot
of output (for example,
yes
) (#1380). - Default key binding for URL mode conflicting with Unicode input on
some DEs;
show-urls-launched
is now mapped toControl+Shift+o
by default, instead ofControl+Shift+u
(#1183).
- Antoine Beaupré
- CismonX
- Craig Barnes
- Dan Bungert
- jdevdevdev
- Kyle Gunger
- locture
- Phillip Susi
- sewn
- ShugarSkull
- Vivian Szczepanski
- Vladimir Bauer
- wout
- CosmicToast
- Support for adjusting the thickness of regular underlines (#1136).
- Support (optional) for utmp logging with libutempter.
kxIN
andkxOUT
(focus in/out events) to terminfo.name
capability toXTGETTCAP
.- String values in
foot.ini
may now be quoted. This can be used to set a value to the empty string, for example. - Environment variables can now be unset, by setting
[environment].<variable>=""
(quotes are required) (#1225). font-size-adjustment=N[px]
option, letting you configure how much to increment/decrement the font size when zooming in or out (#1188).- Bracketed paste terminfo entries (
BD
,BE
,PE
andPS
, added to ncurses in 2022-12-24). Vim makes use of these. - "Report version" terminfo entries (
XR
/xr
). - "Report DA2" terminfo entries (
RV
/rv
). XF
terminfo capability (focus in/out events available).$TERM_PROGRAM
and$TERM_PROGRAM_VERSION
environment variables unset in the slave process.
- Default color theme from a variant of the Zenburn theme, to a variant of the Solarized dark theme.
- Default
pad
from 2x2 to 0x0 (i.e. no padding at all). - Current working directory (as set by OSC-7) is now passed to the
program executed by the
pipe-*
key bindings (#1166). DECRPM
replies (toDECRQM
queries) now report a value of4
("permanently reset") instead of2
("reset") for DEC private modes that are known but unsupported.- Set
PWD
environment variable in the slave process (#1179). - DPI is now forced to 96 when found to be unreasonably high.
- Set default log level to warning (#1215).
- Default
grapheme-width-method
fromwcswidth
todouble-width
. - When determining initial font size, do FontConfig config substitution if the user-provided font pattern has no {pixel}size option (#1287).
- DECRST of DECCOLM and DECSCLM removed from terminfo.
- Crash in
foot --server
on key press, after anotherfootclient
has terminated very early (for example, by trying to launch a non-existing shell/client). - Glitchy rendering when scrolling in the scrollback, on compositors that does not allow Wayland buffer reuse (e.g. KDE/plasma) (#1173)
- Scrollback search matches not being highlighted correctly, on compositors that does not allow Wayland buffer reuse (e.g. KDE/plasma).
- Nanosecs "overflow" when calculating timeout value for
resize-delay-ms
option. - Missing backslash in ST terminator in escape sequences in the built-in terminfo (accessed via XTGETTCAP).
- Crash when interactively resizing the window with a very large scrollback.
- Crash when a sixel image exceeds the current sixel max height.
- Crash after reverse-scrolling (
CSI Ps T
) in the 'normal' (non-alternate) screen (#1190). - Background transparency being applied to the text "behind" the cursor. Only applies to block cursor using inversed fg/bg colors. (#1205).
- Crash when monitor's physical size is "too small" (#1209).
- Line-height adjustment when incrementing/decrementing the font size with a user-set line-height (#1218).
- Scaling factor not being correctly applied when converting pt-or-px config values (e.g. letter offsets, line height etc).
- Selection being stuck visually when
IL
andDL
. - URL underlines sometimes still being visible after exiting URL mode.
- Text-bindings, and pipe-* bindings, with multiple key mappings causing a crash (double-free) on exit (#1259).
- Double-width glyphs glitching when surrounded by glyphs overflowing into the double-width glyph (#1256).
- Wayland protocol violation when ack:ing a configure event for an unmapped surface (#1249).
xdg_toplevel::set_min_size()
not being called.- Key bindings with consumed modifiers masking other key bindings (#1280).
- Multi-character compose sequences with the kitty keyboard protocol (#1288).
- Crash when application output scrolls very fast, e.g.
yes
(#1305). - Crash when application scrolls many lines (> ~2³¹).
- DECCOLM erasing the screen (#1265).
- Alexey Sakovets
- Andrea Pappacoda
- Antoine Beaupré
- argosatcore
- Craig Barnes
- EuCaue
- Grigory Kirillov
- Harri Nieminen
- Hugo Osvaldo Barrera
- jaroeichler
- Joakim Nohlgård
- Nick Hastings
- Soren A D
- Torsten Trautwein
- Vladimír Magyar
- woojiq
- Yorick Peterse
- Window is now dimmed while in Unicode input mode.
- Compiling against wayland-protocols < 1.25
- Crash on buggy compositors (GNOME) that sometimes send pointer-enter events with a NULL surface. Foot now ignores these events, and the subsequent motion and leave events.
- Regression: "random" selected empty cells being highlighted as selected when they should not.
- Crash when either resizing the terminal window, or scrolling in the scrollback history (#1074)
- OSC-8 URLs with matching IDs, but mismatching URIs being incorrectly connected.
- XDG activation support when opening URLs (#1058).
-Dsystemd-units-dir=<path>
meson command line option.- Support for custom environment variables in
foot.ini
(#1070). - Support for jumping to previous/next prompt (requires shell
integration). By default bound to
ctrl
+shift
+z
andctrl
+shift
+x
respectively (#30). colors.search-box-no-match
andcolors.search-box-match
options tofoot.ini
(#1112).- Very basic Unicode input mode via the new
key-bindings.unicode-input
andsearch-bindings.unicode-input
key bindings. Note that there is no visual feedback, as the preferred way of entering Unicode characters is with an IME (#1116). - Support for
xdg_toplevel.wm_capabilities
, to adapt the client-side decoration buttons to the compositor capabilities (#1061).
- Use
$HOME
instead ofgetpwuid()
to retrieve the user's home directory when searching forfoot.ini
. - HT, VT and FF are no longer stripped when pasting in non-bracketed mode (#1084).
- NUL is now stripped when pasting in non-bracketed mode (#1084).
alt
+escape
now emits\E\E
instead of aCSI 27
sequence (#1105).
- Graphical corruption when viewport is at the top of the scrollback, and the output is scrolling.
- Improved text reflow of logical lines with trailing empty cells (#1055)
- IME focus is now tracked independently from keyboard focus.
- Workaround for buggy compositors (e.g. some versions of GNOME) allowing drag-and-drops even though foot has reported it does not support the offered mime-types (#1092).
- Keyboard enter/leave events being ignored if there is no keymap (#1097).
- Crash when application emitted an invalid
CSI 38;5;<idx>m
,CSI 38:5:<idx>m
,CSI 48;5;<idx>m
orCSI 48:5:<idx>m
sequence (#1111). - Certain dead-key combinations resulting in different escape sequences compared to kitty, when the kitty keyboard protocol is used (#1120).
- Search matches ending with a double-width character not being highlighted correctly.
- Selection not being cancelled correctly when scrolled out.
- Extending a multi-page selection behaving inconsistently.
- Poor performance when making very large selections (#1114).
- Bogus error message when using systemd socket activation for server mode (#1107)
- Empty line at the bottom after a window resize (#1108).
- Craig Barnes
- Lorenz
- Max Gautier
- Simon Ser
- Stefan Prosiegel
- Workaround for Sway bug #6960: scrollback search and the OSC-555 ("flash") escape sequence leaves dimmed (search) and yellow (flash) artifacts (#1046).
Control+Shift+v
andXF86Paste
have been added to the default set of key bindings that paste from the clipboard into the scrollback search buffer. This is in addition to the pre-existingControl+v
andControl+y
bindings.
- Scrollback search's
extend-to-word-boundary
no longer stops at space-to-word boundaries, making selection extension feel more natural.
- build: missing symbols when linking the
pgo
helper binary. - UI not refreshing when pasting something into the scrollback search box, that does not result in a grid update (for example, when the search criteria did not result in any matches) (#1040).
- foot freezing in scrollback search mode, using 100% CPU (#1036, #1047).
- Crash when extending a selection to the next word boundary in scrollback search mode (#1036).
- Scrollback search mode not always highlighting all matches correctly.
- Sixel options not being reset on hard resets (
\Ec
)
- OSC-22 - set xcursor pointer.
- Add "xterm" as fallback cursor where "text" is not available.
[key-bindings].scrollback-home|end
options.- Socket activation for
foot --server
and accompanying systemd unit files - Support for re-mapping input, i.e. mapping input to custom escape sequences (#325).
- Support for DECNKM, which allows setting/saving/restoring/querying the keypad mode.
- Sixel support can be disabled by setting
[tweak].sixel=no
(#950). - footclient:
-E,--client-environment
command line option. When used, the child process in the new terminal instance inherits the environment from the footclient process instead of the server's (#1004). [csd].hide-when-maximized=yes|no
option (#1019).- Scrollback search mode now highlights all matches.
[key-binding].show-urls-persistent
action. This key binding action is similar toshow-urls-launch
, but does not automatically exit URL mode after activating an URL (#964).- Support for
CSI > 4 n
, disable modifyOtherKeys. Note that since foot only supports level 1 and 2 (and not level 0), this sequence does not disable modifyOtherKeys completely, but simply reverts it back to level 1 (the default). -Dtests=false|true
meson command line option. When disabled, test binaries will neither be built, nor willninja test
attempt to execute them. Enabled by default (#919).
- Minimum required meson version is now 0.58.
- Mouse selections are now finalized when the window is resized (#922).
- OSC-4 and OSC-11 replies now uses four digits instead of 2 (#971).
\r
is no longer translated to\n
when pasting clipboard data (#980).- Use circles for rendering light arc box-drawing characters (#988).
- Example configuration is now installed to
${sysconfdir}/xdg/foot/foot.ini
, typically resolving to/etc/xdg/foot/foot.ini
(#1001).
- DECSET mode 27127 (which was first added in release 1.6.0). The kitty keyboard protocol (added in release 1.10.3) can be used to similar effect.
- Build: missing
wayland_client
dependency intest-config
(#918). - "(null)" being logged as font-name (for some fonts) when warning about a non-monospaced primary font.
- Rare crash when the window is resized while a mouse selection is ongoing (#922).
- Large selections crossing the scrollback wrap-around (#924).
- Crash in
pipe-scrollback
(#926). - Exit code being 0 when a foot server with no open windows terminate due to e.g. a Wayland connection failure (#943).
- Key binding collisions not detected for bindings specified as option overrides on the command line.
- Crash when seat has no keyboard (#963).
- Key presses with e.g.
AltGr
triggering key combinations with the base symbol (#983). - Underline cursor sometimes being positioned too low, either making it look thinner than what it should be, or being completely invisible (#1005).
- Fallback to
/etc/xdg
ifXDG_CONFIG_DIRS
is unset (#1008). - Improved compatibility with XTerm when
modifyOtherKeys=2
(#1009). - Window geometry when CSDs are enabled and CSD border width set to a non-zero value. This fixes window snapping in e.g. GNOME.
- Window size "jumping" when starting an interactive resize when CSDs are enabled, and CSD border width set to a non-zero value.
- Key binding overrides on the command line having no effect with
footclient
instances (#931). - Search prev/next not updating the selection correctly when the previous and new match overlaps.
- Various minor fixes to scrollback search, and how it finds the next/prev match.
- Ashish SHUKLA
- Craig Barnes
- Enes Hecan
- Johannes Altmanninger
- L3MON4D3
- Leonardo Neumann
- Mariusz Bialonczyk
- Max Gautier
- Merlin Büge
- jvoisin
- merkix
[mouse-bindings].selection-override-modifiers
option, specifying which modifiers to hold to override mouse grabs by client applications and force selection instead.- irc:// and ircs:// to the default set of protocols recognized when auto-detecting URLs.
- SGR-Pixels (1016) mouse extended coordinates is now supported (#762).
XTGETTCAP
- builtin terminfo. See README.md::XTGETTCAP for details (#846).DECRQSS
- Request Selection or Setting (#798). Implemented settings are:DECSTBM
- Set Top and Bottom MarginsSGR
- Set Graphic RenditionDECSCUSR
- Set Cursor Style
- Support for searching for the last searched-for string in scrollback search (search for next/prev match with an empty search string).
- PaperColorDark and PaperColorLight themes renamed to paper-color-dark and paper-color-light, for consistency with other theme names.
[scrollback].multiplier
is now applied in "alternate scroll" mode, where scroll events are translated to fake arrow key presses on the alt screen (#859).- The width of the block cursor's outline in an unfocused window is now scaled by the output scaling factor ("desktop scaling"). Previously, it was always 1px.
- Foot will now try to change the locale to either "C.UTF-8" or "en_US.UTF-8" if started with a non-UTF8 locale. If this fails, foot will start, but only to display a window with an error (user's shell is not executed).
gettimeofday()
has been replaced withclock_gettime()
, due to it being marked as obsolete by POSIX.alt+tab
now emitsESC \t
instead ofCSI 27;3;9~
(#900).- File pasted, or dropped, on the alt screen is no longer quoted (#379).
- Line-based selections now include a trailing newline when copied (#869).
- Foot now clears the signal mask and resets all signal handlers to their default handlers at startup (#854).
Copy
andPaste
keycodes are supported by default for the clipboard. These are useful for keyboards with custom firmware like QMK to enable global copy/paste shortcuts that work inside and outside the terminal (https://codeberg.org/dnkl/foot/pulls/894).
- Workaround for slow resize in Sway <= 1.5, when a foot window was hidden, for example, in a tabbed view (https://codeberg.org/dnkl/foot/pulls/507).
- Font size adjustment ("zooming") when font is configured with a
pixelsize, and
dpi-aware=no
(#842). - Key presses triggering keyboard layout switches also emitting CSI codes in the Kitty keyboard protocol.
- Assertion in
shm.c:buffer_release()
(#844). - Crash when setting a key- or mouse binding to the empty string (#851).
- Crash when maximizing the window and
[csd].size=1
(#857). - OSC-8 URIs not getting overwritten (erased) by double-width characters (e.g. emojis).
- Rendering of CSD borders when
csd.border-width > 0
and desktop scaling has been enabled. - Failure to launch when
exec(3)
:ed with an empty argv. - Pasting from the primary clipboard (mouse middle clicking) did not reset the scrollback view to the bottom.
- Wrong mouse binding triggered when doing two mouse selections in very quick (< 300ms) succession (#883).
- Bash completion giving an error when completing a list of short options
- Sixel: large image resizes (triggered by e.g. large repeat counts in
DECGRI
) are now truncated instead of ignored. - Sixel: a repeat count of 0 in
DECGRI
now emits a single sixel. - LIGHT ARC box drawing characters incorrectly rendered platforms (#914).
- lamonte
- Érico Nogueira
- feeptr
- Felix Lechner
- grtcdr
- Mark Stosberg
- Nicolai Dagestad
- Oğuz Ersen
- Pranjal Kole
- Simon Ser
- Kitty keyboard protocol (#319):
- Report event types
(mode
0b10
) - Report alternate keys
(mode
0b100
) - Report all keys as escape codes
(mode
0b1000
) - Report associated text
(mode
0b10000
)
- Report event types
(mode
- Crash when bitmap fonts are scaled down to very small font sizes (#830).
- Crash when overwriting/erasing an OSC-8 URL.
- New value,
max
, for[tweak].grapheme-width-method
. - Initial support for the Kitty keyboard protocol.
Modes supported:
- Disambiguate escape codes (mode
0b1
)
- Disambiguate escape codes (mode
- "Window menu" (compositor provided) on right clicks on the CSD title bar.
- An ongoing mouse selection is now finalized on a pointer leave event (for example by switching workspace while doing a mouse selection).
- OSC-8 URIs in the last column
- OSC-8 URIs sometimes being applied to too many, and seemingly unrelated cells (#816).
- OSC-8 URIs incorrectly being dropped when resizing the terminal window with the alternate screen active.
- CSD border not being dimmed when window is not focused.
- Visual corruption with large CSD borders (#823).
- Mouse cursor shape sometimes not being updated correctly.
- Color palette changes (via OSC 4/104) no longer affect RGB colors (#678).
- Jonas Ådahl
-Dthemes=false|true
meson command line option. When disabled, example theme files are not installed.- XDG desktop file for footclient.
- Regression:
letter-spacing
resulting in a "not a valid option" error (#795). - Regression: bad section name in configuration error messages.
- Regression:
pipe-*
key bindings not being parsed correctly, resulting in invalid error messages (#809). - OSC-8 data not being cleared when cell is overwritten (#804, #801).
- Arnavion
- Craig Barnes
- Soc Virnyl Silab Estela
- Xiretza
notify-focus-inhibit
boolean option, which can be used to control whether desktop notifications should be inhibited when the terminal has keyboard focus[colors].scrollback-indicator
color-pair option, which specifies foreground and background colors for the scrollback indicator.[key-bindings].noop
action. Key combinations assigned to this action will not be sent to the application (#765).- Color schemes are now installed to
${datadir}/foot/themes
. [csd].border-width
and[csd].border-color
, allowing you to configure the width and color of the CSD border.- Support for
XTMODKEYS
withPp=4
andPv=2
(modifyOtherKeys=2). [colors].dim0-7
options, allowing you to configure custom "dim" colors (#776).
[tweak].grapheme-shaping
is now enabled by default when both foot itself, and fcft has been compiled with support for it.- Default value of
[tweak].grapheme-width-method
changed fromdouble-width
towcswidth
. - INSTALL.md:
--override tweak.grapheme-shaping=no
added to PGO command line. - Foot now terminates if there are no available seats - for example,
due to the compositor not implementing a recent enough version of
the
wl_seat
interface (#779). - Boolean options in
foot.ini
are now limited to "yes|true|on|1|no|false|off|0", Previously, anything that did not match "yes|true|on", or a number greater than 0, was treated as "false". [scrollback].multiplier
is no longer applied when the alternate screen is in use (#787).
- The bundled PKGBUILD.
- Deprecated
bell
option (replaced with[bell]
section in 1.8.0). - Deprecated
url-launch
,jump-label-letters
andosc8-underline
options (moved to a dedicated[url]
section in 1.8.0)
- 'Sticky' modifiers in input handling; when determining modifier state, foot was looking at depressed modifiers, not effective modifiers, like it should.
- Fix crashes after enabling CSD at runtime when
csd.size
is 0. - Convert
\r
to\n
when reading clipboard data (#752). - Clipboard occasionally ceasing to work, until window has been re-focused (#753).
- Don't propagate window title updates to the Wayland compositor unless the new title is different from the old title.
- armin
- Craig Barnes
- Daniel Martí
- feeptr
- Mitja Horvat
- Ronan Pigott
- Stanislav Ochotnický
- PGO helper scripts no longer set
LC_CTYPE=en_US.UTF-8
. But, note that "full" PGO builds still require a UTF-8 locale; you need to set one manually in your build script (#728).
- Warn when it appears the primary font is not monospaced. Can be
disabled by setting
[tweak].font-monospace-warn=no
(#704). - PGO build scripts, in the
pgo
directory. See INSTALL.md - Performance optimized, PGO, for details (#701). - Braille characters (U+2800 - U+28FF) are now rendered by foot itself (#702).
-e
command-line option. This option is simply ignored, to appease program launchers that blindly pass-e
to any terminal emulator (#184).
-Ddefault-terminfo
is now also applied to the generated terminfo definitions when-Dterminfo=enabled
.-Dcustom-terminfo-install-location
no longer acceptsno
as a special value, to disable exportingTERMINFO
. To achieve the same result, simply don't set it at all. If it is set,TERMINFO
is still exported, like before.- The default install location for the terminfo definitions have been
changed back to
${datadir}/terminfo
. dpi-aware=auto
: fonts are now scaled using the monitor's DPI only when all monitors have a scaling factor of one (#714).- fcft >= 3.0.0 in now required.
- Added workaround for GNOME bug where multiple button press events (for the same button) is sent to the CSDs without any release or leave events in between (#709).
- Line-wise selection not taking soft line-wrapping into account (#726).
- craigbarnes
- Arnavion
- Window title in the CSDs (#638).
-Ddocs=disabled|enabled|auto
meson command line option.- Support for
~
-expansion in theinclude
directive (#659). - Unicode 13 characters U+1FB3C - U+1FB6F, U+1FB9A and U+1FB9B to list of box drawing characters rendered by foot itself (rather than using font glyphs) (#474).
XM
+xm
to terminfo.- Mouse buttons 6/7 (mouse wheel left/right).
url.uri-characters
option tofoot.ini
(#654).
- Terminfo files can now co-exist with the foot terminfo files from
ncurses. See
INSTALL.md
for more information (#671). bold-text-in-bright=palette-based
now only brightens colors from palette- Raised grace period between closing the PTY and sending
SIGKILL
(when terminating the client application) from 4 to 60 seconds. - When terminating the client application, foot now sends
SIGTERM
immediately after closing the PTY, instead of waiting 2 seconds. - Foot now sends
SIGTERM
/SIGKILL
to the client application's process group, instead of just to the client application's process. kmous
terminfo capability from\E[M
to\E[<
.- pt-or-px values (
letter-spacing
, etc) and the line thickness (tweak.box-drawing-base-thickness
) in box drawing characters are now translated to pixel values using the monitor's scaling factor whendpi-aware=no
, ordpi-aware=auto
and the scaling factor is larger than 1 (#680). - Spawning a new terminal with a working directory that does not exist is no longer a fatal error.
km
/smm
/rmm
from terminfo; foot prefixes Alt-key combinations withESC
, and not by setting the 8:th "meta" bit, regardless ofsmm
/rmm
. While this can be disabled by, resetting private mode 1036, the terminfo should reflect the default behavior (#670).- Keypad application mode keys from terminfo; enabling the keypad application mode is not enough to make foot emit these sequences - you also need to disable private mode 1035 (#670).
- Rendering into the right margin area with
tweak.overflowing-glyphs
enabled. - PGO builds with clang (#642).
- Crash in scrollback search mode when selection has been canceled due to terminal content updates (#644).
- Foot process not terminating when the Wayland connection is broken (#651).
- Output scale being zero on compositors that does not advertise a scaling factor.
- Slow-to-terminate client applications causing other footclient instances to freeze when closing a footclient window.
- Underlying cell content showing through in the left-most column of sixels.
cursor.blink
not working in GNOME (#686).- Blinking cursor stops blinking, or becoming invisible, when switching focus from, and then back to a terminal window on GNOME (#686).
locked-title=no|yes
tofoot.ini
(#386).tweak.overflowing-glyphs
option, which can be enabled to fix rendering issues with glyphs of any width that appear cut-off (#592).
- Non-empty lines are now considered to have a hard linebreak, unless an actual word-wrap is inserted.
- Setting
DECSDM
now disables sixel scrolling, while resetting it enables scrolling (#631).
- The
tweak.allow-overflowing-double-width-glyphs
andtweak.pua-double-width
options (which have been superseded bytweak.overflowing-glyphs
).
- FD exhaustion when repeatedly entering/exiting URL mode with many URLs.
- Double free of URL while removing duplicated and/or overlapping URLs in URL mode (#627).
- Crash when an unclosed OSC-8 URL ran into un-allocated scrollback rows.
- Some box-drawing characters were rendered incorrectly on big-endian architectures.
- Crash when resizing the window to the smallest possible size while scrollback search is active.
- Scrollback indicator being incorrectly rendered when window size is very small.
- Reduced memory usage in URL mode.
- Crash when the
E3
escape (\E[3J
) was executed, and there was a selection, or sixel image, in the scrollback (#633).
--log-level=none
command-line option.Tc
,setrgbf
andsetrgbb
capabilities infoot
andfoot-direct
terminfo entries. This should make 24-bit RGB colors work in tmux and neovim, without the need for config hacks or detection heuristics (#615).
- Grapheme cluster width is now limited to two cells by default. This
may cause cursor synchronization issues with many applications. You
can set
[tweak].grapheme-width-method=wcswidth
to revert to the behavior in foot-1.8.0.
- Grapheme cluster state being reset between codepoints.
- Regression: custom URL key bindings not working (#614).
This release adds experimental, opt-in support for grapheme cluster segmentation and grapheme shaping.
(note: several of the examples below may not render correctly in your browser, viewer or editor).
Grapheme cluster segmentation is the art of splitting up text into grapheme clusters, where a cluster may consist of more than one Unicode codepoint. For example, 🙂 is a single codepoint, while 👩🏽🚀 consists of 4 codepoints (Woman + Medium skin tone + Zero width joiner + Rocket). The goal is to cluster codepoints belonging to the same grapheme in the same cell in the terminal.
Previous versions of foot implemented a simple grapheme cluster segmentation technique that only handled zero-width codepoints. This allowed us to cluster combining characters, like q́ (q + COMBINING ACUTE ACCENT).
Once we have a grapheme cluster, we need to shape it.
Combining characters are simple: they are typically rendered as multiple glyphs layered on top of each other. This is why previous versions of foot got away with it without any actual text shaping support.
Beyond that, support from the font library is needed. Foot now depends on fcft-2.4, which added support for grapheme and text shaping. When rendering a cell, we ask the font library: give us the glyph(s) for this sequence of codepoints.
Fancy emoji sequences aside, using libutf8proc for grapheme cluster segmentation means improved correctness.
For full support, the following is required:
- fcft compiled with HarfBuzz support
- foot compiled with libutf8proc support
tweak.grapheme-shaping=yes
infoot.ini
If tweak.grapheme-shaping
has not been enabled, foot will
neither use libutf8proc to do grapheme cluster segmentation, nor will
it use fcft's grapheme shaping capabilities to shape combining
characters.
This feature is experimental mostly due to the "wcwidth" problem; how many cells should foot allocate for a grapheme cluster? While the answer may seem simple, the problem is that, whatever the answer is, the client application must come up with the same answer. Otherwise we get cursor synchronization issues.
In this release, foot simply adds together the wcwidth()
of all
codepoints in the grapheme cluster. This is equivalent to running
wcswidth()
on the entire cluster. This is likely to change in the
future.
Finally, note that grapheme shaping is not the same thing as text (or text run) shaping. In this version, foot only shapes individual graphemes, not entire text runs. That means e.g. ligatures are not supported.
- Support for DECSET/DECRST 2026, as an alternative to the existing "synchronized updates" DCS sequences (#459).
cursor.beam-thickness
option tofoot.ini
(#464).cursor.underline-thickness
option tofoot.ini
(#524).- Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing characters rendered by foot itself (rather than using font glyphs) (#471).
- Dedicated
[bell]
section to config, supporting multiple actions and a newcommand
action to run an arbitrary command. (https://codeberg.org/dnkl/foot/pulls/483) - Dedicated
[url]
section to config. [url].protocols
option tofoot.ini
(#531).- Support for setting the full 256 color palette in foot.ini (#489)
- XDG activation support, will be used by
[bell].urgent
when available (falling back to coloring the window margins red when unavailable) (#487). ctrl
+c
as a default key binding; to cancel search/url mode.${window-title}
tonotify
.- Support for including files in
foot.ini
(#555). ENVIRONMENT
section in foot(1) and footclient(1) man pages (#556).tweak.pua-double-width
option tofoot.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 (#581).
- Support for overriding configuration options on the command line (#554, #600).
underline-offset
option tofoot.ini
(#490).csd.button-color
option tofoot.ini
.-Dterminfo-install-location=disabled|<custom-path>
meson command line option (#569).
- 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 (#455).
cursor.style=bar
tocursor.style=beam
.bar
remains a recognized value, but will eventually be deprecated, and removed.- Point values in
line-height
,letter-spacing
,horizontal-letter-offset
andvertical-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 (#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 (#478).
ctrl + w
(extend-to-word-boundary) can now be used across lines (#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 (#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 (#508). - Writing a sixel on top of another sixel no longer erases the first sixel, but the two are instead blended (#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.
bell
option infoot.ini
; set actions in the[bell]
section instead.url-launch
option infoot.ini
; uselaunch
in the[url]
section instead.jump-label-letters
option infoot.ini
; uselabel-letters
in the[url]
section instead.osc8-underline
option infoot.ini
; useosc8-underline
in the[url]
section instead.
- Buffer damage quirk for Plasma/KWin.
generate-alt-random-writes.py --sixel
sometimes crashing, resulting in PGO build failures.- Wrong colors in the 256-color cube (#479).
- Memory leak triggered by "opening" an OSC-8 URI and then resetting the terminal without closing the URI (#495).
- Assertion when emitting a sixel occupying the entire scrollback history (#494).
- Font underlines being positioned below the cell (and thus being invisible) for certain combinations of fonts and font sizes (#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
, ordpi-aware=auto
with monitor(s) with a scaling factor > 1 (#509). - Crash caused by certain CSI sequences with very large parameter values (#522).
- Rare occurrences where the window did not close when the shell exited. Only seen on FreeBSD (#534)
- Foot process(es) sometimes remaining, using 100% CPU, when closing multiple foot windows at the same time (#542).
- Regression where
<mod>+shift+tab
always produced\E[Z
instead of the correct\E[27;<mod>;9~
sequence (#547). - Crash when a line wrapping OSC-8 URI crossed the scrollback wrap around (#552).
- Selection incorrectly wrapping rows ending with an explicit newline (#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 (#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 (#580).
TEXT
+STRING
+UTF8_STRING
mime types not being recognized in clipboard offers (#583).- Memory leak caused by custom box drawing glyphs not being completely freed when destroying a foot window instance (#586).
- Crash in scrollback search when current XKB layout is missing compose definitions.
- Window title not being updated while window is hidden (#591).
- Crash on badly formatted URIs in e.g. OSC-8 URLs.
- Window being incorrectly resized on CSD/SSD run-time changes.
- URxvt OSC-11 extension to set background alpha (#436).
- OSC 17/117/19/119 - change/reset selection background/foreground color.
box-drawings-uses-font-glyphs=yes|no
option tofoot.ini
(#430).
- Underline cursor is now rendered below text underline (#415).
- Foot now tries much harder to keep URL jump labels inside the window geometry (#443).
bold-text-in-bright
may now be set topalette-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 (#449).
- Reverted "Consumed modifiers are no longer sent to the client application" (#425).
- Crash caused by a double free originating in
XTSMGRAPHICS
- set number of color registers (#427). - Wrong action referenced in error message for key binding collisions (#432).
- OSC 4/104 out-of-bounds accesses to the color table. This was the reason pywal turned foot windows transparent (#434).
- PTY not being drained when the client application terminates.
auto_left_margin
not being limited tocub1
(#441).- Crash in scrollback search mode when searching beyond the last output.
- Update PGO build instructions in
INSTALL.md
(#418). - In scrollback search mode, empty cells can now be matched by spaces.
- Logic that repairs invalid key bindings ended up breaking valid key bindings instead (#407).
- Custom
line-height
settings now scale when increasing or decreasing the font size at run-time. - Newlines sometimes incorrectly inserted into copied text (#410).
- Crash when compositor send
text-input-v3::enter
events without first having sent akeyboard::enter
event (#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 (#409).
- Empty sixels resulted in non-empty images.
- 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 (#273). line-height
,letter-spacing
,horizontal-letter-offset
andvertical-letter-offset
tofoot.ini
. These options let you tweak cell size and glyph positioning (#244).- Key/mouse binding
select-extend-character-wise
, which forces the selection mode to 'character-wise' when extending a selection. DECSET
47
,1047
and1048
.- 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 (#14).
-d,--log-level={info|warning|error}
to bothfoot
andfootclient
(#337).-D,--working-directory=DIR
to bothfoot
andfootclient
(#347)DECSET 80
- sixel scrolling (#361).DECSET 1070
- sixel private color palette (#362).DECSET 8452
- position cursor to the right of sixels (#363).- Man page foot-ctlseqs(7), documenting all supported escape sequences (#235).
- Support for transparent sixels (DCS parameter
P2=1
) (#391). -N,--no-wait
tofootclient
(#395).- Completions for Bash shell (#10).
- Implement
XTVERSION
(CSI > 0q
). Foot will reply withDCS>|foot(<major>.<minor>.<patch>)ST
(#359).
- 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 (#198)
- Double- or triple clicking then dragging now extends the selection word- or line-wise (#267).
- The line thickness of box drawing characters now depend on the font size (#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
(#301). CSI 13 ; 2 t
now reports (0,0).- Key binding matching logic; key combinations like
Control+Shift+C
must now be written as eitherControl+C
orControl+Shift+c
, the latter being the preferred variant. (#376) - Consumed modifiers are no longer sent to the client application (#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 (#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).
- The
-g,--geometry
command-line option (which had been deprecated and superseded by-w,--window-size-pixels
since 1.5.0).
- 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 (#366). - Default value of
-t,--term
in--help
output when foot was built without terminfo support. - Drain PTY when the client application terminates.
selection-target=none|primary|clipboard|both
tofoot.ini
. It can be used to configure which clipboard(s) selected text should be copied to. The default isprimary
, which corresponds to the behavior in older foot releases (#288).
- The IME state no longer stays stuck in the terminal if the IME goes away during preedit.
-Dterminfo
changed from aboolean
to afeature
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.
BS
,HT
andDEL
from being stripped in bracketed paste mode.
- tdeo
- jbeich
- Completions for fish shell (#11)
- FreeBSD support (#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.
- Trailing comments in
foot.ini
must now be preceded by a space or tab (#270) - The scrollback search box no longer accepts non-printable characters.
- Non-formatting C0 control characters,
BS
,HT
andDEL
are now stripped from pasted text.
- Exit when the client application terminates, not when the TTY file descriptor is closed.
- Crash on compositors not implementing the text input interface (#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 (#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 (#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.
- pc
- FollieHiyuki
- jbeich
- tdeo
- Version number in
meson.build
.
--seed
togenerate-alt-random.py
, enabling deterministic PGO builds.
- Use
-std=c11
instead of-std=c18
. - Added
-Wno-profile-instr-unprofiled
to Clang cflags in PGO builds (INSTALL.md)
- Missing dependencies in meson, causing heavily parallelized builds to fail.
- Background color when alpha < 1.0 being wrong (#249).
generate-alt-random.py
failing in containers.
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.
- IME support. This is compile-time optional, see INSTALL.md (#134).
DECSET
escape to enable/disable IME:CSI ? 737769 h
enables IME andCSI ? 737769 l
disables it. This can be used to e.g. enable/disable IME when entering/leaving insert mode in vim.dpi-aware
option tofoot.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 settingdpi-aware=yes
. Settingdpi-aware=no
forces font sizing to be based on the scaling factor. (#206).- Implement reverse auto-wrap (auto_left_margin, bw, in
terminfo). This mode can be enabled/disabled with
CSI ? 45 h
andCSI ? 45 l
. It is enabled by default (#150). bell
option tofoot.ini
. Can be set toset-urgency
to make foot render the margins in red when receivingBEL
while not having keyboard focus. Applications can dynamically enable/disable this with theCSI ? 1042 h
andCSI ? 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 valueset-urgency
was chosen for forward-compatibility, in the hopes that this proposal eventualizes (#157).bell
option can also be set tonotify
, in which case a desktop notification is emitted when foot receivesBEL
in an unfocused window.word-delimiters
option tofoot.ini
(#156).csd.preferred
can now be set tonone
to disable window decorations. Note that some compositors will render SSDs despite this option being used (#163).- Terminal content is now auto-scrolled when moving the mouse above or below the window while selecting (#149).
font-bold
,font-italic
font-bold-italic
options tofoot.ini
. These options allow custom bold/italic fonts. They are unset by default, meaning the bold/italic version of the regular font is used (#169).- Drag & drop support; text, files and URLs can now be dropped in a foot terminal window (#175).
clipboard-paste
andprimary-paste
scrollback search bindings. By default, they are bound toctrl+v ctrl+y
andshift+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 (#183). bold-text-in-bright
option tofoot.ini
. When enabled, bold text is rendered in a brighter color (#199).-w,--window-size-pixels
and-W,--window-size-chars
command line options tofootclient
(#189).- Short command line options for
--title
,--maximized
,--fullscreen
,--login-shell
,--hold
and--check-config
. DECSET
escape to modify theescape
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 infoot.ini
(#224). - Status line terminfo capabilities
hs
,tsl
,fsl
anddsl
. This enables e.g. vim to set the window title (#242).
- 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 (#221).
- Cursor will now blink if either
CSI ? 12 h
orCSI Ps SP q
has been used to enable blinking. cursor.blink infoot.ini
controls the default state ofCSI Ps SP q
(#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 returning2
.
- Support for loading configuration from
$XDG_CONFIG_HOME/footrc
. scrollback
option fromfoot.ini
.geometry
fromfoot.ini
.- Key binding action
scrollback-up
andscrollback-down
.
- Error when re-assigning a default key binding (#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.
- Num Lock by default overrides the keypad mode. See foot.ini(5)::KEYPAD, or README.md for details (#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.
- Resize very slow when window is hidden (#190).
- Key mappings for key combinations with
shift
+tab
(#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.
- Crash when libxkbcommon cannot find a suitable libX11 compose file. Note that foot will run, but without support for dead keys. (#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 #171).
- Compilation error "overflow in conversion from long 'unsigned int'
to 'int' changes value... " seen on platforms where the
request
argument inioctl(3)
is anint
(for example: linux/ppc64). - Crash when using the mouse in alternate scroll mode in an unfocused window (#179).
- Character dropped from selection when "right-click-hold"-extending a selection (#180).
- Regression: middle clicking double pastes in e.g. vim (#168)
- Default value of the scrollback.multiplier option in
foot.ini
from1.0
to3.0
. shift
+insert
now pastes from the primary selection by default. This is in addition to middle-clicking with the mouse.
- 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 (#146).
- Color flashes when changing the color palette with OSC 4,10,11 (#141).
- Scrollback position is now retained when resizing the window (#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 (#144). - Crash when
foot.ini
contains an invalid section name (#159). - Background opacity when in reverse video mode.
- Crash when writing a sixel image that extends outside the terminal's right margin (#151).
- Sixel image at non-zero column positions getting sheared at seemingly random occasions (#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.
$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.
- Scrollback position indicator. This feature is optional and
controlled by the scrollback.indicator-position and
scrollback.indicator-format options in
foot.ini
(#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 (#51).
- mouse.hide-when-typing option to
foot.ini
. - scrollback.multiplier option to
foot.ini
(#54). - colors.selection-foreground and colors.selection-background
options to
foot.ini
. - tweak.render-timer option to
foot.ini
. - Modifier support in mouse bindings (#77).
- Click count support in mouse bindings, i.e double- and triple-click (#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
(#79). - Implement XTSAVE/XTRESTORE escape sequences,
CSI ? Ps s
andCSI ? Ps r
(#91). $COLORTERM
is now set totruecolor
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
(#116). - initial-window-size-pixels options to
foot.ini
and-w,--window-size-pixels
command line option tofoot
. 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 tofoot
. 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 (#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 toyes
. 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 (#135).
- 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
(#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.
- 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 (#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 (#94).
- Extra newlines when copying empty cells (#97).
- Mouse events from being sent to client application when a mouse binding has consumed it.
- Input events from getting mixed with paste data (#101).
- Missing DPI values for "some" monitors on Gnome (#118).
- Handling of multi-column composed characters while reflowing.
- Escape sequences sent for key combinations with
Return
, that did not includeAlt
. - 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.
- Mouse cursor is now always a
left_ptr
when inside the margins, to indicate it is not possible to start a selection.
- Crash when starting a selection inside the margins.
- Improved font size consistency across multiple monitors with different DPI (#47).
- Handle trailing comments in
footrc
- 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.
- 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.
- Crash in scrollback search.
- Crash when a pipe-visible or pipe-scrollback command contained an unclosed quote (#49).
- Maximum window title length from 100 to 2048.
- 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.
- Compilation errors in release builds with some combinations of compilers and compiler flags.
Sync
to terminfo. This is a tmux extension that indicates "Synchronized Updates" are supported.--hold
command line option tofootclient
.- 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
andkpZRO
. - 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 (#29). Example:
pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print
- 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
toleft_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 usesPs=0
instead ofPs=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.
- Do not stop an ongoing selection when
shift
is released. When the client application is capturing the mouse, one must hold downshift
to start a selection. This selection is now finalized only when the mouse button is released - not as soon asshift
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 a0x0
terminal size (#20). - Glyphs overflowing into surrounding cells (#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 reuse 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 (#35). C0::VT
to be processed asC0::LF
. Previously,C0::VT
would only move the cursor down, but never scroll.C0::HT
(Horizontal Tab, or\t
) no longer clearsLCF
(Last Column Flag).C0::LF
now always clearsLCF
. Previously, it only cleared it when the cursor was not at the bottom of the scrolling region.IND
andRI
now clearsLCF
.DECAWM
now clearsLCF
.- 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 (#38).
- User configurable key- and mouse bindings. See
man 5 foot
and the examplefootrc
(#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.
- 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 (#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 isunknown
is FontConfig'srgba
property used. If the subpixel order isnone
, 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 offoot -- sh -c true
.
- Keyboard/pointer handler workarounds for Sway 1.2.
- 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.
- Forgot to version bump 1.2.2
- Changed icon name in
foot.desktop
andfoot-server.desktop
from terminal to utilities-terminal. XDG_SESSION_ID
is now included in the server/daemon default socket path.
- Window size doubling when moving window between outputs with different scaling factors (#3).
- Font being too small on monitors with fractional scaling (#5).
- Building AUR package
- 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
- 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)
- '28' from DA response