mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-02-05 04:06:08 -05:00
When a sixel image crosses the scrollback wrap-around, it is split up into (at least) two pieces. We use cursor->point.col for all pieces’ x-coordinate. This caused the final image to appear sheared, since we do a carriage-return (after a number of linefeeds) after each piece - this causes the cursor’s position to be reset to the left margin. The solution is simple; remember the cursor’s initial x-coordinate, and use that to position all image pieces. Closes #151.
19 KiB
19 KiB
Changelog
Unreleased
Added
- Implement reverse auto-wrap (auto_left_margin, bw, in
terminfo). This mode can be enabled/disabled with
CSI ? 45 handCSI ? 45 l. It is enabled by default (https://codeberg.org/dnkl/foot/issues/150). - bell option to
foot.ini. Can be set toset-urgencyto make foot render the margins in red when receivingBELwhile not having keyboard focus. Note that Wayland does not implement an urgency hint like X11, but that there is a proposal to add support for this. The valueset-urgencywas chosen for forward-compatibility, in the hopes that this proposal eventualizes (https://codeberg.org/dnkl/foot/issues/157).
Changed
- Default value of the scrollback.multiplier option in
foot.inifrom1.0to3.0.
Deprecated
Removed
Fixed
- 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 (https://codeberg.org/dnkl/foot/issues/146).
- Color flashes when changing the color palette with OSC 4,10,11 (https://codeberg.org/dnkl/foot/issues/141).
- Scrollback position is now retained when resizing the window (https://codeberg.org/dnkl/foot/issues/142).
- Trackpad scrolling speed. Note that it is much slower compared to
previous foot versions. Use the multiplier option in
foot.iniif you find the new speed too slow (https://codeberg.org/dnkl/foot/issues/144). - 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.iniif you find the new speed too slow (https://codeberg.org/dnkl/foot/issues/144). - Crash when
foot.inicontains an invalid section name (https://codeberg.org/dnkl/foot/issues/159). - Background opacity when in reverse video mode.
- Crash when writing a sixel image that extends outside the terminal's right margin (https://codeberg.org/dnkl/foot/issues/151).
- Sixel image at non-zero column positions getting sheared at seemingly random occasions (https://codeberg.org/dnkl/foot/issues/151).
Security
Contributors
1.5.0
Deprecated
$XDG_CONFIG_HOME/footrc/~/.config/footrc. Use$XDG_CONFIG_HOME/foot/foot.ini/~/.config/foot/foot.iniinstead.- 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.
Added
- Scrollback position indicator. This feature is optional and
controlled by the scrollback.indicator-position and
scrollback.indicator-format options in
foot.ini(https://codeberg.org/dnkl/foot/issues/42). - Key bindings in scrollback search mode are now configurable.
--check-configcommand line option.- pipe-selected key binding. Works like pipe-visible and pipe-scrollback, but only pipes the currently selected text, if any (https://codeberg.org/dnkl/foot/issues/51).
- mouse.hide-when-typing option to
foot.ini. - scrollback.multiplier option to
foot.ini(https://codeberg.org/dnkl/foot/issues/54). - colors.selection-foreground and colors.selection-background
options to
foot.ini. - tweak.render-timer option to
foot.ini. - Modifier support in mouse bindings (https://codeberg.org/dnkl/foot/issues/77).
- Click count support in mouse bindings, i.e double- and triple-click (https://codeberg.org/dnkl/foot/issues/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(https://codeberg.org/dnkl/foot/issues/79). - Implement XTSAVE/XTRESTORE escape sequences,
CSI ? Ps sandCSI ? Ps r(https://codeberg.org/dnkl/foot/issues/91). $COLORTERMis now set totruecolorat 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(https://codeberg.org/dnkl/foot/issues/116). - initial-window-size-pixels options to
foot.iniand-w,--window-size-pixelscommand line option tofoot. This option replaces the now deprecated geometry and-g,--geometryoptions. - initial-window-size-chars option to
foot.iniand-W,--window-size-charscommand 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 (https://codeberg.org/dnkl/foot/issues/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.lessand other applications without enabling native mouse support in them (https://codeberg.org/dnkl/foot/issues/135).
Changed
- Renamed man page for
foot.inifrom 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
--serversocket path to use$WAYLAND_DISPLAYinstead of$XDG_SESSION_ID(https://codeberg.org/dnkl/foot/issues/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.inior 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.
Fixed
- 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 (https://codeberg.org/dnkl/foot/issues/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 (https://codeberg.org/dnkl/foot/issues/94).
- Extra newlines when copying empty cells (https://codeberg.org/dnkl/foot/issues/97).
- Mouse events from being sent to client application when a mouse binding has consumed it.
- Input events from getting mixed with paste data (https://codeberg.org/dnkl/foot/issues/101).
- Missing DPI values for “some” monitors on Gnome (https://codeberg.org/dnkl/foot/issues/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.
Contributors
1.4.4
Changed
- Mouse cursor is now always a
left_ptrwhen inside the margins, to indicate it is not possible to start a selection.
Fixed
- Crash when starting a selection inside the margins.
- Improved font size consistency across multiple monitors with different DPI (https://codeberg.org/dnkl/foot/issues/47).
- Handle trailing comments in
footrc
1.4.3
Added
- 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.
Changed
- 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.
Fixed
- Crash in scrollback search.
- Crash when a pipe-visible or pipe-scrollback command contained an unclosed quote (https://codeberg.org/dnkl/foot/issues/49).
Contributors
1.4.2
Changed
- Maximum window title length from 100 to 2048.
Fixed
- 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.
1.4.1
Fixed
- Compilation errors in release builds with some combinations of compilers and compiler flags.
1.4.0
Added
Syncto terminfo. This is a tmux extension that indicates "Synchronized Updates" are supported.--holdcommand 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,kpSUBandkpZRO. - 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+nare 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
hand2toleft_ptrwhen 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=0instead ofPs=2to reset the style to the user configured default style.Ps=2now always configures a Steady Block cursor.Seterminfo capability from\E[2 qto\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
shiftis released. When the client application is capturing the mouse, one must hold downshiftto start a selection. This selection is now finalized only when the mouse button is released - not as soon asshiftis 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 a0x0terminal 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[J3was executed. - Assert (debug builds) when an
\e]4OSC 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 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 (https://codeberg.org/dnkl/foot/issues/35). C0::VTto be processed asC0::LF. Previously,C0::VTwould only move the cursor down, but never scroll.C0::HT(Horizontal Tab, or\t) no longer clearsLCF(Last Column Flag).C0::LFnow always clearsLCF. Previously, it only cleared it when the cursor was not at the bottom of the scrolling region.INDandRInow clearsLCF.DECAWMnow 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 (https://codeberg.org/dnkl/foot/issues/38).
1.3.0
Added
- User configurable key- and mouse bindings. See
man 5 footand the examplefootrc(https://codeberg.org/dnkl/foot/issues/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
footrcand--app-idcommand line option, that sets the app-id property on the Wayland window. - title option to
footrcand--titlecommand line option, that sets the initial window title. - Right mouse button extends the current selection.
CSI Ps ; Ps ; Ps tescape sequences for the following parameters:11t,13t,13;2t,14t,14;2t,15t,19t.- Unicode combining characters.
Changed
- 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 (https://codeberg.org/dnkl/foot/issues/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
rgbaproperty. Only if the monitor's subpixel order isunknownis FontConfig'srgbaproperty 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 trueinstead offoot -- sh -c true.
Removed
- Keyboard/pointer handler workarounds for Sway 1.2.
Fixed
- 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;specpairs. - 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;#000000to configure the cursor to use inverted foreground/background colors.- Call
ioctl(TIOCSCTTY)on the pts fd in the slave process.
1.2.3
Fixed
- Forgot to version bump 1.2.2
1.2.2
Changed
- Changed icon name in
foot.desktopandfoot-server.desktopfrom terminal to utilities-terminal. XDG_SESSION_IDis now included in the server/daemon default socket path.
Fixed
- Window size doubling when moving window between outputs with different scaling factors (https://codeberg.org/dnkl/foot/issues/3).
- Font being too small on monitors with fractional scaling (https://codeberg.org/dnkl/foot/issues/5).
1.2.1
Fixed
- Building AUR package
1.2.0
Added
- 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
footrcand--login-shellcommand 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
octo terminfo- foot-server.desktop file
- Window and cell size reporting escape sequences
--holdcommand line option--print-pid=FILE|FDcommand line option
Changed
- 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)
Removed
- '28' from DA response