From 340462ac70c0d35b916e4dee1db7774f3d50ad9f Mon Sep 17 00:00:00 2001 From: Gabriel Ebner Date: Wed, 4 Aug 2021 21:23:13 +0200 Subject: [PATCH] git subrepo clone --branch=master https://aur.archlinux.org/foot.git subrepo: subdir: "foot" merged: "6108099" upstream: origin: "https://aur.archlinux.org/foot.git" branch: "master" commit: "6108099" git-subrepo: version: "0.4.3" origin: "???" commit: "???" --- foot/.SRCINFO | 31 ++ foot/.gitrepo | 12 + foot/CHANGELOG.md | 1345 +++++++++++++++++++++++++++++++++++++++++++++ foot/PKGBUILD | 106 ++++ 4 files changed, 1494 insertions(+) create mode 100644 foot/.SRCINFO create mode 100644 foot/.gitrepo create mode 100644 foot/CHANGELOG.md create mode 100644 foot/PKGBUILD diff --git a/foot/.SRCINFO b/foot/.SRCINFO new file mode 100644 index 0000000..9bf5109 --- /dev/null +++ b/foot/.SRCINFO @@ -0,0 +1,31 @@ +pkgbase = foot + pkgdesc = Wayland terminal emulator - fast, lightweight and minimalistic + pkgver = 1.8.2 + pkgrel = 1 + url = https://codeberg.org/dnkl/foot + changelog = CHANGELOG.md + arch = x86_64 + arch = aarch64 + license = mit + checkdepends = check + makedepends = meson + makedepends = ninja + makedepends = scdoc + makedepends = python + makedepends = ncurses + makedepends = wayland-protocols + makedepends = tllist + depends = libxkbcommon + depends = wayland + depends = pixman + depends = fontconfig + depends = libutf8proc + depends = fcft + depends = foot-terminfo + optdepends = libnotify: desktop notifications + optdepends = xdg-utils: URI launching + optdepends = bash-completion: bash completions for foot itself + source = foot-1.8.2.tar.gz::https://codeberg.org/dnkl/foot/archive/1.8.2.tar.gz + sha256sums = 50cf5b9f3cc1ebaafa62255eea22395e8267cce21e119bc6f7ecacf11f15dada + +pkgname = foot diff --git a/foot/.gitrepo b/foot/.gitrepo new file mode 100644 index 0000000..1574da3 --- /dev/null +++ b/foot/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = https://aur.archlinux.org/foot.git + branch = master + commit = 6108099f58351064185f52509ac9fd6f3fd8050f + parent = bcdc51dd43112f472537ce3007e45f47310ae12c + method = merge + cmdver = 0.4.3 diff --git a/foot/CHANGELOG.md b/foot/CHANGELOG.md new file mode 100644 index 0000000..25c2c1b --- /dev/null +++ b/foot/CHANGELOG.md @@ -0,0 +1,1345 @@ +# Changelog + +* [1.8.2](#1-8-2) +* [1.8.1](#1-8-1) +* [1.8.0](#1-8-0) +* [1.7.2](#1-7-2) +* [1.7.1](#1-7-1) +* [1.7.0](#1-7-0) +* [1.6.4](#1-6-4) +* [1.6.3](#1-6-3) +* [1.6.2](#1-6-2) +* [1.6.1](#1-6-1) +* [1.6.0](#1-6-0) +* [1.5.4](#1-5-4) +* [1.5.3](#1-5-3) +* [1.5.2](#1-5-2) +* [1.5.1](#1-5-1) +* [1.5.0](#1-5-0) +* [1.4.4](#1-4-4) +* [1.4.3](#1-4-3) +* [1.4.2](#1-4-2) +* [1.4.1](#1-4-1) +* [1.4.0](#1-4-0) +* [1.3.0](#1-3-0) +* [1.2.3](#1-2-3) +* [1.2.2](#1-2-2) +* [1.2.1](#1-2-1) +* [1.2.0](#1-2-0) + + +## 1.8.2 + +### Added + +* `locked-title=no|yes` to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/386). +* `tweak.overflowing-glyphs` option, which can be enabled to fix rendering + issues with glyphs of any width that appear cut-off + (https://codeberg.org/dnkl/foot/issues/592). + + +### Changed + +* Non-empty lines are now considered to have a hard linebreak, + _unless_ an actual word-wrap is inserted. +* Setting `DECSDM` now _disables_ sixel scrolling, while resetting it + _enables_ scrolling (https://codeberg.org/dnkl/foot/issues/631). + + +### Removed + +* The `tweak.allow-overflowing-double-width-glyphs` and + `tweak.pua-double-width` options (which have been superseded by + `tweak.overflowing-glyphs`). + + +### Fixed + +* FD exhaustion when repeatedly entering/exiting URL mode with many + URLs. +* Double free of URL while removing duplicated and/or overlapping URLs + in URL mode (https://codeberg.org/dnkl/foot/issues/627). +* Crash when an unclosed OSC-8 URL ran into un-allocated scrollback + rows. +* Some box-drawing characters were rendered incorrectly on big-endian + architectures. +* Crash when resizing the window to the smallest possible size while + scrollback search is active. +* Scrollback indicator being incorrectly rendered when window size is + very small. +* Reduced memory usage in URL mode. +* Crash when the `E3` escape (`\E[3J`) was executed, and there was a + selection, or sixel image, in the scrollback + (https://codeberg.org/dnkl/foot/issues/633). + + +### Contributors + +* [clktmr](https://codeberg.org/clktmr) + + +## 1.8.1 + +### Added + +* `--log-level=none` command-line option. +* `Tc`, `setrgbf` and `setrgbb` capabilities in `foot` and `foot-direct` + terminfo entries. This should make 24-bit RGB colors work in tmux and + neovim, without the need for config hacks or detection heuristics + (https://codeberg.org/dnkl/foot/issues/615). + + +### Changed + +* Grapheme cluster width is now limited to two cells by default. This + may cause cursor synchronization issues with many applications. You + can set `[tweak].grapheme-width-method=wcswidth` to revert to the + behavior in foot-1.8.0. + + +### Fixed + +* Grapheme cluster state being reset between codepoints. +* Regression: custom URL key bindings not working + (https://codeberg.org/dnkl/foot/issues/614). + + +### Contributors + +* [craigbarnes](https://codeberg.org/craigbarnes) + + +## 1.8.0 + +### Grapheme shaping + +This release adds _experimental, opt-in_ support for grapheme cluster +segmentation and grapheme shaping. + +(note: several of the examples below may not render correctly in your +browser, viewer or editor). + +Grapheme cluster segmentation is the art of splitting up text into +grapheme clusters, where a cluster may consist of more than one +Unicode codepoint. For example, 🙂 is a single codepoint, while đŸ‘©đŸœâ€đŸš€ +consists of 4 codepoints (_Woman_ + _Medium skin tone_ + _Zero width +joiner_ + _Rocket_). The goal is to _cluster_ codepoints belonging to +the same grapheme in the same cell in the terminal. + +Previous versions of foot implemented a simple grapheme cluster +segmentation technique that **only** handled zero-width +codepoints. This allowed us to cluster combining characters, like q́ +(_q_ + _COMBINING ACUTE ACCENT_). + +Once we have a grapheme cluster, we need to _shape_ it. + +Combining characters are simple: they are typically rendered as +multiple glyphs layered on top of each other. This is why previous +versions of foot got away with it without any actual text shaping +support. + +Beyond that, support from the font library is needed. Foot now depends +on fcft-2.4, which added support for grapheme and text shaping. When +rendering a cell, we ask the font library: give us the glyph(s) for +this sequence of codepoints. + +Fancy emoji sequences aside, using libutf8proc for grapheme cluster +segmentation means **improved correctness**. + +For full support, the following is required: + +* fcft compiled with HarfBuzz support +* foot compiled with libutf8proc support +* `tweak.grapheme-shaping=yes` in `foot.ini` + +If `tweak.grapheme-shaping` has **not** been enabled, foot will +neither use libutf8proc to do grapheme cluster segmentation, nor will +it use fcft’s grapheme shaping capabilities to shape combining +characters. + +This feature is _experimental_ mostly due to the “wcwidth” problem; +how many cells should foot allocate for a grapheme cluster? While the +answer may seem simple, the problem is that, whatever the answer is, +the client application **must** come up with the **same** +answer. Otherwise we get cursor synchronization issues. + +In this release, foot simply adds together the `wcwidth()` of all +codepoints in the grapheme cluster. This is equivalent to running +`wcswidth()` on the entire cluster. **This is likely to change in the +future**. + +Finally, note that grapheme shaping is not the same thing as text (or +text run) shaping. In this version, foot only shapes individual +graphemes, not entire text runs. That means e.g. ligatures are **not** +supported. + + +### Added + +* Support for DECSET/DECRST 2026, as an alternative to the existing + "synchronized updates" DCS sequences + (https://codeberg.org/dnkl/foot/issues/459). +* `cursor.beam-thickness` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/464). +* `cursor.underline-thickness` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/524). +* Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing + characters rendered by foot itself (rather than using font glyphs) + (https://codeberg.org/dnkl/foot/issues/471). +* Dedicated `[bell]` section to config, supporting multiple actions + and a new `command` action to run an arbitrary command. + (https://codeberg.org/dnkl/foot/pulls/483) +* Dedicated `[url]` section to config. +* `[url].protocols` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/531). +* Support for setting the full 256 color palette in foot.ini + (https://codeberg.org/dnkl/foot/issues/489) +* XDG activation support, will be used by `[bell].urgent` when + available (falling back to coloring the window margins red when + unavailable) (https://codeberg.org/dnkl/foot/issues/487). +* `ctrl`+`c` as a default key binding; to cancel search/url mode. +* `${window-title}` to `notify`. +* Support for including files in `foot.ini` + (https://codeberg.org/dnkl/foot/issues/555). +* `ENVIRONMENT` section in **foot**(1) and **footclient**(1) man pages + (https://codeberg.org/dnkl/foot/issues/556). +* `tweak.pua-double-width` option to `foot.ini`, letting you force + _Private Usage Area_ codepoints to be treated as double-width + characters. +* OSC 9 desktop notifications (iTerm2 compatible). +* Support for LS2 and LS3 (locking shift) escape sequences + (https://codeberg.org/dnkl/foot/issues/581). +* Support for overriding configuration options on the command line + (https://codeberg.org/dnkl/foot/issues/554, + https://codeberg.org/dnkl/foot/issues/600). +* `underline-offset` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/490). +* `csd.button-color` option to `foot.ini`. +* `-Dterminfo-install-location=disabled|` meson command + line option (https://codeberg.org/dnkl/foot/issues/569). + + +### Changed + +* [fcft](https://codeberg.org/dnkl/fcft): required version bumped from + 2.3.x to 2.4.x. +* `generate-alt-random-writes.py --sixel`: width and height of emitted + sixels has been adjusted. +* _Concealed_ text (`\E[8m`) is now revealed when highlighted. +* The background color of highlighted text is now adjusted, when the + foreground and background colors are the same, making the + highlighted text legible + (https://codeberg.org/dnkl/foot/issues/455). +* `cursor.style=bar` to `cursor.style=beam`. `bar` remains a + recognized value, but will eventually be deprecated, and removed. +* Point values in `line-height`, `letter-spacing`, + `horizontal-letter-offset` and `vertical-letter-offset` are now + rounded, not truncated, when translated to pixel values. +* Foot’s exit code is now -26/230 when foot itself failed to launch + (due to invalid command line options, client application/shell not + found etc). Footclient’s exit code is -36/220 when it itself fails + to launch (e.g. bad command line option) and -26/230 when the foot + server failed to instantiate a new window + (https://codeberg.org/dnkl/foot/issues/466). +* Background alpha no longer applied to palette or RGB colors that + matches the background color. +* Improved performance on compositors that does not release shm + buffers immediately, e.g. KWin + (https://codeberg.org/dnkl/foot/issues/478). +* `ctrl + w` (_extend-to-word-boundary_) can now be used across lines + (https://codeberg.org/dnkl/foot/issues/421). +* Ignore auto-detected URLs that overlap with OSC-8 URLs. +* Default value for the `notify` option to use `-a ${app-id} -i + ${app-id} ...` instead of `-a foot -i foot ...`. +* `scrollback-*`+`pipe-scrollback` key bindings are now passed through + to the client application when the alt screen is active + (https://codeberg.org/dnkl/foot/issues/573). +* Reverse video (`\E[?5h`) now only swaps the default foreground and + background colors. Cells with explicit foreground and/or background + colors remain unchanged. +* Tabs (`\t`) are now preserved when the window is resized, and when + copying text (https://codeberg.org/dnkl/foot/issues/508). +* Writing a sixel on top of another sixel no longer erases the first + sixel, but the two are instead blended + (https://codeberg.org/dnkl/foot/issues/562). +* Running foot without a configuration file is no longer an error; it + has been demoted to a warning, and is no longer presented as a + notification in the terminal window, but only logged on stderr. + + +### Deprecated + +* `bell` option in `foot.ini`; set actions in the `[bell]` section + instead. +* `url-launch` option in `foot.ini`; use `launch` in the `[url]` + section instead. +* `jump-label-letters` option in `foot.ini`; use `label-letters` in + the `[url]` section instead. +* `osc8-underline` option in `foot.ini`; use `osc8-underline` in the + `[url]` section instead. + + +### Removed + +* Buffer damage quirk for Plasma/KWin. + + +### Fixed + +* `generate-alt-random-writes.py --sixel` sometimes crashing, + resulting in PGO build failures. +* Wrong colors in the 256-color cube + (https://codeberg.org/dnkl/foot/issues/479). +* Memory leak triggered by “opening” an OSC-8 URI and then resetting + the terminal without closing the URI + (https://codeberg.org/dnkl/foot/issues/495). +* Assertion when emitting a sixel occupying the entire scrollback + history (https://codeberg.org/dnkl/foot/issues/494). +* Font underlines being positioned below the cell (and thus being + invisible) for certain combinations of fonts and font sizes + (https://codeberg.org/dnkl/foot/issues/503). +* Sixels with transparent bottom border being resized below the size + specified in _”Set Raster Attributes”_. +* Fonts sometimes not being reloaded with the correct scaling factor + when `dpi-aware=no`, or `dpi-aware=auto` with monitor(s) with a + scaling factor > 1 (https://codeberg.org/dnkl/foot/issues/509). +* Crash caused by certain CSI sequences with very large parameter + values (https://codeberg.org/dnkl/foot/issues/522). +* Rare occurrences where the window did not close when the shell + exited. Only seen on FreeBSD + (https://codeberg.org/dnkl/foot/issues/534) +* Foot process(es) sometimes remaining, using 100% CPU, when closing + multiple foot windows at the same time + (https://codeberg.org/dnkl/foot/issues/542). +* Regression where `+shift+tab` always produced `\E[Z` instead of + the correct `\E[27;;9~` sequence + (https://codeberg.org/dnkl/foot/issues/547). +* Crash when a line wrapping OSC-8 URI crossed the scrollback wrap + around (https://codeberg.org/dnkl/foot/issues/552). +* Selection incorrectly wrapping rows ending with an explicit newline + (https://codeberg.org/dnkl/foot/issues/565). +* Off-by-one error in markup of auto-detected URLs when the URL ends + in the right-most column. +* Multi-column characters being cut in half when resizing the + alternate screen. +* Restore `SIGHUP` in spawned processes. +* Text reflow performance (https://codeberg.org/dnkl/foot/issues/504). +* IL+DL (`CSI Ps L` + `CSI Ps M`) now moves the cursor to column 0. +* SS2 and SS3 (single shift) escape sequences behaving like locking + shifts (https://codeberg.org/dnkl/foot/issues/580). +* `TEXT`+`STRING`+`UTF8_STRING` mime types not being recognized in + clipboard offers (https://codeberg.org/dnkl/foot/issues/583). +* Memory leak caused by custom box drawing glyphs not being completely + freed when destroying a foot window instance + (https://codeberg.org/dnkl/foot/issues/586). +* Crash in scrollback search when current XKB layout is missing + _compose_ definitions. +* Window title not being updated while window is hidden + (https://codeberg.org/dnkl/foot/issues/591). +* Crash on badly formatted URIs in e.g. OSC-8 URLs. +* Window being incorrectly resized on CSD/SSD run-time changes. + + +### Contributors +* [r\_c\_f](https://codeberg.org/r_c_f) +* [craigbarnes](https://codeberg.org/craigbarnes) + + +## 1.7.2 + +### Added + +* URxvt OSC-11 extension to set background alpha + (https://codeberg.org/dnkl/foot/issues/436). +* OSC 17/117/19/119 - change/reset selection background/foreground + color. +* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/430). + + +### Changed + +* Underline cursor is now rendered below text underline + (https://codeberg.org/dnkl/foot/issues/415). +* Foot now tries much harder to keep URL jump labels inside the window + geometry (https://codeberg.org/dnkl/foot/issues/443). +* `bold-text-in-bright` may now be set to `palette-based`, in which + case it will use the corresponding bright palette color when the + color to brighten matches one of the base 8 colors, instead of + increasing the luminance + (https://codeberg.org/dnkl/foot/issues/449). + + +### Fixed + +* Reverted _"Consumed modifiers are no longer sent to the client + application"_ (https://codeberg.org/dnkl/foot/issues/425). +* Crash caused by a double free originating in `XTSMGRAPHICS` - set + number of color registers + (https://codeberg.org/dnkl/foot/issues/427). +* Wrong action referenced in error message for key binding collisions + (https://codeberg.org/dnkl/foot/issues/432). +* OSC 4/104 out-of-bounds accesses to the color table. This was the + reason pywal turned foot windows transparent + (https://codeberg.org/dnkl/foot/issues/434). +* PTY not being drained when the client application terminates. +* `auto_left_margin` not being limited to `cub1` + (https://codeberg.org/dnkl/foot/issues/441). +* Crash in scrollback search mode when searching beyond the last output. + + +### Contributors + +* [cglogic](https://codeberg.org/cglogic) + + +## 1.7.1 + +### Changed + +* Update PGO build instructions in `INSTALL.md` + (https://codeberg.org/dnkl/foot/issues/418). +* In scrollback search mode, empty cells can now be matched by spaces. + + +### Fixed + +* Logic that repairs invalid key bindings ended up breaking valid key + bindings instead (https://codeberg.org/dnkl/foot/issues/407). +* Custom `line-height` settings now scale when increasing or + decreasing the font size at run-time. +* Newlines sometimes incorrectly inserted into copied text + (https://codeberg.org/dnkl/foot/issues/410). +* Crash when compositor send `text-input-v3::enter` events without + first having sent a `keyboard::enter` event + (https://codeberg.org/dnkl/foot/issues/411). +* Deadlock when rendering sixel images. +* URL labels, scrollback search box or scrollback position indicator + sometimes not showing up, caused by invalidly sized surface buffers + when output scaling was enabled + (https://codeberg.org/dnkl/foot/issues/409). +* Empty sixels resulted in non-empty images. + + +## 1.7.0 + +### Added + +* The `pad` option now accepts an optional third argument, `center` + (e.g. `pad=5x5 center`), causing the grid to be centered in the + window, with equal amount of padding of the left/right and + top/bottom side (https://codeberg.org/dnkl/foot/issues/273). +* `line-height`, `letter-spacing`, `horizontal-letter-offset` and + `vertical-letter-offset` to `foot.ini`. These options let you tweak + cell size and glyph positioning + (https://codeberg.org/dnkl/foot/issues/244). +* Key/mouse binding `select-extend-character-wise`, which forces the + selection mode to 'character-wise' when extending a selection. +* `DECSET` `47`, `1047` and `1048`. +* URL detection and OSC-8 support. URLs are highlighted and activated + using the keyboard (**no** mouse support). See **foot**(1)::URLs, or + [README.md](README.md#urls) for details + (https://codeberg.org/dnkl/foot/issues/14). +* `-d,--log-level={info|warning|error}` to both `foot` and + `footclient` (https://codeberg.org/dnkl/foot/issues/337). +* `-D,--working-directory=DIR` to both `foot` and `footclient` + (https://codeberg.org/dnkl/foot/issues/347) +* `DECSET 80` - sixel scrolling + (https://codeberg.org/dnkl/foot/issues/361). +* `DECSET 1070` - sixel private color palette + (https://codeberg.org/dnkl/foot/issues/362). +* `DECSET 8452` - position cursor to the right of sixels + (https://codeberg.org/dnkl/foot/issues/363). +* Man page **foot-ctlseqs**(7), documenting all supported escape + sequences (https://codeberg.org/dnkl/foot/issues/235). +* Support for transparent sixels (DCS parameter `P2=1`) + (https://codeberg.org/dnkl/foot/issues/391). +* `-N,--no-wait` to `footclient` + (https://codeberg.org/dnkl/foot/issues/395). +* Completions for Bash shell + (https://codeberg.org/dnkl/foot/issues/10). +* Implement `XTVERSION` (`CSI > 0q`). Foot will reply with + `DCS>|foot(..)ST` + (https://codeberg.org/dnkl/foot/issues/359). + + +### Changed + +* The fcft and tllist library subprojects are now handled via Meson + [wrap files](https://mesonbuild.com/Wrap-dependency-system-manual.html) + instead of needing to be manually cloned. +* Box drawing characters are now rendered by foot, instead of using + font glyphs (https://codeberg.org/dnkl/foot/issues/198) +* Double- or triple clicking then dragging now extends the selection + word- or line-wise (https://codeberg.org/dnkl/foot/issues/267). +* The line thickness of box drawing characters now depend on the font + size (https://codeberg.org/dnkl/foot/issues/281). +* Extending a word/line-wise selection now uses the original selection + mode instead of switching to character-wise. +* While doing an interactive resize of a foot window, foot now + requires 100ms of idle time (where the window size does not change) + before sending the new dimensions to the client application. The + timing can be tweaked, or completely disabled, by setting + `resize-delay-ms` (https://codeberg.org/dnkl/foot/issues/301). +* `CSI 13 ; 2 t` now reports (0,0). +* Key binding matching logic; key combinations like `Control+Shift+C` + **must** now be written as either `Control+C` or `Control+Shift+c`, + the latter being the preferred + variant. (https://codeberg.org/dnkl/foot/issues/376) +* Consumed modifiers are no longer sent to the client application + (https://codeberg.org/dnkl/foot/issues/376). +* The minimum version requirement for the libxkbcommon dependency is + now 1.0.0. +* Empty pixel rows at the bottom of a sixel is now trimmed. +* Sixels with DCS parameter `P2=0|2` now use the _current_ ANSI + background color for empty pixels instead of the default background + color (https://codeberg.org/dnkl/foot/issues/391). +* Sixel decoding optimized; up to 100% faster in some cases. +* Reported sixel “max geometry” from current window size, to the + configured maximum size (defaulting to 10000x10000). + + +### Removed + +* The `-g,--geometry` command-line option (which had been deprecated + and superseded by `-w,--window-size-pixels` since 1.5.0). + + +### Fixed + +* Some mouse bindings (_primary paste_, for example) did not require + `shift` to be pressed while used in a mouse grabbing + application. This meant the mouse event was never seen by the + application. +* Terminals spawned with `ctrl`+`shift`+`n` not terminating when + exiting shell (https://codeberg.org/dnkl/foot/issues/366). +* Default value of `-t,--term` in `--help` output when foot was built + without terminfo support. +* Drain PTY when the client application terminates. + + +### Contributors + +* [craigbarnes](https://codeberg.org/craigbarnes) +* toast +* [l3mon4d3](https://codeberg.org/l3mon4d3) +* [Simon Schricker](mailto:s.schricker@sillage.at) + + +## 1.6.4 + +### Added + +* `selection-target=none|primary|clipboard|both` to `foot.ini`. It can + be used to configure which clipboard(s) selected text should be + copied to. The default is `primary`, which corresponds to the + behavior in older foot releases + (https://codeberg.org/dnkl/foot/issues/288). + + +### Changed + +* The IME state no longer stays stuck in the terminal if the IME goes + away during preedit. +* `-Dterminfo` changed from a `boolean` to a `feature` option. +* Use standard signals instead of a signalfd to handle + `SIGCHLD`. Fixes an issue on FreeBSD where foot did not detect when + the client application had terminated. + + +### Fixed + +* `BS`, `HT` and `DEL` from being stripped in bracketed paste mode. + + +### Contributors + +* [tdeo](https://codeberg.org/tdeo) +* jbeich + + +## 1.6.3 + +### Added + +* Completions for fish shell + (https://codeberg.org/dnkl/foot/issues/11) +* FreeBSD support (https://codeberg.org/dnkl/foot/issues/238). +* IME popup location support: foot now sends the location of the cursor + so any popup can be displayed near the text that is being typed. + + +### Changed + +* Trailing comments in `foot.ini` must now be preceded by a space or tab + (https://codeberg.org/dnkl/foot/issues/270) +* The scrollback search box no longer accepts non-printable characters. +* Non-formatting C0 control characters, `BS`, `HT` and `DEL` are now + stripped from pasted text. + + +### Fixed + +* Exit when the client application terminates, not when the TTY file + descriptor is closed. +* Crash on compositors not implementing the _text input_ interface + (https://codeberg.org/dnkl/foot/issues/259). +* Erased, overflowing glyphs (when + `tweak.allow-overflowing-double-width-glyphs=yes` - the default) not + properly erasing the cell overflowed **into**. +* `word-delimiters` option ignores `#` and subsequent characters + (https://codeberg.org/dnkl/foot/issues/270) +* Combining characters not being rendered when composed with colored + bitmap glyphs (i.e. colored emojis). +* Pasting URIs from the clipboard when the source has not + newline-terminated the last URI + (https://codeberg.org/dnkl/foot/issues/291). +* Sixel “current geometry” query response not being bounded by the + current window dimensions (fixes `lsix` output) +* Crash on keyboard input when repeat rate was zero (i.e. no repeat). +* Wrong button encoding of mouse buttons 6 and 7 in mouse events. +* Scrollback search not matching composed characters. +* High CPU usage when holding down e.g. arrow keys while in scrollback + search mode. +* Rendering of composed characters in the scrollback search box. +* IME pre-edit cursor when positioned at the end of the pre-edit + string. +* Scrollback search not matching multi-column characters. + + +### Contributors + +* [pc](https://codeberg.org/pc) +* [FollieHiyuki](https://codeberg.org/FollieHiyuki) +* jbeich +* [tdeo](https://codeberg.org/tdeo) + + +## 1.6.2 + +### Fixed + +* Version number in `meson.build`. + + +## 1.6.1 +### Added + +* `--seed` to `generate-alt-random.py`, enabling deterministic PGO + builds. + + +### Changed + + +* Use `-std=c11` instead of `-std=c18`. +* Added `-Wno-profile-instr-unprofiled` to Clang cflags in PGO builds + ([INSTALL.md](https://codeberg.org/dnkl/foot/src/branch/releases/1.6/INSTALL.md#user-content-performance-optimized-pgo)) + + +### Fixed + +* Missing dependencies in meson, causing heavily parallelized builds + to fail. +* Background color when alpha < 1.0 being wrong + (https://codeberg.org/dnkl/foot/issues/249). +* `generate-alt-random.py` failing in containers. + + +### Contributors + +* [craigbarnes](https://codeberg.org/craigbarnes) +* [sterni](https://codeberg.org/sterni) + + +## 1.6.0 + +### For packagers + +Starting with this release, foot can be PGO:d (compiled using profile +guided optimizations) **without** a running Wayland session. This +means foot can be PGO:d in e.g. sandboxed build scripts. See +[INSTALL.md](INSTALL.md#user-content-performance-optimized-pgo). + + +### Added + +* IME support. This is compile-time optional, see + [INSTALL.md](INSTALL.md#user-content-options) + (https://codeberg.org/dnkl/foot/issues/134). +* `DECSET` escape to enable/disable IME: `CSI ? 737769 h` enables IME + and `CSI ? 737769 l` disables it. This can be used to + e.g. enable/disable IME when entering/leaving insert mode in vim. +* `dpi-aware` option to `foot.ini`. The default, `auto`, sizes fonts + using the monitor’s DPI when output scaling has been + **disabled**. If output scaling has been **enabled**, fonts are + sized using the scaling factor. DPI-only font sizing can be forced + by setting `dpi-aware=yes`. Setting `dpi-aware=no` forces font + sizing to be based on the scaling factor. + (https://codeberg.org/dnkl/foot/issues/206). +* Implement reverse auto-wrap (_auto\_left\_margin_, _bw_, in + terminfo). This mode can be enabled/disabled with `CSI ? 45 h` and + `CSI ? 45 l`. It is **enabled** by default + (https://codeberg.org/dnkl/foot/issues/150). +* `bell` option to `foot.ini`. Can be set to `set-urgency` to make + foot render the margins in red when receiving `BEL` while **not** + having keyboard focus. Applications can dynamically enable/disable + this with the `CSI ? 1042 h` and `CSI ? 1042 l` escape + sequences. Note that Wayland does **not** implement an _urgency_ + hint like X11, but that there is a + [proposal](https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/9) + to add support for this. The value `set-urgency` was chosen for + forward-compatibility, in the hopes that this proposal eventualizes + (https://codeberg.org/dnkl/foot/issues/157). +* `bell` option can also be set to `notify`, in which case a desktop + notification is emitted when foot receives `BEL` in an unfocused + window. +* `word-delimiters` option to `foot.ini` + (https://codeberg.org/dnkl/foot/issues/156). +* `csd.preferred` can now be set to `none` to disable window + decorations. Note that some compositors will render SSDs despite + this option being used (https://codeberg.org/dnkl/foot/issues/163). +* Terminal content is now auto-scrolled when moving the mouse above or + below the window while selecting + (https://codeberg.org/dnkl/foot/issues/149). +* `font-bold`, `font-italic` `font-bold-italic` options to + `foot.ini`. These options allow custom bold/italic fonts. They are + unset by default, meaning the bold/italic version of the regular + font is used (https://codeberg.org/dnkl/foot/issues/169). +* Drag & drop support; text, files and URLs can now be dropped in a + foot terminal window (https://codeberg.org/dnkl/foot/issues/175). +* `clipboard-paste` and `primary-paste` scrollback search bindings. By + default, they are bound to `ctrl+v ctrl+y` and `shift+insert` + respectively, and lets you paste from the clipboard or primary + selection into the search buffer. +* Support for `pipe-*` actions in mouse bindings. It was previously + not possible to add a command to these actions when used in mouse + bindings, making them useless + (https://codeberg.org/dnkl/foot/issues/183). +* `bold-text-in-bright` option to `foot.ini`. When enabled, bold text + is rendered in a brighter color + (https://codeberg.org/dnkl/foot/issues/199). +* `-w,--window-size-pixels` and `-W,--window-size-chars` command line + options to `footclient` (https://codeberg.org/dnkl/foot/issues/189). +* Short command line options for `--title`, `--maximized`, + `--fullscreen`, `--login-shell`, `--hold` and `--check-config`. +* `DECSET` escape to modify the `escape` key to send `\E[27;1;27~` + instead of `\E`: `CSI ? 27127 h` enables the new behavior, `CSI ? + 27127 l` disables it (the default). +* OSC 777;notify: desktop notifications. Use in combination with the + new `notify` option in `foot.ini` + (https://codeberg.org/dnkl/foot/issues/224). +* Status line terminfo capabilities `hs`, `tsl`, `fsl` and `dsl`. This + enables e.g. vim to set the window title + (https://codeberg.org/dnkl/foot/issues/242). + + +### Changed + +* Blinking text now uses the foreground color, but dimmed down in its + off state, instead of the background color. +* Sixel default maximum size is now 10000x10000 instead of the current + window size. +* Graphical glitches/flashes when resizing the window while running a + fullscreen application, i.e. the 'alt' screen + (https://codeberg.org/dnkl/foot/issues/221). +* Cursor will now blink if **either** `CSI ? 12 h` or `CSI Ps SP q` + has been used to enable blinking. **cursor.blink** in `foot.ini` + controls the default state of `CSI Ps SP q` + (https://codeberg.org/dnkl/foot/issues/218). +* The sub-parameter versions of the SGR RGB color escapes (e.g + `\E[38:2...m`) can now be used _without_ the color space ID + parameter. +* SGR 21 no longer disables **bold**. According to ECMA-48, SGR 21 is + _”double underline_”. Foot does not (yet) implement that, but that’s + no reason to implement a non-standard behavior. +* `DECRQM` now returns actual state of the requested mode, instead of + always returning `2`. + + +### Removed + +* Support for loading configuration from `$XDG_CONFIG_HOME/footrc`. +* `scrollback` option from `foot.ini`. +* `geometry` from `foot.ini`. +* Key binding action `scrollback-up` and `scrollback-down`. + + +### Fixed + +* Error when re-assigning a default key binding + (https://codeberg.org/dnkl/foot/issues/233). +* `\E[s`+`\E[u` (save/restore cursor) now saves and restores + attributes and charset configuration, just like `\E7`+`\E8`. +* Report mouse motion events to the client application also while + dragging the cursor outside the grid. +* Parsing of the sub-parameter versions of indexed SGR color escapes + (e.g. `\E[38:5...m`) +* Frames occasionally being rendered while application synchronized + updates is in effect. +* Handling of failures to parse the font specification string. +* Extra private/intermediate characters in escape sequences not being + ignored. + + +### Contributors + +* [kennylevinsen](https://codeberg.org/kennylevinsen) +* [craigbarnes](https://codeberg.org/craigbarnes) + + +## 1.5.4 + +### Changed + + +* Num Lock by default overrides the keypad mode. See + **foot.ini**(5)::KEYPAD, or + [README.md](README.md#user-content-keypad) for details + (https://codeberg.org/dnkl/foot/issues/194). +* Single-width characters with double-width glyphs are now allowed to + overflow into neighboring cells by default. Set + **tweak.allow-overflowing-double-width-glyphs** to ‘no’ to disable + this. + +### Fixed + +* Resize very slow when window is hidden + (https://codeberg.org/dnkl/foot/issues/190). +* Key mappings for key combinations with `shift`+`tab` + (https://codeberg.org/dnkl/foot/issues/210). +* Key mappings for key combinations with `alt`+`return`. +* `footclient` `-m` (`--maximized`) flag being ignored. +* Crash with explicitly sized sixels with a height less than 6 pixels. +* Key mappings for `esc` with modifiers. + + +### Contributors + +* [craigbarnes](https://codeberg.org/craigbarnes) + + +## 1.5.3 + +### Fixed + +* Crash when libxkbcommon cannot find a suitable libX11 _compose_ + file. Note that foot will run, but without support for dead keys. + (https://codeberg.org/dnkl/foot/issues/170). +* Restored window size when window is un-tiled. +* XCursor shape in CSD corners when window is tiled. +* Error handling when processing keyboard input (maybe + https://codeberg.org/dnkl/foot/issues/171). +* Compilation error _"overflow in conversion from long 'unsigned int' + to 'int' changes value... "_ seen on platforms where the `request` + argument in `ioctl(3)` is an `int` (for example: linux/ppc64). +* Crash when using the mouse in alternate scroll mode in an unfocused + window (https://codeberg.org/dnkl/foot/issues/179). +* Character dropped from selection when "right-click-hold"-extending a + selection (https://codeberg.org/dnkl/foot/issues/180). + + +## 1.5.2 + +### Fixed + +* Regression: middle clicking double pastes in e.g. vim + (https://codeberg.org/dnkl/foot/issues/168) + + +## 1.5.1 + +### Changed + +* Default value of the **scrollback.multiplier** option in `foot.ini` + from `1.0` to `3.0`. +* `shift`+`insert` now pastes from the primary selection by + default. This is in addition to middle-clicking with the mouse. + + +### 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 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.ini` if you find the new + speed too slow (https://codeberg.org/dnkl/foot/issues/144). +* Crash when `foot.ini` contains 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). +* Crash after either resizing a window or changing the font size if + there were sixels present in the scrollback while doing so. +* _Send Device Attributes_ to only send a response if `Ps == 0`. +* Paste from primary when clipboard is empty. + + +### Contributors + +* [craigbarnes](https://codeberg.org/craigbarnes) +* [zar](https://codeberg.org/zar) + + +## 1.5.0 + +### Deprecated + +* `$XDG_CONFIG_HOME/footrc`/`~/.config/footrc`. Use + `$XDG_CONFIG_HOME/foot/foot.ini`/`~/.config/foot/foot.ini` instead. +* **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-config` command 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 s` and `CSI ? + Ps r` (https://codeberg.org/dnkl/foot/issues/91). +* `$COLORTERM` is now set to `truecolor` at 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.ini` and + `-w,--window-size-pixels` command line option to `foot`. This option + replaces the now deprecated **geometry** and `-g,--geometry` + options. +* **initial-window-size-chars** option to `foot.ini` and + `-W,--window-size-chars` command line option to `foot`. 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 to `yes`. When enabled, mouse scroll events are translated + to up/down key events in the alternate screen, letting you scroll in + e.g. `less` and other applications without enabling native mouse + support in them (https://codeberg.org/dnkl/foot/issues/135). + + +### Changed + +* Renamed man page for `foot.ini` from **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 `--server` socket path to use `$WAYLAND_DISPLAY` instead 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.ini` or 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** include `Alt`. +* 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 + +* [craigbarnes](https://codeberg.org/craigbarnes) +* [birger](https://codeberg.org/birger) +* [Ordoviz](https://codeberg.org/Ordoviz) +* [cherti](https://codeberg.org/cherti) + + +## 1.4.4 +### Changed + +* Mouse cursor is now always a `left_ptr` when 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](README.md) describing how to programmatically + identify foot. +* [LICENSE](LICENSE), [README.md](README.md) and + [CHANGELOG.md](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 + +* [birger](https://codeberg.org/birger) +* [cherti](https://codeberg.org/cherti) + + +## 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 + +* `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 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::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). + + +## 1.3.0 + +### Added + +* User configurable key- and mouse bindings. See `man 5 foot` and the + example `footrc` (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 `footrc` and `--app-id` command line option, + that sets the _app-id_ property on the Wayland window. +* **title** option to `footrc` and `--title` command line option, that + sets the initial window title. +* Right mouse button extends the current selection. +* `CSI Ps ; Ps ; Ps t` escape 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 `rgba` property. Only if the monitor's + subpixel order is `unknown` is FontConfig's `rgba` property used. If + the subpixel order is `none`, 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 + true` instead of `foot -- 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;spec` pairs. +* 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;#000000` to 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.desktop` and `foot-server.desktop` from + _terminal_ to _utilities-terminal_. +* `XDG_SESSION_ID` is 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 `footrc` and `--login-shell` command 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 +* `oc` to terminfo +* foot-server.desktop file +* Window and cell size reporting escape sequences +* `--hold` command line option +* `--print-pid=FILE|FD` command 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 diff --git a/foot/PKGBUILD b/foot/PKGBUILD new file mode 100644 index 0000000..7640bdc --- /dev/null +++ b/foot/PKGBUILD @@ -0,0 +1,106 @@ +# Maintainer: Daniel Eklöf +pkgdesc="Wayland terminal emulator - fast, lightweight and minimalistic" +pkgname=foot +pkgver=1.8.2 # Don’t forget to update CHANGELOG.md +pkgrel=1 +arch=('x86_64' 'aarch64') +url=https://codeberg.org/dnkl/foot +license=(mit) +changelog=CHANGELOG.md +depends=('libxkbcommon' 'wayland' 'pixman' 'fontconfig' 'libutf8proc' 'fcft' 'foot-terminfo') +makedepends=('meson' 'ninja' 'scdoc' 'python' 'ncurses' 'wayland-protocols' 'tllist') # ‘llvm’, for PGO with clang +checkdepends=('check') +optdepends=('libnotify: desktop notifications' + 'xdg-utils: URI launching' + 'bash-completion: bash completions for foot itself') +source=(${pkgname}-${pkgver}.tar.gz::${url}/archive/${pkgver}.tar.gz) +sha256sums=('50cf5b9f3cc1ebaafa62255eea22395e8267cce21e119bc6f7ecacf11f15dada') + +build() { + cd foot + + local compiler=other + local do_pgo=no + + # makepkg uses -O2 by default, but we *really* want -O3 + CFLAGS+=" -O3" + + # Figure out which compiler we're using, and whether or not to do PGO + case $(${CC-cc} --version) in + *GCC*) + compiler=gcc + do_pgo=yes + ;; + + *clang*) + compiler=clang + + # We need llvm to be able to manage the profiling data + if command -v llvm-profdata > /dev/null; then + do_pgo=yes + + # Meson adds -fprofile-correction, which Clang doesn't + # understand + CFLAGS+=" -Wno-ignored-optimization-argument" + fi + ;; + esac + + meson \ + --prefix=/usr \ + --buildtype=release \ + --wrap-mode=nodownload \ + -Db_lto=true \ + -Dterminfo-install-location=disabled \ + . build + + if [[ ${do_pgo} == yes ]]; then + find -name "*.gcda" -delete + meson configure -Db_pgo=generate build + ninja -C build + + local script_options="--scroll --scroll-region --colors-regular --colors-bright --colors-256 --colors-rgb --attr-bold --attr-italic --attr-underline --sixel" + + local tmp_file=$(mktemp) + + if [[ -v WAYLAND_DISPLAY ]]; then + # TODO: remove the sleep in the next release (with SIGWINCH + # fixes in generate-alt-random-writes.py) + build/footclient --version + build/foot \ + --config /dev/null \ + --term=xterm \ + sh -c "sleep 2 && ./scripts/generate-alt-random-writes.py ${script_options} ${tmp_file} && cat ${tmp_file}" + else + build/footclient --version + build/foot --version + ./scripts/generate-alt-random-writes.py \ + --rows=67 \ + --cols=135 \ + ${script_options} \ + ${tmp_file} + build/pgo ${tmp_file} ${tmp_file} ${tmp_file} + fi + + rm "${tmp_file}" + + if [[ ${compiler} == clang ]]; then + llvm-profdata merge default_*profraw --output=build/default.profdata + fi + + meson configure -Db_pgo=use build + fi + + ninja -C build +} + +check() { + cd foot + ninja -C build test +} + +package() { + cd foot + DESTDIR="${pkgdir}/" ninja -C build install + install -Dm 644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +}