1# Changelog 2 3* [1.10.3](#1-10-3) 4* [1.10.2](#1-10-2) 5* [1.10.1](#1-10-1) 6* [1.10.0](#1-10-0) 7* [1.9.2](#1-9-2) 8* [1.9.1](#1-9-1) 9* [1.9.0](#1-9-0) 10* [1.8.2](#1-8-2) 11* [1.8.1](#1-8-1) 12* [1.8.0](#1-8-0) 13* [1.7.2](#1-7-2) 14* [1.7.1](#1-7-1) 15* [1.7.0](#1-7-0) 16* [1.6.4](#1-6-4) 17* [1.6.3](#1-6-3) 18* [1.6.2](#1-6-2) 19* [1.6.1](#1-6-1) 20* [1.6.0](#1-6-0) 21* [1.5.4](#1-5-4) 22* [1.5.3](#1-5-3) 23* [1.5.2](#1-5-2) 24* [1.5.1](#1-5-1) 25* [1.5.0](#1-5-0) 26* [1.4.4](#1-4-4) 27* [1.4.3](#1-4-3) 28* [1.4.2](#1-4-2) 29* [1.4.1](#1-4-1) 30* [1.4.0](#1-4-0) 31* [1.3.0](#1-3-0) 32* [1.2.3](#1-2-3) 33* [1.2.2](#1-2-2) 34* [1.2.1](#1-2-1) 35* [1.2.0](#1-2-0) 36 37 38## 1.10.3 39 40### Added 41 42* Kitty keyboard protocol: 43 - [Report event types](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-events) 44 (mode `0b10`) 45 - [Report alternate keys](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-alternates) 46 (mode `0b100`, but not that only the _shifted_ key is reported, 47 not the _base layout key_) 48 - [Report all keys as escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-all-keys) 49 (mode `0b1000`) 50 - [Report associated text](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-text) 51 (mode `0b10000`) 52 53 54### Fixed 55 56* Crash when bitmap fonts are scaled down to very small font sizes 57 (https://codeberg.org/dnkl/foot/issues/830). 58* Crash when overwriting/erasing an OSC-8 URL. 59 60 61## 1.10.2 62 63### Added 64 65* New value, `max`, for `[tweak].grapheme-width-method`. 66* Initial support for the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/). 67 Modes supported: 68 - [Disambiguate escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#disambiguate) (mode `0b1`) 69* “Window menu” (compositor provided) on right clicks on the CSD title 70 bar. 71 72 73### Fixed 74 75* An ongoing mouse selection is now finalized on a pointer leave event 76 (for example by switching workspace while doing a mouse selection). 77* OSC-8 URIs in the last column 78* OSC-8 URIs sometimes being applied to too many, and seemingly 79 unrelated cells (https://codeberg.org/dnkl/foot/issues/816). 80* OSC-8 URIs incorrectly being dropped when resizing the terminal 81 window with the alternate screen active. 82* CSD border not being dimmed when window is not focused. 83* Visual corruption with large CSD borders 84 (https://codeberg.org/dnkl/foot/issues/823). 85* Mouse cursor shape sometimes not being updated correctly. 86* Color palette changes (via OSC 4/104) no longer affect RGB colors 87 (https://codeberg.org/dnkl/foot/issues/678). 88 89 90### Contributors 91 92* Jonas Ådahl 93 94 95## 1.10.1 96 97### Added 98 99* `-Dthemes=false|true` meson command line option. When disabled, 100 example theme files are **not** installed. 101* XDG desktop file for footclient. 102 103 104### Fixed 105 106* Regression: `letter-spacing` resulting in a “not a valid option” 107 error (https://codeberg.org/dnkl/foot/issues/795). 108* Regression: bad section name in configuration error messages. 109* Regression: `pipe-*` key bindings not being parsed correctly, 110 resulting in invalid error messages 111 (https://codeberg.org/dnkl/foot/issues/809). 112* OSC-8 data not being cleared when cell is overwritten 113 (https://codeberg.org/dnkl/foot/issues/804, 114 https://codeberg.org/dnkl/foot/issues/801). 115 116 117### Contributors 118 119* Arnavion 120* Craig Barnes 121* Soc Virnyl Silab Estela 122* Xiretza 123 124 125## 1.10.0 126 127### Added 128 129* `notify-focus-inhibit` boolean option, which can be used to control 130 whether desktop notifications should be inhibited when the terminal 131 has keyboard focus 132* `[colors].scrollback-indicator` color-pair option, which specifies 133 foreground and background colors for the scrollback indicator. 134* `[key-bindings].noop` action. Key combinations assigned to this 135 action will not be sent to the application 136 (https://codeberg.org/dnkl/foot/issues/765). 137* Color schemes are now installed to `${datadir}/foot/themes`. 138* `[csd].border-width` and `[csd].border-color`, allowing you to 139 configure the width and color of the CSD border. 140* Support for `XTMODKEYS` with `Pp=4` and `Pv=2` (_modifyOtherKeys=2_). 141* `[colors].dim0-7` options, allowing you to configure custom “dim” 142 colors (https://codeberg.org/dnkl/foot/issues/776). 143 144 145### Changed 146 147* `[tweak].grapheme-shaping` is now enabled by default when both foot 148 itself, and fcft has been compiled with support for it. 149* Default value of `[tweak].grapheme-width-method` changed from 150 `double-width` to `wcswidth`. 151* INSTALL.md: `--override tweak.grapheme-shaping=no` added to PGO 152 command line. 153* Foot now terminates if there are no available seats - for example, 154 due to the compositor not implementing a recent enough version of 155 the `wl_seat` interface (https://codeberg.org/dnkl/foot/issues/779). 156* Boolean options in `foot.ini` are now limited to 157 “yes|true|on|1|no|false|off|0”, Previously, anything that did not 158 match “yes|true|on”, or a number greater than 0, was treated as 159 “false”. 160* `[scrollback].multiplier` is no longer applied when the alternate 161 screen is in use (https://codeberg.org/dnkl/foot/issues/787). 162 163 164### Removed 165 166* The bundled PKGBUILD. 167* Deprecated `bell` option (replaced with `[bell]` section in 1.8.0). 168* Deprecated `url-launch`, `jump-label-letters` and `osc8-underline` 169 options (moved to a dedicated `[url]` section in 1.8.0) 170 171 172### Fixed 173 174* ‘Sticky’ modifiers in input handling; when determining modifier 175 state, foot was looking at **depressed** modifiers, not 176 **effective** modifiers, like it should. 177* Fix crashes after enabling CSD at runtime when `csd.size` is 0. 178* Convert `\r` to `\n` when reading clipboard data 179 (https://codeberg.org/dnkl/foot/issues/752). 180* Clipboard occasionally ceasing to work, until window has been 181 re-focused (https://codeberg.org/dnkl/foot/issues/753). 182* Don’t propagate window title updates to the Wayland compositor 183 unless the new title is different from the old title. 184 185 186### Contributors 187 188* armin 189* Craig Barnes 190* Daniel Martí 191* feeptr 192* Mitja Horvat 193* Ronan Pigott 194* Stanislav Ochotnický 195 196 197## 1.9.2 198 199### Changed 200 201* PGO helper scripts no longer set `LC_CTYPE=en_US.UTF-8`. But, note 202 that “full” PGO builds still **require** a UTF-8 locale; you need 203 to set one manually in your build script 204 (https://codeberg.org/dnkl/foot/issues/728). 205 206 207## 1.9.1 208 209### Added 210 211* Warn when it appears the primary font is not monospaced. Can be 212 disabled by setting `[tweak].font-monospace-warn=no` 213 (https://codeberg.org/dnkl/foot/issues/704). 214* PGO build scripts, in the `pgo` directory. See INSTALL.md - 215 _Performance optimized, PGO_, for details 216 (https://codeberg.org/dnkl/foot/issues/701). 217* Braille characters (U+2800 - U+28FF) are now rendered by foot 218 itself (https://codeberg.org/dnkl/foot/issues/702). 219* `-e` command-line option. This option is simply ignored, to appease 220 program launchers that blindly pass `-e` to any terminal emulator 221 (https://codeberg.org/dnkl/foot/issues/184). 222 223 224### Changed 225 226* `-Ddefault-terminfo` is now also applied to the generated terminfo 227 definitions when `-Dterminfo=enabled`. 228* `-Dcustom-terminfo-install-location` no longer accepts `no` as a 229 special value, to disable exporting `TERMINFO`. To achieve the same 230 result, simply don’t set it at all. If it _is_ set, `TERMINFO` is 231 still exported, like before. 232* The default install location for the terminfo definitions have been 233 changed back to `${datadir}/terminfo`. 234* `dpi-aware=auto`: fonts are now scaled using the monitor’s DPI only 235 when **all** monitors have a scaling factor of one 236 (https://codeberg.org/dnkl/foot/issues/714). 237 238 239### Fixed 240 241* Added workaround for GNOME bug where multiple button press events 242 (for the same button) is sent to the CSDs without any release or 243 leave events in between (https://codeberg.org/dnkl/foot/issues/709). 244* Line-wise selection not taking soft line-wrapping into account 245 (https://codeberg.org/dnkl/foot/issues/726). 246 247 248### Contributors 249 250* [craigbarnes](https://codeberg.org/craigbarnes) 251* Arnavion 252 253 254## 1.9.0 255 256### Added 257 258* Window title in the CSDs 259 (https://codeberg.org/dnkl/foot/issues/638). 260* `-Ddocs=disabled|enabled|auto` meson command line option. 261* Support for `~`-expansion in the `include` directive 262 (https://codeberg.org/dnkl/foot/issues/659). 263* Unicode 13 characters U+1FB3C - U+1FB6F, U+1FB9A and U+1FB9B to list 264 of box drawing characters rendered by foot itself (rather than using 265 font glyphs) (https://codeberg.org/dnkl/foot/issues/474). 266* `XM`+`xm` to terminfo. 267* Mouse buttons 6/7 (mouse wheel left/right). 268* `url.uri-characters` option to `foot.ini` 269 (https://codeberg.org/dnkl/foot/issues/654). 270 271 272### Changed 273 274* Terminfo files can now co-exist with the foot terminfo files from 275 ncurses. See `INSTALL.md` for more information 276 (https://codeberg.org/dnkl/foot/issues/671). 277* `bold-text-in-bright=palette-based` now only brightens colors from palette 278* Raised grace period between closing the PTY and sending `SIGKILL` (when 279 terminating the client application) from 4 to 60 seconds. 280* When terminating the client application, foot now sends `SIGTERM` immediately 281 after closing the PTY, instead of waiting 2 seconds. 282* Foot now sends `SIGTERM`/`SIGKILL` to the client application’s process group, 283 instead of just to the client application’s process. 284* `kmous` terminfo capability from `\E[M` to `\E[<`. 285* pt-or-px values (`letter-spacing`, etc) and the line thickness 286 (`tweak.box-drawing-base-thickness`) in box drawing characters are 287 now translated to pixel values using the monitor’s scaling factor 288 when `dpi-aware=no`, or `dpi-aware=auto` and the scaling factor is 289 larger than 1 (https://codeberg.org/dnkl/foot/issues/680). 290* Spawning a new terminal with a working directory that does not exist 291 is no longer a fatal error. 292 293 294### Removed 295 296* `km`/`smm`/`rmm` from terminfo; foot prefixes Alt-key combinations 297 with `ESC`, and not by setting the 8:th “meta” bit, regardless of 298 `smm`/`rmm`. While this _can_ be disabled by, resetting private mode 299 1036, the terminfo should reflect the **default** behavior 300 (https://codeberg.org/dnkl/foot/issues/670). 301* Keypad application mode keys from terminfo; enabling the keypad 302 application mode is not enough to make foot emit these sequences - 303 you also need to disable private mode 1035 304 (https://codeberg.org/dnkl/foot/issues/670). 305 306 307### Fixed 308 309* Rendering into the right margin area with `tweak.overflowing-glyphs` 310 enabled. 311* PGO builds with clang (https://codeberg.org/dnkl/foot/issues/642). 312* Crash in scrollback search mode when selection has been canceled due 313 to terminal content updates 314 (https://codeberg.org/dnkl/foot/issues/644). 315* Foot process not terminating when the Wayland connection is broken 316 (https://codeberg.org/dnkl/foot/issues/651). 317* Output scale being zero on compositors that does not advertise a 318 scaling factor. 319* Slow-to-terminate client applications causing other footclient instances to 320 freeze when closing a footclient window. 321* Underlying cell content showing through in the left-most column of 322 sixels. 323* `cursor.blink` not working in GNOME 324 (https://codeberg.org/dnkl/foot/issues/686). 325* Blinking cursor stops blinking, or becoming invisible, when 326 switching focus from, and then back to a terminal window on GNOME 327 (https://codeberg.org/dnkl/foot/issues/686). 328 329 330### Contributors 331 332* Nihal Jere 333* [nowrep](https://codeberg.org/nowrep) 334* [clktmr](https://codeberg.org/clktmr) 335 336 337## 1.8.2 338 339### Added 340 341* `locked-title=no|yes` to `foot.ini` 342 (https://codeberg.org/dnkl/foot/issues/386). 343* `tweak.overflowing-glyphs` option, which can be enabled to fix rendering 344 issues with glyphs of any width that appear cut-off 345 (https://codeberg.org/dnkl/foot/issues/592). 346 347 348### Changed 349 350* Non-empty lines are now considered to have a hard linebreak, 351 _unless_ an actual word-wrap is inserted. 352* Setting `DECSDM` now _disables_ sixel scrolling, while resetting it 353 _enables_ scrolling (https://codeberg.org/dnkl/foot/issues/631). 354 355 356### Removed 357 358* The `tweak.allow-overflowing-double-width-glyphs` and 359 `tweak.pua-double-width` options (which have been superseded by 360 `tweak.overflowing-glyphs`). 361 362 363### Fixed 364 365* FD exhaustion when repeatedly entering/exiting URL mode with many 366 URLs. 367* Double free of URL while removing duplicated and/or overlapping URLs 368 in URL mode (https://codeberg.org/dnkl/foot/issues/627). 369* Crash when an unclosed OSC-8 URL ran into un-allocated scrollback 370 rows. 371* Some box-drawing characters were rendered incorrectly on big-endian 372 architectures. 373* Crash when resizing the window to the smallest possible size while 374 scrollback search is active. 375* Scrollback indicator being incorrectly rendered when window size is 376 very small. 377* Reduced memory usage in URL mode. 378* Crash when the `E3` escape (`\E[3J`) was executed, and there was a 379 selection, or sixel image, in the scrollback 380 (https://codeberg.org/dnkl/foot/issues/633). 381 382 383### Contributors 384 385* [clktmr](https://codeberg.org/clktmr) 386 387 388## 1.8.1 389 390### Added 391 392* `--log-level=none` command-line option. 393* `Tc`, `setrgbf` and `setrgbb` capabilities in `foot` and `foot-direct` 394 terminfo entries. This should make 24-bit RGB colors work in tmux and 395 neovim, without the need for config hacks or detection heuristics 396 (https://codeberg.org/dnkl/foot/issues/615). 397 398 399### Changed 400 401* Grapheme cluster width is now limited to two cells by default. This 402 may cause cursor synchronization issues with many applications. You 403 can set `[tweak].grapheme-width-method=wcswidth` to revert to the 404 behavior in foot-1.8.0. 405 406 407### Fixed 408 409* Grapheme cluster state being reset between codepoints. 410* Regression: custom URL key bindings not working 411 (https://codeberg.org/dnkl/foot/issues/614). 412 413 414### Contributors 415 416* [craigbarnes](https://codeberg.org/craigbarnes) 417 418 419## 1.8.0 420 421### Grapheme shaping 422 423This release adds _experimental, opt-in_ support for grapheme cluster 424segmentation and grapheme shaping. 425 426(note: several of the examples below may not render correctly in your 427browser, viewer or editor). 428 429Grapheme cluster segmentation is the art of splitting up text into 430grapheme clusters, where a cluster may consist of more than one 431Unicode codepoint. For example, is a single codepoint, while 432consists of 4 codepoints (_Woman_ + _Medium skin tone_ + _Zero width 433joiner_ + _Rocket_). The goal is to _cluster_ codepoints belonging to 434the same grapheme in the same cell in the terminal. 435 436Previous versions of foot implemented a simple grapheme cluster 437segmentation technique that **only** handled zero-width 438codepoints. This allowed us to cluster combining characters, like q́ 439(_q_ + _COMBINING ACUTE ACCENT_). 440 441Once we have a grapheme cluster, we need to _shape_ it. 442 443Combining characters are simple: they are typically rendered as 444multiple glyphs layered on top of each other. This is why previous 445versions of foot got away with it without any actual text shaping 446support. 447 448Beyond that, support from the font library is needed. Foot now depends 449on fcft-2.4, which added support for grapheme and text shaping. When 450rendering a cell, we ask the font library: give us the glyph(s) for 451this sequence of codepoints. 452 453Fancy emoji sequences aside, using libutf8proc for grapheme cluster 454segmentation means **improved correctness**. 455 456For full support, the following is required: 457 458* fcft compiled with HarfBuzz support 459* foot compiled with libutf8proc support 460* `tweak.grapheme-shaping=yes` in `foot.ini` 461 462If `tweak.grapheme-shaping` has **not** been enabled, foot will 463neither use libutf8proc to do grapheme cluster segmentation, nor will 464it use fcft’s grapheme shaping capabilities to shape combining 465characters. 466 467This feature is _experimental_ mostly due to the “wcwidth” problem; 468how many cells should foot allocate for a grapheme cluster? While the 469answer may seem simple, the problem is that, whatever the answer is, 470the client application **must** come up with the **same** 471answer. Otherwise we get cursor synchronization issues. 472 473In this release, foot simply adds together the `wcwidth()` of all 474codepoints in the grapheme cluster. This is equivalent to running 475`wcswidth()` on the entire cluster. **This is likely to change in the 476future**. 477 478Finally, note that grapheme shaping is not the same thing as text (or 479text run) shaping. In this version, foot only shapes individual 480graphemes, not entire text runs. That means e.g. ligatures are **not** 481supported. 482 483 484### Added 485 486* Support for DECSET/DECRST 2026, as an alternative to the existing 487 "synchronized updates" DCS sequences 488 (https://codeberg.org/dnkl/foot/issues/459). 489* `cursor.beam-thickness` option to `foot.ini` 490 (https://codeberg.org/dnkl/foot/issues/464). 491* `cursor.underline-thickness` option to `foot.ini` 492 (https://codeberg.org/dnkl/foot/issues/524). 493* Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing 494 characters rendered by foot itself (rather than using font glyphs) 495 (https://codeberg.org/dnkl/foot/issues/471). 496* Dedicated `[bell]` section to config, supporting multiple actions 497 and a new `command` action to run an arbitrary command. 498 (https://codeberg.org/dnkl/foot/pulls/483) 499* Dedicated `[url]` section to config. 500* `[url].protocols` option to `foot.ini` 501 (https://codeberg.org/dnkl/foot/issues/531). 502* Support for setting the full 256 color palette in foot.ini 503 (https://codeberg.org/dnkl/foot/issues/489) 504* XDG activation support, will be used by `[bell].urgent` when 505 available (falling back to coloring the window margins red when 506 unavailable) (https://codeberg.org/dnkl/foot/issues/487). 507* `ctrl`+`c` as a default key binding; to cancel search/url mode. 508* `${window-title}` to `notify`. 509* Support for including files in `foot.ini` 510 (https://codeberg.org/dnkl/foot/issues/555). 511* `ENVIRONMENT` section in **foot**(1) and **footclient**(1) man pages 512 (https://codeberg.org/dnkl/foot/issues/556). 513* `tweak.pua-double-width` option to `foot.ini`, letting you force 514 _Private Usage Area_ codepoints to be treated as double-width 515 characters. 516* OSC 9 desktop notifications (iTerm2 compatible). 517* Support for LS2 and LS3 (locking shift) escape sequences 518 (https://codeberg.org/dnkl/foot/issues/581). 519* Support for overriding configuration options on the command line 520 (https://codeberg.org/dnkl/foot/issues/554, 521 https://codeberg.org/dnkl/foot/issues/600). 522* `underline-offset` option to `foot.ini` 523 (https://codeberg.org/dnkl/foot/issues/490). 524* `csd.button-color` option to `foot.ini`. 525* `-Dterminfo-install-location=disabled|<custom-path>` meson command 526 line option (https://codeberg.org/dnkl/foot/issues/569). 527 528 529### Changed 530 531* [fcft](https://codeberg.org/dnkl/fcft): required version bumped from 532 2.3.x to 2.4.x. 533* `generate-alt-random-writes.py --sixel`: width and height of emitted 534 sixels has been adjusted. 535* _Concealed_ text (`\E[8m`) is now revealed when highlighted. 536* The background color of highlighted text is now adjusted, when the 537 foreground and background colors are the same, making the 538 highlighted text legible 539 (https://codeberg.org/dnkl/foot/issues/455). 540* `cursor.style=bar` to `cursor.style=beam`. `bar` remains a 541 recognized value, but will eventually be deprecated, and removed. 542* Point values in `line-height`, `letter-spacing`, 543 `horizontal-letter-offset` and `vertical-letter-offset` are now 544 rounded, not truncated, when translated to pixel values. 545* Foot’s exit code is now -26/230 when foot itself failed to launch 546 (due to invalid command line options, client application/shell not 547 found etc). Footclient’s exit code is -36/220 when it itself fails 548 to launch (e.g. bad command line option) and -26/230 when the foot 549 server failed to instantiate a new window 550 (https://codeberg.org/dnkl/foot/issues/466). 551* Background alpha no longer applied to palette or RGB colors that 552 matches the background color. 553* Improved performance on compositors that does not release shm 554 buffers immediately, e.g. KWin 555 (https://codeberg.org/dnkl/foot/issues/478). 556* `ctrl + w` (_extend-to-word-boundary_) can now be used across lines 557 (https://codeberg.org/dnkl/foot/issues/421). 558* Ignore auto-detected URLs that overlap with OSC-8 URLs. 559* Default value for the `notify` option to use `-a ${app-id} -i 560 ${app-id} ...` instead of `-a foot -i foot ...`. 561* `scrollback-*`+`pipe-scrollback` key bindings are now passed through 562 to the client application when the alt screen is active 563 (https://codeberg.org/dnkl/foot/issues/573). 564* Reverse video (`\E[?5h`) now only swaps the default foreground and 565 background colors. Cells with explicit foreground and/or background 566 colors remain unchanged. 567* Tabs (`\t`) are now preserved when the window is resized, and when 568 copying text (https://codeberg.org/dnkl/foot/issues/508). 569* Writing a sixel on top of another sixel no longer erases the first 570 sixel, but the two are instead blended 571 (https://codeberg.org/dnkl/foot/issues/562). 572* Running foot without a configuration file is no longer an error; it 573 has been demoted to a warning, and is no longer presented as a 574 notification in the terminal window, but only logged on stderr. 575 576 577### Deprecated 578 579* `bell` option in `foot.ini`; set actions in the `[bell]` section 580 instead. 581* `url-launch` option in `foot.ini`; use `launch` in the `[url]` 582 section instead. 583* `jump-label-letters` option in `foot.ini`; use `label-letters` in 584 the `[url]` section instead. 585* `osc8-underline` option in `foot.ini`; use `osc8-underline` in the 586 `[url]` section instead. 587 588 589### Removed 590 591* Buffer damage quirk for Plasma/KWin. 592 593 594### Fixed 595 596* `generate-alt-random-writes.py --sixel` sometimes crashing, 597 resulting in PGO build failures. 598* Wrong colors in the 256-color cube 599 (https://codeberg.org/dnkl/foot/issues/479). 600* Memory leak triggered by “opening” an OSC-8 URI and then resetting 601 the terminal without closing the URI 602 (https://codeberg.org/dnkl/foot/issues/495). 603* Assertion when emitting a sixel occupying the entire scrollback 604 history (https://codeberg.org/dnkl/foot/issues/494). 605* Font underlines being positioned below the cell (and thus being 606 invisible) for certain combinations of fonts and font sizes 607 (https://codeberg.org/dnkl/foot/issues/503). 608* Sixels with transparent bottom border being resized below the size 609 specified in _”Set Raster Attributes”_. 610* Fonts sometimes not being reloaded with the correct scaling factor 611 when `dpi-aware=no`, or `dpi-aware=auto` with monitor(s) with a 612 scaling factor > 1 (https://codeberg.org/dnkl/foot/issues/509). 613* Crash caused by certain CSI sequences with very large parameter 614 values (https://codeberg.org/dnkl/foot/issues/522). 615* Rare occurrences where the window did not close when the shell 616 exited. Only seen on FreeBSD 617 (https://codeberg.org/dnkl/foot/issues/534) 618* Foot process(es) sometimes remaining, using 100% CPU, when closing 619 multiple foot windows at the same time 620 (https://codeberg.org/dnkl/foot/issues/542). 621* Regression where `<mod>+shift+tab` always produced `\E[Z` instead of 622 the correct `\E[27;<mod>;9~` sequence 623 (https://codeberg.org/dnkl/foot/issues/547). 624* Crash when a line wrapping OSC-8 URI crossed the scrollback wrap 625 around (https://codeberg.org/dnkl/foot/issues/552). 626* Selection incorrectly wrapping rows ending with an explicit newline 627 (https://codeberg.org/dnkl/foot/issues/565). 628* Off-by-one error in markup of auto-detected URLs when the URL ends 629 in the right-most column. 630* Multi-column characters being cut in half when resizing the 631 alternate screen. 632* Restore `SIGHUP` in spawned processes. 633* Text reflow performance (https://codeberg.org/dnkl/foot/issues/504). 634* IL+DL (`CSI Ps L` + `CSI Ps M`) now moves the cursor to column 0. 635* SS2 and SS3 (single shift) escape sequences behaving like locking 636 shifts (https://codeberg.org/dnkl/foot/issues/580). 637* `TEXT`+`STRING`+`UTF8_STRING` mime types not being recognized in 638 clipboard offers (https://codeberg.org/dnkl/foot/issues/583). 639* Memory leak caused by custom box drawing glyphs not being completely 640 freed when destroying a foot window instance 641 (https://codeberg.org/dnkl/foot/issues/586). 642* Crash in scrollback search when current XKB layout is missing 643 _compose_ definitions. 644* Window title not being updated while window is hidden 645 (https://codeberg.org/dnkl/foot/issues/591). 646* Crash on badly formatted URIs in e.g. OSC-8 URLs. 647* Window being incorrectly resized on CSD/SSD run-time changes. 648 649 650### Contributors 651* [r\_c\_f](https://codeberg.org/r_c_f) 652* [craigbarnes](https://codeberg.org/craigbarnes) 653 654 655## 1.7.2 656 657### Added 658 659* URxvt OSC-11 extension to set background alpha 660 (https://codeberg.org/dnkl/foot/issues/436). 661* OSC 17/117/19/119 - change/reset selection background/foreground 662 color. 663* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini` 664 (https://codeberg.org/dnkl/foot/issues/430). 665 666 667### Changed 668 669* Underline cursor is now rendered below text underline 670 (https://codeberg.org/dnkl/foot/issues/415). 671* Foot now tries much harder to keep URL jump labels inside the window 672 geometry (https://codeberg.org/dnkl/foot/issues/443). 673* `bold-text-in-bright` may now be set to `palette-based`, in which 674 case it will use the corresponding bright palette color when the 675 color to brighten matches one of the base 8 colors, instead of 676 increasing the luminance 677 (https://codeberg.org/dnkl/foot/issues/449). 678 679 680### Fixed 681 682* Reverted _"Consumed modifiers are no longer sent to the client 683 application"_ (https://codeberg.org/dnkl/foot/issues/425). 684* Crash caused by a double free originating in `XTSMGRAPHICS` - set 685 number of color registers 686 (https://codeberg.org/dnkl/foot/issues/427). 687* Wrong action referenced in error message for key binding collisions 688 (https://codeberg.org/dnkl/foot/issues/432). 689* OSC 4/104 out-of-bounds accesses to the color table. This was the 690 reason pywal turned foot windows transparent 691 (https://codeberg.org/dnkl/foot/issues/434). 692* PTY not being drained when the client application terminates. 693* `auto_left_margin` not being limited to `cub1` 694 (https://codeberg.org/dnkl/foot/issues/441). 695* Crash in scrollback search mode when searching beyond the last output. 696 697 698### Contributors 699 700* [cglogic](https://codeberg.org/cglogic) 701 702 703## 1.7.1 704 705### Changed 706 707* Update PGO build instructions in `INSTALL.md` 708 (https://codeberg.org/dnkl/foot/issues/418). 709* In scrollback search mode, empty cells can now be matched by spaces. 710 711 712### Fixed 713 714* Logic that repairs invalid key bindings ended up breaking valid key 715 bindings instead (https://codeberg.org/dnkl/foot/issues/407). 716* Custom `line-height` settings now scale when increasing or 717 decreasing the font size at run-time. 718* Newlines sometimes incorrectly inserted into copied text 719 (https://codeberg.org/dnkl/foot/issues/410). 720* Crash when compositor send `text-input-v3::enter` events without 721 first having sent a `keyboard::enter` event 722 (https://codeberg.org/dnkl/foot/issues/411). 723* Deadlock when rendering sixel images. 724* URL labels, scrollback search box or scrollback position indicator 725 sometimes not showing up, caused by invalidly sized surface buffers 726 when output scaling was enabled 727 (https://codeberg.org/dnkl/foot/issues/409). 728* Empty sixels resulted in non-empty images. 729 730 731## 1.7.0 732 733### Added 734 735* The `pad` option now accepts an optional third argument, `center` 736 (e.g. `pad=5x5 center`), causing the grid to be centered in the 737 window, with equal amount of padding of the left/right and 738 top/bottom side (https://codeberg.org/dnkl/foot/issues/273). 739* `line-height`, `letter-spacing`, `horizontal-letter-offset` and 740 `vertical-letter-offset` to `foot.ini`. These options let you tweak 741 cell size and glyph positioning 742 (https://codeberg.org/dnkl/foot/issues/244). 743* Key/mouse binding `select-extend-character-wise`, which forces the 744 selection mode to 'character-wise' when extending a selection. 745* `DECSET` `47`, `1047` and `1048`. 746* URL detection and OSC-8 support. URLs are highlighted and activated 747 using the keyboard (**no** mouse support). See **foot**(1)::URLs, or 748 [README.md](README.md#urls) for details 749 (https://codeberg.org/dnkl/foot/issues/14). 750* `-d,--log-level={info|warning|error}` to both `foot` and 751 `footclient` (https://codeberg.org/dnkl/foot/issues/337). 752* `-D,--working-directory=DIR` to both `foot` and `footclient` 753 (https://codeberg.org/dnkl/foot/issues/347) 754* `DECSET 80` - sixel scrolling 755 (https://codeberg.org/dnkl/foot/issues/361). 756* `DECSET 1070` - sixel private color palette 757 (https://codeberg.org/dnkl/foot/issues/362). 758* `DECSET 8452` - position cursor to the right of sixels 759 (https://codeberg.org/dnkl/foot/issues/363). 760* Man page **foot-ctlseqs**(7), documenting all supported escape 761 sequences (https://codeberg.org/dnkl/foot/issues/235). 762* Support for transparent sixels (DCS parameter `P2=1`) 763 (https://codeberg.org/dnkl/foot/issues/391). 764* `-N,--no-wait` to `footclient` 765 (https://codeberg.org/dnkl/foot/issues/395). 766* Completions for Bash shell 767 (https://codeberg.org/dnkl/foot/issues/10). 768* Implement `XTVERSION` (`CSI > 0q`). Foot will reply with 769 `DCS>|foot(<major>.<minor>.<patch>)ST` 770 (https://codeberg.org/dnkl/foot/issues/359). 771 772 773### Changed 774 775* The fcft and tllist library subprojects are now handled via Meson 776 [wrap files](https://mesonbuild.com/Wrap-dependency-system-manual.html) 777 instead of needing to be manually cloned. 778* Box drawing characters are now rendered by foot, instead of using 779 font glyphs (https://codeberg.org/dnkl/foot/issues/198) 780* Double- or triple clicking then dragging now extends the selection 781 word- or line-wise (https://codeberg.org/dnkl/foot/issues/267). 782* The line thickness of box drawing characters now depend on the font 783 size (https://codeberg.org/dnkl/foot/issues/281). 784* Extending a word/line-wise selection now uses the original selection 785 mode instead of switching to character-wise. 786* While doing an interactive resize of a foot window, foot now 787 requires 100ms of idle time (where the window size does not change) 788 before sending the new dimensions to the client application. The 789 timing can be tweaked, or completely disabled, by setting 790 `resize-delay-ms` (https://codeberg.org/dnkl/foot/issues/301). 791* `CSI 13 ; 2 t` now reports (0,0). 792* Key binding matching logic; key combinations like `Control+Shift+C` 793 **must** now be written as either `Control+C` or `Control+Shift+c`, 794 the latter being the preferred 795 variant. (https://codeberg.org/dnkl/foot/issues/376) 796* Consumed modifiers are no longer sent to the client application 797 (https://codeberg.org/dnkl/foot/issues/376). 798* The minimum version requirement for the libxkbcommon dependency is 799 now 1.0.0. 800* Empty pixel rows at the bottom of a sixel is now trimmed. 801* Sixels with DCS parameter `P2=0|2` now use the _current_ ANSI 802 background color for empty pixels instead of the default background 803 color (https://codeberg.org/dnkl/foot/issues/391). 804* Sixel decoding optimized; up to 100% faster in some cases. 805* Reported sixel “max geometry” from current window size, to the 806 configured maximum size (defaulting to 10000x10000). 807 808 809### Removed 810 811* The `-g,--geometry` command-line option (which had been deprecated 812 and superseded by `-w,--window-size-pixels` since 1.5.0). 813 814 815### Fixed 816 817* Some mouse bindings (_primary paste_, for example) did not require 818 `shift` to be pressed while used in a mouse grabbing 819 application. This meant the mouse event was never seen by the 820 application. 821* Terminals spawned with `ctrl`+`shift`+`n` not terminating when 822 exiting shell (https://codeberg.org/dnkl/foot/issues/366). 823* Default value of `-t,--term` in `--help` output when foot was built 824 without terminfo support. 825* Drain PTY when the client application terminates. 826 827 828### Contributors 829 830* [craigbarnes](https://codeberg.org/craigbarnes) 831* toast 832* [l3mon4d3](https://codeberg.org/l3mon4d3) 833* [Simon Schricker](mailto:s.schricker@sillage.at) 834 835 836## 1.6.4 837 838### Added 839 840* `selection-target=none|primary|clipboard|both` to `foot.ini`. It can 841 be used to configure which clipboard(s) selected text should be 842 copied to. The default is `primary`, which corresponds to the 843 behavior in older foot releases 844 (https://codeberg.org/dnkl/foot/issues/288). 845 846 847### Changed 848 849* The IME state no longer stays stuck in the terminal if the IME goes 850 away during preedit. 851* `-Dterminfo` changed from a `boolean` to a `feature` option. 852* Use standard signals instead of a signalfd to handle 853 `SIGCHLD`. Fixes an issue on FreeBSD where foot did not detect when 854 the client application had terminated. 855 856 857### Fixed 858 859* `BS`, `HT` and `DEL` from being stripped in bracketed paste mode. 860 861 862### Contributors 863 864* [tdeo](https://codeberg.org/tdeo) 865* jbeich 866 867 868## 1.6.3 869 870### Added 871 872* Completions for fish shell 873 (https://codeberg.org/dnkl/foot/issues/11) 874* FreeBSD support (https://codeberg.org/dnkl/foot/issues/238). 875* IME popup location support: foot now sends the location of the cursor 876 so any popup can be displayed near the text that is being typed. 877 878 879### Changed 880 881* Trailing comments in `foot.ini` must now be preceded by a space or tab 882 (https://codeberg.org/dnkl/foot/issues/270) 883* The scrollback search box no longer accepts non-printable characters. 884* Non-formatting C0 control characters, `BS`, `HT` and `DEL` are now 885 stripped from pasted text. 886 887 888### Fixed 889 890* Exit when the client application terminates, not when the TTY file 891 descriptor is closed. 892* Crash on compositors not implementing the _text input_ interface 893 (https://codeberg.org/dnkl/foot/issues/259). 894* Erased, overflowing glyphs (when 895 `tweak.allow-overflowing-double-width-glyphs=yes` - the default) not 896 properly erasing the cell overflowed **into**. 897* `word-delimiters` option ignores `#` and subsequent characters 898 (https://codeberg.org/dnkl/foot/issues/270) 899* Combining characters not being rendered when composed with colored 900 bitmap glyphs (i.e. colored emojis). 901* Pasting URIs from the clipboard when the source has not 902 newline-terminated the last URI 903 (https://codeberg.org/dnkl/foot/issues/291). 904* Sixel “current geometry” query response not being bounded by the 905 current window dimensions (fixes `lsix` output) 906* Crash on keyboard input when repeat rate was zero (i.e. no repeat). 907* Wrong button encoding of mouse buttons 6 and 7 in mouse events. 908* Scrollback search not matching composed characters. 909* High CPU usage when holding down e.g. arrow keys while in scrollback 910 search mode. 911* Rendering of composed characters in the scrollback search box. 912* IME pre-edit cursor when positioned at the end of the pre-edit 913 string. 914* Scrollback search not matching multi-column characters. 915 916 917### Contributors 918 919* [pc](https://codeberg.org/pc) 920* [FollieHiyuki](https://codeberg.org/FollieHiyuki) 921* jbeich 922* [tdeo](https://codeberg.org/tdeo) 923 924 925## 1.6.2 926 927### Fixed 928 929* Version number in `meson.build`. 930 931 932## 1.6.1 933### Added 934 935* `--seed` to `generate-alt-random.py`, enabling deterministic PGO 936 builds. 937 938 939### Changed 940 941 942* Use `-std=c11` instead of `-std=c18`. 943* Added `-Wno-profile-instr-unprofiled` to Clang cflags in PGO builds 944 ([INSTALL.md](https://codeberg.org/dnkl/foot/src/branch/releases/1.6/INSTALL.md#user-content-performance-optimized-pgo)) 945 946 947### Fixed 948 949* Missing dependencies in meson, causing heavily parallelized builds 950 to fail. 951* Background color when alpha < 1.0 being wrong 952 (https://codeberg.org/dnkl/foot/issues/249). 953* `generate-alt-random.py` failing in containers. 954 955 956### Contributors 957 958* [craigbarnes](https://codeberg.org/craigbarnes) 959* [sterni](https://codeberg.org/sterni) 960 961 962## 1.6.0 963 964### For packagers 965 966Starting with this release, foot can be PGO:d (compiled using profile 967guided optimizations) **without** a running Wayland session. This 968means foot can be PGO:d in e.g. sandboxed build scripts. See 969[INSTALL.md](INSTALL.md#user-content-performance-optimized-pgo). 970 971 972### Added 973 974* IME support. This is compile-time optional, see 975 [INSTALL.md](INSTALL.md#user-content-options) 976 (https://codeberg.org/dnkl/foot/issues/134). 977* `DECSET` escape to enable/disable IME: `CSI ? 737769 h` enables IME 978 and `CSI ? 737769 l` disables it. This can be used to 979 e.g. enable/disable IME when entering/leaving insert mode in vim. 980* `dpi-aware` option to `foot.ini`. The default, `auto`, sizes fonts 981 using the monitor’s DPI when output scaling has been 982 **disabled**. If output scaling has been **enabled**, fonts are 983 sized using the scaling factor. DPI-only font sizing can be forced 984 by setting `dpi-aware=yes`. Setting `dpi-aware=no` forces font 985 sizing to be based on the scaling factor. 986 (https://codeberg.org/dnkl/foot/issues/206). 987* Implement reverse auto-wrap (_auto\_left\_margin_, _bw_, in 988 terminfo). This mode can be enabled/disabled with `CSI ? 45 h` and 989 `CSI ? 45 l`. It is **enabled** by default 990 (https://codeberg.org/dnkl/foot/issues/150). 991* `bell` option to `foot.ini`. Can be set to `set-urgency` to make 992 foot render the margins in red when receiving `BEL` while **not** 993 having keyboard focus. Applications can dynamically enable/disable 994 this with the `CSI ? 1042 h` and `CSI ? 1042 l` escape 995 sequences. Note that Wayland does **not** implement an _urgency_ 996 hint like X11, but that there is a 997 [proposal](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/9) 998 to add support for this. The value `set-urgency` was chosen for 999 forward-compatibility, in the hopes that this proposal eventualizes 1000 (https://codeberg.org/dnkl/foot/issues/157). 1001* `bell` option can also be set to `notify`, in which case a desktop 1002 notification is emitted when foot receives `BEL` in an unfocused 1003 window. 1004* `word-delimiters` option to `foot.ini` 1005 (https://codeberg.org/dnkl/foot/issues/156). 1006* `csd.preferred` can now be set to `none` to disable window 1007 decorations. Note that some compositors will render SSDs despite 1008 this option being used (https://codeberg.org/dnkl/foot/issues/163). 1009* Terminal content is now auto-scrolled when moving the mouse above or 1010 below the window while selecting 1011 (https://codeberg.org/dnkl/foot/issues/149). 1012* `font-bold`, `font-italic` `font-bold-italic` options to 1013 `foot.ini`. These options allow custom bold/italic fonts. They are 1014 unset by default, meaning the bold/italic version of the regular 1015 font is used (https://codeberg.org/dnkl/foot/issues/169). 1016* Drag & drop support; text, files and URLs can now be dropped in a 1017 foot terminal window (https://codeberg.org/dnkl/foot/issues/175). 1018* `clipboard-paste` and `primary-paste` scrollback search bindings. By 1019 default, they are bound to `ctrl+v ctrl+y` and `shift+insert` 1020 respectively, and lets you paste from the clipboard or primary 1021 selection into the search buffer. 1022* Support for `pipe-*` actions in mouse bindings. It was previously 1023 not possible to add a command to these actions when used in mouse 1024 bindings, making them useless 1025 (https://codeberg.org/dnkl/foot/issues/183). 1026* `bold-text-in-bright` option to `foot.ini`. When enabled, bold text 1027 is rendered in a brighter color 1028 (https://codeberg.org/dnkl/foot/issues/199). 1029* `-w,--window-size-pixels` and `-W,--window-size-chars` command line 1030 options to `footclient` (https://codeberg.org/dnkl/foot/issues/189). 1031* Short command line options for `--title`, `--maximized`, 1032 `--fullscreen`, `--login-shell`, `--hold` and `--check-config`. 1033* `DECSET` escape to modify the `escape` key to send `\E[27;1;27~` 1034 instead of `\E`: `CSI ? 27127 h` enables the new behavior, `CSI ? 1035 27127 l` disables it (the default). 1036* OSC 777;notify: desktop notifications. Use in combination with the 1037 new `notify` option in `foot.ini` 1038 (https://codeberg.org/dnkl/foot/issues/224). 1039* Status line terminfo capabilities `hs`, `tsl`, `fsl` and `dsl`. This 1040 enables e.g. vim to set the window title 1041 (https://codeberg.org/dnkl/foot/issues/242). 1042 1043 1044### Changed 1045 1046* Blinking text now uses the foreground color, but dimmed down in its 1047 off state, instead of the background color. 1048* Sixel default maximum size is now 10000x10000 instead of the current 1049 window size. 1050* Graphical glitches/flashes when resizing the window while running a 1051 fullscreen application, i.e. the 'alt' screen 1052 (https://codeberg.org/dnkl/foot/issues/221). 1053* Cursor will now blink if **either** `CSI ? 12 h` or `CSI Ps SP q` 1054 has been used to enable blinking. **cursor.blink** in `foot.ini` 1055 controls the default state of `CSI Ps SP q` 1056 (https://codeberg.org/dnkl/foot/issues/218). 1057* The sub-parameter versions of the SGR RGB color escapes (e.g 1058 `\E[38:2...m`) can now be used _without_ the color space ID 1059 parameter. 1060* SGR 21 no longer disables **bold**. According to ECMA-48, SGR 21 is 1061 _”double underline_”. Foot does not (yet) implement that, but that’s 1062 no reason to implement a non-standard behavior. 1063* `DECRQM` now returns actual state of the requested mode, instead of 1064 always returning `2`. 1065 1066 1067### Removed 1068 1069* Support for loading configuration from `$XDG_CONFIG_HOME/footrc`. 1070* `scrollback` option from `foot.ini`. 1071* `geometry` from `foot.ini`. 1072* Key binding action `scrollback-up` and `scrollback-down`. 1073 1074 1075### Fixed 1076 1077* Error when re-assigning a default key binding 1078 (https://codeberg.org/dnkl/foot/issues/233). 1079* `\E[s`+`\E[u` (save/restore cursor) now saves and restores 1080 attributes and charset configuration, just like `\E7`+`\E8`. 1081* Report mouse motion events to the client application also while 1082 dragging the cursor outside the grid. 1083* Parsing of the sub-parameter versions of indexed SGR color escapes 1084 (e.g. `\E[38:5...m`) 1085* Frames occasionally being rendered while application synchronized 1086 updates is in effect. 1087* Handling of failures to parse the font specification string. 1088* Extra private/intermediate characters in escape sequences not being 1089 ignored. 1090 1091 1092### Contributors 1093 1094* [kennylevinsen](https://codeberg.org/kennylevinsen) 1095* [craigbarnes](https://codeberg.org/craigbarnes) 1096 1097 1098## 1.5.4 1099 1100### Changed 1101 1102 1103* Num Lock by default overrides the keypad mode. See 1104 **foot.ini**(5)::KEYPAD, or 1105 [README.md](README.md#user-content-keypad) for details 1106 (https://codeberg.org/dnkl/foot/issues/194). 1107* Single-width characters with double-width glyphs are now allowed to 1108 overflow into neighboring cells by default. Set 1109 **tweak.allow-overflowing-double-width-glyphs** to ‘no’ to disable 1110 this. 1111 1112### Fixed 1113 1114* Resize very slow when window is hidden 1115 (https://codeberg.org/dnkl/foot/issues/190). 1116* Key mappings for key combinations with `shift`+`tab` 1117 (https://codeberg.org/dnkl/foot/issues/210). 1118* Key mappings for key combinations with `alt`+`return`. 1119* `footclient` `-m` (`--maximized`) flag being ignored. 1120* Crash with explicitly sized sixels with a height less than 6 pixels. 1121* Key mappings for `esc` with modifiers. 1122 1123 1124### Contributors 1125 1126* [craigbarnes](https://codeberg.org/craigbarnes) 1127 1128 1129## 1.5.3 1130 1131### Fixed 1132 1133* Crash when libxkbcommon cannot find a suitable libX11 _compose_ 1134 file. Note that foot will run, but without support for dead keys. 1135 (https://codeberg.org/dnkl/foot/issues/170). 1136* Restored window size when window is un-tiled. 1137* XCursor shape in CSD corners when window is tiled. 1138* Error handling when processing keyboard input (maybe 1139 https://codeberg.org/dnkl/foot/issues/171). 1140* Compilation error _"overflow in conversion from long 'unsigned int' 1141 to 'int' changes value... "_ seen on platforms where the `request` 1142 argument in `ioctl(3)` is an `int` (for example: linux/ppc64). 1143* Crash when using the mouse in alternate scroll mode in an unfocused 1144 window (https://codeberg.org/dnkl/foot/issues/179). 1145* Character dropped from selection when "right-click-hold"-extending a 1146 selection (https://codeberg.org/dnkl/foot/issues/180). 1147 1148 1149## 1.5.2 1150 1151### Fixed 1152 1153* Regression: middle clicking double pastes in e.g. vim 1154 (https://codeberg.org/dnkl/foot/issues/168) 1155 1156 1157## 1.5.1 1158 1159### Changed 1160 1161* Default value of the **scrollback.multiplier** option in `foot.ini` 1162 from `1.0` to `3.0`. 1163* `shift`+`insert` now pastes from the primary selection by 1164 default. This is in addition to middle-clicking with the mouse. 1165 1166 1167### Fixed 1168 1169* Mouse bindings now match even if the actual click count is larger 1170 than specified in the binding. This allows you to, for example, 1171 quickly press the middle-button to paste multiple times 1172 (https://codeberg.org/dnkl/foot/issues/146). 1173* Color flashes when changing the color palette with OSC 4,10,11 1174 (https://codeberg.org/dnkl/foot/issues/141). 1175* Scrollback position is now retained when resizing the window 1176 (https://codeberg.org/dnkl/foot/issues/142). 1177* Trackpad scrolling speed to better match the mouse scrolling speed, 1178 and to be consistent with other (Wayland) terminal emulators. Note 1179 that it is (much) slower compared to previous foot versions. Use the 1180 **scrollback.multiplier** option in `foot.ini` if you find the new 1181 speed too slow (https://codeberg.org/dnkl/foot/issues/144). 1182* Crash when `foot.ini` contains an invalid section name 1183 (https://codeberg.org/dnkl/foot/issues/159). 1184* Background opacity when in _reverse video_ mode. 1185* Crash when writing a sixel image that extends outside the terminal's 1186 right margin (https://codeberg.org/dnkl/foot/issues/151). 1187* Sixel image at non-zero column positions getting sheared at 1188 seemingly random occasions 1189 (https://codeberg.org/dnkl/foot/issues/151). 1190* Crash after either resizing a window or changing the font size if 1191 there were sixels present in the scrollback while doing so. 1192* _Send Device Attributes_ to only send a response if `Ps == 0`. 1193* Paste from primary when clipboard is empty. 1194 1195 1196### Contributors 1197 1198* [craigbarnes](https://codeberg.org/craigbarnes) 1199* [zar](https://codeberg.org/zar) 1200 1201 1202## 1.5.0 1203 1204### Deprecated 1205 1206* `$XDG_CONFIG_HOME/footrc`/`~/.config/footrc`. Use 1207 `$XDG_CONFIG_HOME/foot/foot.ini`/`~/.config/foot/foot.ini` instead. 1208* **scrollback** option in `foot.ini`. Use **scrollback.lines** 1209 instead. 1210* **scrollback-up** key binding. Use **scrollback-up-page** instead. 1211* **scrollback-down** key binding. Use **scrollback-down-page** 1212 instead. 1213 1214 1215### Added 1216 1217* Scrollback position indicator. This feature is optional and 1218 controlled by the **scrollback.indicator-position** and 1219 **scrollback.indicator-format** options in `foot.ini` 1220 (https://codeberg.org/dnkl/foot/issues/42). 1221* Key bindings in _scrollback search_ mode are now configurable. 1222* `--check-config` command line option. 1223* **pipe-selected** key binding. Works like **pipe-visible** and 1224 **pipe-scrollback**, but only pipes the currently selected text, if 1225 any (https://codeberg.org/dnkl/foot/issues/51). 1226* **mouse.hide-when-typing** option to `foot.ini`. 1227* **scrollback.multiplier** option to `foot.ini` 1228 (https://codeberg.org/dnkl/foot/issues/54). 1229* **colors.selection-foreground** and **colors.selection-background** 1230 options to `foot.ini`. 1231* **tweak.render-timer** option to `foot.ini`. 1232* Modifier support in mouse bindings 1233 (https://codeberg.org/dnkl/foot/issues/77). 1234* Click count support in mouse bindings, i.e double- and triple-click 1235 (https://codeberg.org/dnkl/foot/issues/78). 1236* All mouse actions (begin selection, select word, select row etc) are 1237 now configurable, via the new **select-begin**, 1238 **select-begin-block**, **select-extend**, **select-word**, 1239 **select-word-whitespace** and **select-row** options in the 1240 **mouse-bindings** section in `foot.ini` 1241 (https://codeberg.org/dnkl/foot/issues/79). 1242* Implement XTSAVE/XTRESTORE escape sequences, `CSI ? Ps s` and `CSI ? 1243 Ps r` (https://codeberg.org/dnkl/foot/issues/91). 1244* `$COLORTERM` is now set to `truecolor` at startup, to indicate 1245 support for 24-bit RGB colors. 1246* Experimental support for rendering double-width glyphs with a 1247 character width of 1. Must be explicitly enabled with 1248 `tweak.allow-overflowing-double-width-glyphs` 1249 (https://codeberg.org/dnkl/foot/issues/116). 1250* **initial-window-size-pixels** options to `foot.ini` and 1251 `-w,--window-size-pixels` command line option to `foot`. This option 1252 replaces the now deprecated **geometry** and `-g,--geometry` 1253 options. 1254* **initial-window-size-chars** option to `foot.ini` and 1255 `-W,--window-size-chars` command line option to `foot`. This option 1256 configures the initial window size in **characters**, and is an 1257 alternative to **initial-window-size-pixels**. 1258* **scrollback-up-half-page** and **scrollback-down-half-page** key 1259 bindings. They scroll up/down half of a page in the scrollback 1260 (https://codeberg.org/dnkl/foot/issues/128). 1261* **scrollback-up-line** and **scrollback-down-line** key 1262 bindings. They scroll up/down a single line in the scrollback. 1263* **mouse.alternate-scroll-mode** option to `foot.ini`. This option 1264 controls the initial state of the _Alternate Scroll Mode_, and 1265 defaults to `yes`. When enabled, mouse scroll events are translated 1266 to up/down key events in the alternate screen, letting you scroll in 1267 e.g. `less` and other applications without enabling native mouse 1268 support in them (https://codeberg.org/dnkl/foot/issues/135). 1269 1270 1271### Changed 1272 1273* Renamed man page for `foot.ini` from **foot**(5) to **foot.ini**(5). 1274* Configuration errors are no longer fatal; foot will start and print 1275 an error inside the terminal (and of course still log errors on 1276 stderr). 1277* Default `--server` socket path to use `$WAYLAND_DISPLAY` instead of 1278 `$XDG_SESSION_ID` (https://codeberg.org/dnkl/foot/issues/55). 1279* Trailing empty cells are no longer highlighted in mouse selections. 1280* Foot now searches for its configuration in 1281 `$XDG_DATA_DIRS/foot/foot.ini`, if no configuration is found in 1282 `$XDG_CONFIG_HOME/foot/foot.ini` or in `$XDG_CONFIG_HOME/footrc`. 1283* Minimum window size changed from four rows and 20 columns, to 1 row 1284 and 2 columns. 1285* **scrollback-up/down** renamed to **scrollback-up/down-page**. 1286* fcft >= 2.3.0 is now required. 1287 1288 1289### Fixed 1290 1291* Command lines for **pipe-visible** and **pipe-scrollback** are now 1292 tokenized (i.e. syntax checked) when the configuration is loaded, 1293 instead of every time the key binding is executed. 1294* Incorrect multi-column character spacer insertion when reflowing 1295 text. 1296* Compilation errors in 32-bit builds. 1297* Mouse cursor style in top and left margins. 1298* Selection is now **updated** when the cursor moves outside the grid 1299 (https://codeberg.org/dnkl/foot/issues/70). 1300* Viewport sometimes not moving when doing a scrollback search. 1301* Crash when canceling a scrollback search and the window had been 1302 resized while searching. 1303* Selection start point not moving when the selection changes 1304 direction. 1305* OSC 10/11/104/110/111 (modify colors) did not update existing screen 1306 content (https://codeberg.org/dnkl/foot/issues/94). 1307* Extra newlines when copying empty cells 1308 (https://codeberg.org/dnkl/foot/issues/97). 1309* Mouse events from being sent to client application when a mouse 1310 binding has consumed it. 1311* Input events from getting mixed with paste data 1312 (https://codeberg.org/dnkl/foot/issues/101). 1313* Missing DPI values for “some” monitors on Gnome 1314 (https://codeberg.org/dnkl/foot/issues/118). 1315* Handling of multi-column composed characters while reflowing. 1316* Escape sequences sent for key combinations with `Return`, that did 1317 **not** include `Alt`. 1318* Clipboard (or primary selection) is now cleared when receiving an 1319 OSC-52 command with an invalid base64 encoded payload. 1320* Cursor position being set outside the grid when reflowing text. 1321* CSD buttons to be hidden when window size becomes so small that they 1322 no longer fit. 1323 1324 1325### Contributors 1326 1327* [craigbarnes](https://codeberg.org/craigbarnes) 1328* [birger](https://codeberg.org/birger) 1329* [Ordoviz](https://codeberg.org/Ordoviz) 1330* [cherti](https://codeberg.org/cherti) 1331 1332 1333## 1.4.4 1334### Changed 1335 1336* Mouse cursor is now always a `left_ptr` when inside the margins, to 1337 indicate it is not possible to start a selection. 1338 1339 1340### Fixed 1341 1342* Crash when starting a selection inside the margins. 1343* Improved font size consistency across multiple monitors with 1344 different DPI (https://codeberg.org/dnkl/foot/issues/47). 1345* Handle trailing comments in `footrc` 1346 1347 1348## 1.4.3 1349### Added 1350 1351* Section to [README.md](README.md) describing how to programmatically 1352 identify foot. 1353* [LICENSE](LICENSE), [README.md](README.md) and 1354 [CHANGELOG.md](CHANGELOG.md) are now installed to 1355 `${datadir}/doc/foot`. 1356* Support for escaping quotes in **pipe-visible** and 1357 **pipe-scrollback** commands. 1358 1359 1360### Changed 1361 1362* Primary DA to no longer indicate support for _Selective Erase_, 1363 _Technical Characters_ and _Terminal State Interrogation_. 1364* Secondary DA to report foot as a VT220 instead of a VT420. 1365* Secondary DA to report foot's version number in parameter 2, the 1366 _Firmware Version_. The string is made up of foot's major, minor and 1367 patch version numbers, always using two digits for each version 1368 number and without any other separating characters. Thus, _1.4.2_ 1369 would be reported as `010402` (i.e. the full response would be 1370 `\E[>1;010402;0c`). 1371* Scrollback search to only move the viewport if the match lies 1372 outside it. 1373* Scrollback search to focus match, that requires a viewport change, 1374 roughly in the center of the screen. 1375* Extending a selection with the right mouse button now works while 1376 dragging the mouse. 1377 1378 1379### Fixed 1380 1381* Crash in scrollback search. 1382* Crash when a **pipe-visible** or **pipe-scrollback** command 1383 contained an unclosed quote 1384 (https://codeberg.org/dnkl/foot/issues/49). 1385 1386 1387### Contributors 1388 1389* [birger](https://codeberg.org/birger) 1390* [cherti](https://codeberg.org/cherti) 1391 1392 1393## 1.4.2 1394 1395### Changed 1396 1397* Maximum window title length from 100 to 2048. 1398 1399 1400### Fixed 1401 1402* Crash when overwriting a sixel and the row being overwritten did not 1403 cover an entire cell. 1404* Assertion failure in debug builds when overwriting a sixel image. 1405 1406 1407## 1.4.1 1408 1409### Fixed 1410 1411* Compilation errors in release builds with some combinations of 1412 compilers and compiler flags. 1413 1414 1415## 1.4.0 1416 1417### Added 1418 1419* `Sync` to terminfo. This is a tmux extension that indicates 1420 _"Synchronized Updates"_ are supported. 1421* `--hold` command line option to `footclient`. 1422* Key mapping for `KP_Decimal`. 1423* Terminfo entries for keypad keys: `ka1`, `ka2`, `ka3`, `kb1`, `kb3`, 1424 `kc1`, `kc2`, `kc3`, `kp5`, `kpADD`, `kpCMA`, `kpDIV`, `kpDOT`, 1425 `kpMUL`, `kpSUB` and `kpZRO`. 1426* **blink** option to `footrc`; a boolean that lets you control 1427 whether the cursor should blink or not by default. Note that 1428 applications can override this. 1429* Multi-seat support 1430* Implemented `C0::FF` (form feed) 1431* **pipe-visible** and **pipe-scrollback** key bindings. These let you 1432 pipe either the currently visible text, or the entire scrollback to 1433 external tools (https://codeberg.org/dnkl/foot/issues/29). Example: 1434 `pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print` 1435 1436 1437### Changed 1438 1439* Background transparency to only be used with the default background 1440 color. 1441* Copy-to-clipboard/primary-selection to insert a line break if either 1442 the last cell on the previous line or the first cell on the next 1443 line is empty. 1444* Number of lines to scroll is now always clamped to the number of 1445 lines in the scrolling region.. 1446* New terminal windows spawned with `ctrl`+`shift`+`n` are no longer 1447 double forked. 1448* Unicode combining character overflow errors are only logged when 1449 debug logging has been enabled. 1450* OSC 4 (_Set Color_) now updates already rendered cells, excluding 1451 scrollback. 1452* Mouse cursor from `hand2` to `left_ptr` when client is capturing the 1453 mouse. 1454* Sixel images are now removed when the font size is **decreased**. 1455* `DECSCUSR` (_Set Cursor Style_, `CSI Ps SP q`) now uses `Ps=0` 1456 instead of `Ps=2` to reset the style to the user configured default 1457 style. `Ps=2` now always configures a _Steady Block_ cursor. 1458* `Se` terminfo capability from `\E[2 q` to `\E[ q`. 1459* Hollow cursor to be drawn when window has lost _keyboard_ focus 1460 rather than _visual_ focus. 1461 1462 1463### Fixed 1464 1465* Do not stop an ongoing selection when `shift` is released. When the 1466 client application is capturing the mouse, one must hold down 1467 `shift` to start a selection. This selection is now finalized only 1468 when the mouse button is released - not as soon as `shift` is 1469 released. 1470* Selected cells did not appear selected if programmatically modified. 1471* Rare crash when scrolling and the new viewport ended up **exactly** 1472 on the wrap around. 1473* Selection handling when viewport wrapped around. 1474* Restore signal mask in the client process. 1475* Set `IUTF8`. 1476* Selection of double-width characters. It is no longer possible to 1477 select half of a double-width character. 1478* Draw hollow block cursor on top of character. 1479* Set an initial `TIOCSWINSZ`. This ensures clients never read a 1480 `0x0` terminal size (https://codeberg.org/dnkl/foot/issues/20). 1481* Glyphs overflowing into surrounding cells 1482 (https://codeberg.org/dnkl/foot/issues/21). 1483* Crash when last rendered cursor cell had scrolled off screen and 1484 `\E[J3` was executed. 1485* Assert (debug builds) when an `\e]4` OSC escape was not followed by 1486 a `;`. 1487* Window title always being set to "foot" on reset. 1488* Terminfo entry `kb2` (center keypad key); it is now set to `\EOu` 1489 (which is what foot emits) instead of the incorrect value `\EOE`. 1490* Palette re-use in sixel images. Previously, the palette was reset 1491 after each image. 1492* Do not auto-resize a sixel image for which the client has specified 1493 a size. This fixes an issue where an image would incorrectly 1494 overflow into the cell row beneath. 1495* Text printed, or other sixel images drawn, on top of a sixel image 1496 no longer erases the entire image, only the part(s) covered by the 1497 new text or image. 1498* Sixel images being erased when printing text next to them. 1499* Sixel handling when resizing window. 1500* Sixel handling when scrollback wraps around. 1501* Foot now issues much fewer `wl_surface_damage_buffer()` calls 1502 (https://codeberg.org/dnkl/foot/issues/35). 1503* `C0::VT` to be processed as `C0::LF`. Previously, `C0::VT` would 1504 only move the cursor down, but never scroll. 1505* `C0::HT` (_Horizontal Tab_, or `\t`) no longer clears `LCF` (_Last 1506 Column Flag_). 1507* `C0::LF` now always clears `LCF`. Previously, it only cleared it 1508 when the cursor was **not** at the bottom of the scrolling region. 1509* `IND` and `RI` now clears `LCF`. 1510* `DECAWM` now clears `LCF`. 1511* A multi-column character that does not fit on the current line is 1512 now printed on the next line, instead of only printing half the 1513 character. 1514* Font size can no longer be reduced to negative values 1515 (https://codeberg.org/dnkl/foot/issues/38). 1516 1517 1518## 1.3.0 1519 1520### Added 1521 1522* User configurable key- and mouse bindings. See `man 5 foot` and the 1523 example `footrc` (https://codeberg.org/dnkl/foot/issues/1) 1524* **initial-window-mode** option to `footrc`, that lets you control 1525 the initial mode for each newly spawned window: _windowed_, 1526 _maximized_ or _fullscreen_. 1527* **app-id** option to `footrc` and `--app-id` command line option, 1528 that sets the _app-id_ property on the Wayland window. 1529* **title** option to `footrc` and `--title` command line option, that 1530 sets the initial window title. 1531* Right mouse button extends the current selection. 1532* `CSI Ps ; Ps ; Ps t` escape sequences for the following parameters: 1533 `11t`, `13t`, `13;2t`, `14t`, `14;2t`, `15t`, `19t`. 1534* Unicode combining characters. 1535 1536 1537### Changed 1538 1539* Spaces no longer removed from zsh font name completions. 1540* Default key binding for _spawn-terminal_ to ctrl+shift+n. 1541* Renderer is now much faster with interactive scrolling 1542 (https://codeberg.org/dnkl/foot/issues/4) 1543* memfd sealing failures are no longer fatal errors. 1544* Selection to no longer be cleared on resize. 1545* The current monitor's subpixel order (RGB/BGR/V-RGB/V-BGR) is 1546 preferred over FontConfig's `rgba` property. Only if the monitor's 1547 subpixel order is `unknown` is FontConfig's `rgba` property used. If 1548 the subpixel order is `none`, then grayscale antialiasing is 1549 used. The subpixel order is ignored if antialiasing has been 1550 disabled. 1551* The four primary font variants (normal, bold, italic, bold italic) 1552 are now loaded in parallel. This speeds up both the initial startup 1553 time, as well as DPI changes. 1554* Command line parsing no longer tries to parse arguments following 1555 the command-to-execute. This means one can now write `foot sh -c 1556 true` instead of `foot -- sh -c true`. 1557 1558 1559### Removed 1560 1561* Keyboard/pointer handler workarounds for Sway 1.2. 1562 1563 1564### Fixed 1565 1566* Sixel images moved or deleted on window resize. 1567* Cursor sometimes incorrectly restored on exit from alternate screen. 1568* 'Underline' cursor being invisible on underlined text. 1569* Restored cursor position in 'normal' screen when window was resized 1570 while in 'alt' screen. 1571* Hostname in OSC 7 URI not being validated. 1572* OSC 4 with multiple `c;spec` pairs. 1573* Alt+Return to emit "ESC \r". 1574* Trackpad sloooow scrolling to eventually scroll a line. 1575* Memory leak in terminal reset. 1576* Translation of cursor coordinates on resize 1577* Scaling color specifiers in OSC sequences. 1578* `OSC 12 ?` to return the cursor color, not the cursor's text color. 1579* `OSC 12;#000000` to configure the cursor to use inverted 1580 foreground/background colors. 1581* Call `ioctl(TIOCSCTTY)` on the pts fd in the slave process. 1582 1583 1584## 1.2.3 1585 1586### Fixed 1587* Forgot to version bump 1.2.2 1588 1589 1590## 1.2.2 1591 1592### Changed 1593 1594* Changed icon name in `foot.desktop` and `foot-server.desktop` from 1595 _terminal_ to _utilities-terminal_. 1596* `XDG_SESSION_ID` is now included in the server/daemon default socket 1597 path. 1598 1599 1600### Fixed 1601 1602* Window size doubling when moving window between outputs with 1603 different scaling factors (https://codeberg.org/dnkl/foot/issues/3). 1604* Font being too small on monitors with fractional scaling 1605 (https://codeberg.org/dnkl/foot/issues/5). 1606 1607 1608## 1.2.1 1609 1610### Fixed 1611 1612* Building AUR package 1613 1614 1615## 1.2.0 1616 1617### Added 1618 1619* Run-time text resize using ctrl-+, ctrl+- and ctrl+0 1620* Font size adjusts dynamically to outputs' DPI 1621* Reflow text when resizing window 1622* **pad** option to `footrc` 1623* **login-shell** option to `footrc` and `--login-shell` command line 1624 option 1625* Client side decorations (CSDs). This finally makes foot usable on 1626 GNOME. 1627* Sixel graphics support 1628* OSC 12 and 112 escape sequences (set/reset text cursor color) 1629* REP CSI escape sequence 1630* `oc` to terminfo 1631* foot-server.desktop file 1632* Window and cell size reporting escape sequences 1633* `--hold` command line option 1634* `--print-pid=FILE|FD` command line option 1635 1636 1637### Changed 1638 1639* Subpixel antialiasing is only enabled when background is opaque 1640* Meta/alt ESC prefix can now be disabled with `\E[?1036l`. In this 1641 mode, the 8:th bit is set and the result is UTF-8 encoded. This can 1642 also be disabled with `\E[1024l` (in which case the Alt key is 1643 effectively being ignored). 1644* terminfo now uses ST instead of BEL as OSC terminator 1645* Logging to print to stderr, not stdout 1646* Backspace now emits DEL (^?), and ctrl+backspace emits BS (^H) 1647 1648 1649### Removed 1650 1651* '28' from DA response 1652