Skip to content
Release 1.18.0

Added
-----

* `cursor.blink-rate` option, allowing you to configure the rate the
  cursor blinks with (when `cursor.blink=yes`) ([#1707][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][1738]).
* Styled and colored underlines ([#828][828]).
* Support for SGR 21 (double underline).
* Support for `XTPUSHCOLORS`, `XTPOPCOLORS` and `XTREPORTCOLORS`,
  i.e. color palette stack ([#856][856]).
* Log output now respects the [`NO_COLOR`](http://no-color.org/)
  environment variable ([#1771][1771]).
* Support for [in-band window resize
  notifications](https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83),
  private mode `2048`.
* Support for OSC-99 [_"Kitty desktop
  notifications"_](https://sw.kovidgoyal.net/kitty/desktop-notifications/).
* `desktop-notifications.command` option, replaces `notify`.
* `desktop-notifications.inhibit-when-focused` option, replaces
  `notify-focus-inhibit`.
* `${category}`, `${urgency}`, `${expire-time}`, `${replace-id}`,
  `${icon}` and `${action-argument}` added to the
  `desktop-notifications.command` template.
* `desktop-notifications.command-action-argument` option, defining how
  `${action-argument}` (in `desktop-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).

[1707]: https://codeberg.org/dnkl/foot/issues/1707
[1738]: https://codeberg.org/dnkl/foot/issues/1738
[828]: https://codeberg.org/dnkl/foot/issues/828
[856]: https://codeberg.org/dnkl/foot/issues/856
[1771]: https://codeberg.org/dnkl/foot/issues/1771

Changed
-------

* All `XTGETTCAP` capabilities are now in the `tigetstr()` 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][1701]).

  In other words, if, after this change, `XTGETTCAP` returns a string
  that is different compared to `tigetstr()`, then it is likely a bug
  in foot's implementation of `XTGETTCAP`.
* 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][1761]).
* Mouse wheel events now generate `BTN_WHEEL_BACK` and
  `BTN_WHEEL_FORWARD` "button presses", instead of `BTN_BACK` and
  `BTN_FORWARD`. The default bindings have been updated, and
  `scrollback-up-mouse`, `scrollback-down-mouse`, `font-increase` and
  `font-decrease` now use the new button names.

  This change allow users to separate physical mouse buttons that
  _also_ generates `BTN_BACK` and `BTN_FORWARD`, from wheel scrolling
  ([#1763][1763]).
* Replaced the old catppuccin theme with updated flavored themes
  pulled from [catppuccin/foot](https://github.com/catppuccin/foot)
* Mouse selections can now be started inside the margins
  ([#1702][1702]).

[1701]: https://codeberg.org/dnkl/foot/issues/1701
[1761]: https://codeberg.org/dnkl/foot/issues/1761
[1763]: https://codeberg.org/dnkl/foot/issues/1763
[1702]: https://codeberg.org/dnkl/foot/issues/1702

Deprecated
----------

* `notify` option; replaced by `desktop-notifications.command`.
* `notify-focus-inhibit` option; replaced by
  `desktop-notifications.inhibit-when-focused`.

Fixed
-----

* 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][1694]).
* Unicode-mode in one foot client affecting other clients, in foot
  server mode ([#1717][1717]).
* IME interfering in URL-mode ([#1718][1718]).
* OSC-52 reply interleaved with other data sent to the client
  ([#1734][1734]).
* XKB compose state being reset when foot receives a new keymap
  ([#1744][1744]).
* Regression: alpha changes through OSC-11 sequences not taking effect
  until window is resized.
* VS15 being ignored ([#1742][1742]).
* VS16 being ignored for a subset of the valid VS16 sequences
  ([#1742][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` and `BTN_FORWARD`, when sending a mouse input
  escape sequence to the terminal application.

[1694]: https://codeberg.org/dnkl/foot/issues/1694
[1717]: https://codeberg.org/dnkl/foot/issues/1717
[1718]: https://codeberg.org/dnkl/foot/issues/1718
[1734]: https://codeberg.org/dnkl/foot/issues/1734
[1744]: https://codeberg.org/dnkl/foot/issues/1744
[1742]: https://codeberg.org/dnkl/foot/issues/1742

Contributors
------------

* abs3nt
* Artturin
* Craig Barnes
* Jan Beich
* Mariusz Bialonczyk
* Nicolas Kolling Ribas