• 1.25.0 b44a62724c

    1.25.0 Stable

    dnkl released this 2025-10-16 08:47:31 +02:00 | 3 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • Performance increased and input latency decreased on compositors that do not release SHM buffers immediately (#2188).
    • colors{,2}.dim-blend-towards=black|white option, allowing you to select towards which color to blend when dimming text. Defaults to black in [colors], and white in [colors2] (#2187).

    Changed

    • SHM buffer sizes are now rounded up to nearest page size, and their stride is always an even multiple of 256 bytes (by default, configurable by setting tweak.min-stride-alignment). This allows compositor to directly import foot's SHM buffers to the GPU, with e.g. integrated graphics (#2182).
    • Jump label colors in the modus-operandi theme, for improved readability.

    Fixed

    • URL labels misplaces when URL contains double-width characters (#2179).
    • One space too much consumed when copying (or pipe:ing) contents with tabs (#2194)
    • Ensure we render a new frame when changing fullscreen state. Before, this was automatically done if the window was also resized. But, it is possible for a compositor to change an application's fullscreen state without resizing the window.

    Contributors

    • Charalampos Mitrodimas
    • Matthias Heyman
    Downloads
  • 1.24.0 fa0fd2f50f

    1.24.0 Stable

    dnkl released this 2025-09-12 10:18:53 +02:00 | 22 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • The uppercase-regex-insert option controls whether an uppercase hint character will insert the selected text into the prompt in regex-copy or show-urls-copy mode. It defaults to true. (#2159).

    Changed

    • The label letters are no longer sorted before being assigned to URLs (#2140).
    • Sending SIGUSR1/SIGUSR2 to a foot --server process now causes newly spawned client instances to use the selected theme, instead of the original one.
    • SIGUSR1/SIGUSR2 can now be sent to footclient processes, to change the theme of that particular instance (#2156).

    Fixed

    • Invalid configuration values overriding valid ones in surprising ways.
    • Bug where the libutempter utmp backend did not record logouts correctly.

    Contributors

    • Ryan Roden-Corrent
    • Tobias Mock
    Downloads
  • 1.23.1 43620935a1

    1.23.1 Stable

    dnkl released this 2025-07-23 08:29:25 +02:00 | 41 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Changed

    • URL labels are now assigned in reverse order, from bottom to top. This ensures the last URL (which is often the one you are interested in) is always assigned the same key (#2140).
    • Sending SIGUSR1 no longer toggles between [colors] and [colors2], but explicitly changes to [colors]. SIGUSR2 changes to [colors2] (#2144).

    Fixed

    • 10-bit surfaces sometimes used instead of 16-bit.
    • OSC-104/110/111/112/117/119 (reset colors) not taking the currently active theme into account.
    Downloads
  • 1.23.0 d62bff1440

    1.23.0 Stable

    dnkl released this 2025-07-16 08:16:10 +02:00 | 53 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • colors2 config section. This section duplicates the colors section, and lets you define an alternative color theme.
    • key-bindings.color-theme-switch-1, key-bindings.color-theme-switch-2 and key-bindings.color-theme-toggle key bindings. These can be used to switch between the primary and alternative color themes. They are not bound by default.
    • Sending SIGUSR1 to the foot process now triggers a theme switch (in server mode, all instances toggles their themes).
    • Support for private mode 2031 - Dark and Light Mode Detection (#2025)
    • Added initial-color-theme=1|2 config option. 1 uses colors from the [colors] section, 2 uses [colors2].
    • Combined dark/light theme files for (dark variant is the default, set initial-color-theme=2 to use the light variant by default):
      • gruvbox
      • nvim
      • paper-color
      • selenized
      • solarized
    • regex-copy/show-urls-copy will copy and paste the selected text if the hint is completed with an uppercase character (#1975).
    • 16-bit to tweak.surface-bit-depth. Makes foot use 16-bit image buffers. They provide the necessary color precision required by gamma-correct-blending=yes.
    • New cursor shapes, from cursor-shape-v1 version 2.
    • center-when-fullscreen and center-when-maximized-and-fullscreen to the pad option. This allows you to configure when the grid is centered in more detail (#2111).

    Changed

    • cursor.color moved to colors.cursor.
    • OSC-11 without an alpha value will now restore the configured (i.e. from foot.ini) alpha, rather than keeping whatever the current alpha value is, unchanged.
    • gamma-correct-blending=yes now defaults to 16-bit image buffers, instead of 10-bit.
    • Allow setting either selection background, or selection foreground, only (#1846).
    • Drop required version of libxkbcommon from 1.8.0 back to 1.0.0 (#2103).
    • OSC-52: an empty payload now clears the clipboard.
    • DA (Device Attributes): include 52 in the reply, to indicate OSC-52 support (when at least copy has been enabled in security.osc52).

    Deprecated

    • cursor.color config option; use colors.cursor instead.

    Removed

    • Subsurface unmap quirk for Sway. This was a workaround added in 1.12.1, for Sway issue #6960.

    Fixed

    • REP: wrong width of repeated multi-codepoint graphemes.
    • Incorrect surface commit after a configure event, under certain conditions (#2105).

    Contributors

    • Chen Mulong
    • Kirill Primak
    • Ryan Roden-Corrent
    • tokyo4j
    Downloads
  • 1.22.3 85c81042d2

    1.22.3 Stable

    dnkl released this 2025-05-01 10:21:38 +02:00 | 106 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • auto to the tweak.surface-bit-depth option.

    Changed

    • gamma-correct-blending now defaults to no instead of yes.
    • tweak.surface-bit-depth default value changed to auto; uses 10-bit surfaces when gamma-correct-blending=yes, and 8-bit surfaces otherwise.

    Fixed

    • Inaccurate colors when gamma-correct-blending=yes (#2082).
    Downloads
  • 1.22.2 513e91c33a

    1.22.2 Stable

    dnkl released this 2025-04-30 10:24:10 +02:00 | 111 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Changed

    • gamma-correct-blending=yes now uses a pure gamma 2.2 transfer function, instead of the piece-wise sRGB transfer function, to match what compositors do.

    Fixed

    • Wrong colors when gamma-correct-blending=yes (the default when there is compositor support). Note that some colors will still be off by a very small amount, due to loss of precision when converting to a linear color space. (#2035).
    Downloads
  • 1.22.1 c85d5d5096

    1.22.1 Stable

    dnkl released this 2025-04-26 10:36:40 +02:00 | 116 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Fixed

    • colors.alpha-mode=matching not working as intended.
    • Grapheme shaping was allowed to be "enabled" at runtime, even though disabled at compile time. This caused mis-rendering of certain codepoints (#2039).
    • Keyboard modifiers not being reset on keyboard leave events (#2034).
    • Fallback font (and possibly wrong color) being used when a character was followed by a zero-width grapheme breaking codepoint (for example, LEFT-TO-RIGHT MARK) (#2049).
    • Regression: alpha applied to inversed text/selections (#2073).

    Contributors

    • Jan Palus
    • valoq
    Downloads
  • 1.22.0 95f7b71058

    1.22.0 Stable

    dnkl released this 2025-04-17 14:41:54 +02:00 | 137 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • Support for toplevel edge constraints. When the compositor indicates the toplevel has edge constraints, foot will not allow the window to be resized (via CSDs) in the constrained directions.
    • Virtual modifiers (e.g. Alt instead of Mod1, Super instead of Mod4 etc) in key bindings are now recognized as being virtual, and are automatically mapped to the corresponding real modifier. This means you can use e.g. Alt+b instead of Mod1+b.
    • alpha-mode option to foot.ini. Defaults to default. This config changes how alpha is handled on background colours not set by the terminal.(e.g. vim) (#2026)

    Changed

    • UTF-8 error recovery now discards fewer bytes.
    • Auto-calculated dimmed and brightened colors (e.g. when custom dim colors has not configured) is now done by linear RGB interpolation, rather than converting to HSL and adjusting the luminance (#2006).
    • Virtual modifiers in keyboard events from the compositor are now supported. This works around various issues seen when running foot under mutter (GNOME) (#2009):
      • Some key combinations generating the wrong escape sequence in the kitty keyboard protocol.
      • some of foot's default shortcuts not working (mainly those using Mod1) out of the box.
    • Default URL regex changed to a much more strict variant (#2016). You can manually set the old one, if you prefer it over the new regex.
    • A tiled window can now be resized in the corners (via CSDs), unless the compositor has indicated the toplevel has edge constraints.

    Fixed

    • Regression: assertion in url-mode.c when activating a second URL via show-urls-persistent (#2000).
    • Build failure (srgb.h not found) when doing a parallel build.
    • Regression: reflowing (changing the window size) removing empty lines (#2011).
    • url/regex-copy not handling double-width characters correctly (#2027).

    Contributors

    • Alex Xu (Hello71)
    • datsudo
    • Dominique Martinet
    • Fazzi
    • llyyr
    • Łukasz Wojniłowicz
    • Sam McCall
    Downloads
  • 1.21.0 68f5eab0b0

    1.21.0 Stable

    dnkl released this 2025-03-17 12:11:20 +01:00 | 169 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Added

    • Support for the new Wayland protocol xdg-system-bell-v1 protocol (added in wayland-protocols 1.38), via the new config option bell.system=no|yes (defaults to yes).
    • Support for custom regex matching (#1386, #1872)
    • Support for kitty's text-sizing protocol (w, width, only), OSC-66.
    • cursor.style can now be set to hollow (#1965).
    • search-bindings.delete-to-start and search-bindings.delete-to-end key bindings, defaulting to Control+u and Control+k respectively (#1972).
    • Gamma-correct font rendering. Requires compositor support (wp_color_management_v1, and specifically, the ext_linear transfer function). Enabled by default when compositor support is available. Can be explicitly enabled or disabled with gamma-correct-blending=no|yes.

    Changed

    • Do not try to set a zero width, or height, if the compositor sends a configure event with only one dimension being zero (#1925).
    • Auto-detection of URLs (i.e. not OSC-8 based URLs) are now regex based.
    • Rename Tokyo Night Day theme to Tokyo Night Light and update colors.
    • fcft >= 3.3.1 is now required.
      • tweak.scaling-filter now supports more scaling-filters
      • scaled bitmap fonts (when enabled in FontConfig) no longer have a scaling-filter applied
    • Linefeed:ing control characters (e.g. \n) no longer clears a row's internal linebreak flag. This fixes an issue where e.g. multi-line prompt input in fish is treated as separate lines, rather than one logical, when selecting and copying it (#1487).
    • wayland-protocols >= 1.41 is now required.

    Removed

    • url.uri-characters and url.protocols. Both options have been replaced by url.regex.
    • notify option (has been deprecated since 1.18.0).
    • notify-focus-inhibit option (has been deprecated since 1.18.0).

    Fixed

    • Kitty keyboard protocol: alternate key reporting failing to report the alternate codepoint in some corner cases (#1918).
    • foot and footclient hanging, or terminating with SIGABRT, when starting inside a directory whose total length is more than 1024 characters.
    • Regression: reflowing (resizing the window) a line that ends with a double-width glyph that was pushed to the next line due to there being only one cell left on current line, did not remove the virtual space inserted at the end of the current line.
    • Wrong key bindings executed when using alternative keyboard layouts (#1929).
    • Foot not closing file descriptors for unrecognized or no_keymap keymaps.
    • Combining characters (including emojis consisting of multiple codepoints) not being handled correctly when insert mode is enabled (#1947).
    • Reflow of the cursor (active + saved) when at the end of the line with a pending wrap (LCF set) (#1954).
    • Zero-width characters that also are grapheme breaks (e.g. U+200B, ZERO WIDTH SPACE) being ignored (discarded and never stored in the grid) (#1960).
    • --server=<FD> not working on FreeBSD (#1956).
    • Crash when resetting the terminal and an application had previously set a custom app ID (#1963)
    • Grapheme clustering state not reset on cursor movements.
    • Kitty keyboard protocol: no release events emitted for composed keys.
    • IME: the initial cursor position was reported as 0,0,0,0 (#1994).

    Contributors

    • Adrian fxj9a
    • Alexander Orzechowski
    • Attila Fidan
    • camel-cdr
    • Craig Barnes
    • Guillaume Outters
    • Johannes Altmanninger
    • Ludovico Gerardi
    • sewn
    • Thomas Bonnefille
    Downloads
  • 1.20.2 bb60618941

    1.20.2 Stable

    dnkl released this 2025-01-18 09:31:29 +01:00 | 314 commits to master since this release

    Signed by dnkl
    GPG key ID: 5BBD4992C116573F

    Changed

    • The CSI 21 t (report window title) and OSC 176 ? (report app-id) escape sequences are now ignored (#1894).

    Fixed

    • 'flash' overlay (triggered by either tput flash, or enabling bell.visual and then sending BEL to the terminal) stuck when colors.flash-alpha=1.0.
    • Crash when compositor sends a keyboard enter event before the foot window has been mapped (#1910).
    • Build failures (utf8proc.h not found) on at least FreeBSD, but most likely other BSDs, as well as some Linuxes (#1903).

    Contributors

    • Alexander Orzechowski
    Downloads