Release 1.4.0 Added ----- * `Sync` to terminfo. This is a tmux extension that indicates _"Synchronized Updates"_ are supported. * `--hold` command line option to `footclient`. * Key mapping for `KP_Decimal`. * Terminfo entries for keypad keys: `ka1`, `ka2`, `ka3`, `kb1`, `kb3`, `kc1`, `kc2`, `kc3`, `kp5`, `kpADD`, `kpCMA`, `kpDIV`, `kpDOT`, `kpMUL`, `kpSUB` and `kpZRO`. * **blink** option to `footrc`; a boolean that lets you control whether the cursor should blink or not by default. Note that applications can override this. * Multi-seat support * Implemented `C0::FF` (form feed) * **pipe-visible** and **pipe-scrollback** key bindings. These let you pipe either the currently visible text, or the entire scrollback to external tools (https://codeberg.org/dnkl/foot/issues/29). Example: `pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print` Changed ------- * Background transparency to only be used with the default background color. * Copy-to-clipboard/primary-selection to insert a line break if either the last cell on the previous line or the first cell on the next line is empty. * Number of lines to scroll is now always clamped to the number of lines in the scrolling region.. * New terminal windows spawned with `ctrl`+`shift`+`n` are no longer double forked. * Unicode combining character overflow errors are only logged when debug logging has been enabled. * OSC 4 (_Set Color_) now updates already rendered cells, excluding scrollback. * Mouse cursor from `hand2` to `left_ptr` when client is capturing the mouse. * Sixel images are now removed when the font size is **decreased**. * `DECSCUSR` (_Set Cursor Style_, `CSI Ps SP q`) now uses `Ps=0` instead of `Ps=2` to reset the style to the user configured default style. `Ps=2` now always configures a _Steady Block_ cursor. * `Se` terminfo capability from `\E[2 q` to `\E[ q`. * Hollow cursor to be drawn when window has lost _keyboard_ focus rather than _visual_ focus. Fixed ----- * Do not stop an ongoing selection when `shift` is released. When the client application is capturing the mouse, one must hold down `shift` to start a selection. This selection is now finalized only when the mouse button is released - not as soon as `shift` is released. * Selected cells did not appear selected if programmatically modified. * Rare crash when scrolling and the new viewport ended up **exactly** on the wrap around. * Selection handling when viewport wrapped around. * Restore signal mask in the client process. * Set `IUTF8`. * Selection of double-width characters. It is no longer possible to select half of a double-width character. * Draw hollow block cursor on top of character. * Set an initial `TIOCSWINSZ`. This ensures clients never read a `0x0` terminal size (https://codeberg.org/dnkl/foot/issues/20). * Glyphs overflowing into surrounding cells (https://codeberg.org/dnkl/foot/issues/21). * Crash when last rendered cursor cell had scrolled off screen and `\E[J3` was executed. * Assert (debug builds) when an `\e]4` OSC escape was not followed by a `;`. * Window title always being set to "foot" on reset. * Terminfo entry `kb2` (center keypad key); it is now set to `\EOu` (which is what foot emits) instead of the incorrect value `\EOE`. * Palette re-use in sixel images. Previously, the palette was reset after each image. * Do not auto-resize a sixel image for which the cllent 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 (https://codeberg.org/dnkl/foot/issues/35). * `C0::VT` to be processed as `C0::LF`. Previously, `C0::VT` would only move the cursor down, but never scroll. * `C0::HT` (_Horizontal Tab_, or `\t`) no longer clears `LCF` (_Last Column Flag_). * `C0::LF` now always clears `LCF`. Previously, it only cleared it when the cursor was **not** at the bottom of the scrolling region. * `IND` and `RI` now clears `LCF`. * `DECAWM` now clears `LCF`. * A multi-column character that does not fit on the current line is now printed on the next line, instead of only printing half the character. * Font size can no longer be reduced to negative values (https://codeberg.org/dnkl/foot/issues/38).