2020-03-06 19:45:04 +01:00
|
|
|
# Changelog
|
|
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
* [Unreleased](#unreleased)
|
2024-04-17 11:26:25 +02:00
|
|
|
* [1.17.2](#1-17-2)
|
2024-04-11 15:28:08 +02:00
|
|
|
* [1.17.1](#1-17-1)
|
2024-04-02 16:27:25 +02:00
|
|
|
* [1.17.0](#1-17-0)
|
2023-10-17 17:24:00 +02:00
|
|
|
* [1.16.2](#1-16-2)
|
2023-10-12 16:36:07 +02:00
|
|
|
* [1.16.1](#1-16-1)
|
2023-10-11 18:14:40 +02:00
|
|
|
* [1.16.0](#1-16-0)
|
2023-08-07 16:39:42 +02:00
|
|
|
* [1.15.3](#1-15-3)
|
2023-07-30 13:18:41 +02:00
|
|
|
* [1.15.2](#1-15-2)
|
2023-07-21 08:56:49 +02:00
|
|
|
* [1.15.1](#1-15-1)
|
2023-07-14 12:25:16 +02:00
|
|
|
* [1.15.0](#1-15-0)
|
2023-04-03 18:52:22 +02:00
|
|
|
* [1.14.0](#1-14-0)
|
2022-08-31 19:17:38 +02:00
|
|
|
* [1.13.1](#1-13-1)
|
2022-08-07 09:31:56 +02:00
|
|
|
* [1.13.0](#1-13-0)
|
2022-04-27 20:05:51 +02:00
|
|
|
* [1.12.1](#1-12-1)
|
2022-04-22 17:14:00 +02:00
|
|
|
* [1.12.0](#1-12-0)
|
2022-02-05 17:19:43 +01:00
|
|
|
* [1.11.0](#1-11-0)
|
2021-12-08 18:08:45 +01:00
|
|
|
* [1.10.3](#1-10-3)
|
2021-12-02 20:26:42 +01:00
|
|
|
* [1.10.2](#1-10-2)
|
2021-11-22 21:56:38 +01:00
|
|
|
* [1.10.1](#1-10-1)
|
2021-11-14 18:10:43 +01:00
|
|
|
* [1.10.0](#1-10-0)
|
2021-10-02 14:46:42 +02:00
|
|
|
* [1.9.2](#1-9-2)
|
2021-10-01 20:52:19 +02:00
|
|
|
* [1.9.1](#1-9-1)
|
2021-08-27 12:45:22 +02:00
|
|
|
* [1.9.0](#1-9-0)
|
2021-07-18 17:57:42 +02:00
|
|
|
* [1.8.2](#1-8-2)
|
2021-07-01 20:14:20 +02:00
|
|
|
* [1.8.1](#1-8-1)
|
2021-06-25 08:23:36 +02:00
|
|
|
* [1.8.0](#1-8-0)
|
2021-04-18 20:12:26 +02:00
|
|
|
* [1.7.2](#1-7-2)
|
2021-03-28 14:25:09 +02:00
|
|
|
* [1.7.1](#1-7-1)
|
2021-03-20 14:02:12 +01:00
|
|
|
* [1.7.0](#1-7-0)
|
2021-02-12 10:44:42 +01:00
|
|
|
* [1.6.4](#1-6-4)
|
2021-01-21 11:43:22 +01:00
|
|
|
* [1.6.3](#1-6-3)
|
2020-12-21 15:58:25 +01:00
|
|
|
* [1.6.2](#1-6-2)
|
2020-12-20 15:46:05 +01:00
|
|
|
* [1.6.1](#1-6-1)
|
2020-12-19 22:50:18 +00:00
|
|
|
* [1.6.0](#1-6-0)
|
2020-12-01 19:33:22 +01:00
|
|
|
* [1.5.4](#1-5-4)
|
2020-11-06 20:06:31 +01:00
|
|
|
* [1.5.3](#1-5-3)
|
2020-10-13 08:02:09 +02:00
|
|
|
* [1.5.2](#1-5-2)
|
2020-10-11 19:31:01 +02:00
|
|
|
* [1.5.1](#1-5-1)
|
2020-09-18 21:22:59 +02:00
|
|
|
* [1.5.0](#1-5-0)
|
2020-07-29 06:55:23 +02:00
|
|
|
* [1.4.4](#1-4-4)
|
2020-07-27 18:55:12 +02:00
|
|
|
* [1.4.3](#1-4-3)
|
|
|
|
|
* [1.4.2](#1-4-2)
|
2020-07-22 20:03:28 +02:00
|
|
|
* [1.4.1](#1-4-1)
|
2020-07-22 18:59:19 +02:00
|
|
|
* [1.4.0](#1-4-0)
|
2020-05-13 13:09:12 +02:00
|
|
|
* [1.3.0](#1-3-0)
|
2020-03-15 11:39:11 +01:00
|
|
|
* [1.2.3](#1-2-3)
|
|
|
|
|
* [1.2.2](#1-2-2)
|
|
|
|
|
* [1.2.1](#1-2-1)
|
|
|
|
|
* [1.2.0](#1-2-0)
|
|
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
## Unreleased
|
|
|
|
|
### Added
|
2024-05-20 09:03:29 +02:00
|
|
|
|
|
|
|
|
* `cursor.blink-rate` option, allowing you to configure the rate the
|
|
|
|
|
cursor blinks with (when `cursor.blink=yes`) ([#1707][1707]);
|
2024-05-22 13:43:40 +02:00
|
|
|
* Support for `wp_single_pixel_buffer_v1`; certain overlay surfaces
|
|
|
|
|
will now utilize the new single-pixel buffer protocol. This mainly
|
|
|
|
|
reduces the memory usage, but should also be slightly faster.
|
2024-06-15 10:17:01 +02:00
|
|
|
* Support for high-res mouse wheel scroll events ([#1738][1738]).
|
2024-06-24 01:33:07 +02:00
|
|
|
* Styled and colored underlines ([#828][828]).
|
2024-07-02 07:45:04 +02:00
|
|
|
* Support for SGR 21 (double underline).
|
2024-07-01 19:11:05 +02:00
|
|
|
* Support for `XTPUSHCOLORS`, `XTPOPCOLORS` and `XTREPORTCOLORS`,
|
|
|
|
|
i.e. color palette stack ([#856][856]).
|
2024-07-18 08:41:44 +02:00
|
|
|
* Log output now respects the [`NO_COLOR`](http://no-color.org/)
|
|
|
|
|
environment variable ([#1771][1771]).
|
2024-06-30 19:44:17 +02:00
|
|
|
* Support for [in-band window resize
|
|
|
|
|
notifications](https://gist.github.com/rockorager/e695fb2924d36b2bcf1fff4a3704bd83),
|
|
|
|
|
private mode `2048`.
|
osc/notify: add support for OSC-99, kitty desktop notifications
This adds limited support for OSC-99, kitty desktop notifications[^1]. We
support everything defined by the "protocol", except:
* 'a': action to perform on notification activation. Since we don't
trigger the notification ourselves (over D-Bus), we don't know a)
which ID the notification got, or b) when it is clicked.
* ... and that's it. Everything else is supported
To be explicit, we *do* support:
* Chunked notifications (d=0|1), allowing the application to append
data to a notification in chunks, before it's finally displayed.
* Plain UTF-8, or base64-encoded UTF-8 payload (e=0|1).
* Notification identifier (i=xyz).
* Payload type (p=title|body).
* When to honor the notification (o=always|unfocused|invisible), with
the following quirks:
- we don't know when the window is invisible, thus it's treated as
'unfocused'.
- the foot option 'notify-focus-inhibit' overrides 'always'
* Urgency (u=0|1|2)
[^1]: https://sw.kovidgoyal.net/kitty/desktop-notifications/
2024-07-19 15:04:28 +02:00
|
|
|
* Support for OSC-99 [_"Kitty desktop
|
|
|
|
|
notifications"_](https://sw.kovidgoyal.net/kitty/desktop-notifications/).
|
2024-07-23 07:09:54 +02:00
|
|
|
* `desktop-notifications.command` option, replaces `notify`.
|
|
|
|
|
* `desktop-notifications.inhibit-when-focused` option, replaces
|
|
|
|
|
`notify-focus-inhibit`.
|
osc: kitty notifications: cleanup and update to latest version of spec
* Don't store a list of unfinished notifications. Use a single one. If
the notification ID of the 'current' notification doesn't match the
previous, unfinished one, the 'current' notification replaces the
previous one, instead of updating it.
* Update xstrjoin() to take an optional delimiter (for example ','),
and use that when joining categories and 'alive IDs'.
* Rename ${action-arg} to ${action-argument}
* Update handling of the 'n' parameter (symbolic icon name); the spec
allows it to be used multiple times, and the terminal is supposed to
pick the first one it can resolve. Foot can't resolve icons at all,
neither can 'notify-send' or 'fyi' (which is what foot typically
executes to display a notification); it's the notification daemon that
resolves icons.
The spec _could_ be interpreted to mean the terminal should lookup
.desktop files, and use the value of the 'Icon' key from the first
matching .desktop files. But foot doesn't read .desktop files, and I
don't intend to implement XDG directory scanning and parsing of
.desktop files just to figure out which icon to use.
Instead, use a simple heuristics; use the *shortest* symbolic
names. The idea is pretty simple: plain icon names are typically
shorter than .desktop file IDs.
2024-08-02 08:07:13 +02:00
|
|
|
* `${icon}`, `${urgency}` and `${action-argument}` added
|
2024-07-23 19:08:21 +02:00
|
|
|
to the `desktop-notifications.command` template.
|
osc: kitty notifications: cleanup and update to latest version of spec
* Don't store a list of unfinished notifications. Use a single one. If
the notification ID of the 'current' notification doesn't match the
previous, unfinished one, the 'current' notification replaces the
previous one, instead of updating it.
* Update xstrjoin() to take an optional delimiter (for example ','),
and use that when joining categories and 'alive IDs'.
* Rename ${action-arg} to ${action-argument}
* Update handling of the 'n' parameter (symbolic icon name); the spec
allows it to be used multiple times, and the terminal is supposed to
pick the first one it can resolve. Foot can't resolve icons at all,
neither can 'notify-send' or 'fyi' (which is what foot typically
executes to display a notification); it's the notification daemon that
resolves icons.
The spec _could_ be interpreted to mean the terminal should lookup
.desktop files, and use the value of the 'Icon' key from the first
matching .desktop files. But foot doesn't read .desktop files, and I
don't intend to implement XDG directory scanning and parsing of
.desktop files just to figure out which icon to use.
Instead, use a simple heuristics; use the *shortest* symbolic
names. The idea is pretty simple: plain icon names are typically
shorter than .desktop file IDs.
2024-08-02 08:07:13 +02:00
|
|
|
* `desktop-notifications.command-action-argument` option, defining how
|
|
|
|
|
`${action-argument}` (in `desktop-notifications.command`) should be
|
|
|
|
|
expanded.
|
2024-07-25 19:24:28 +02:00
|
|
|
* `desktop-notifications.close` option, defining what to execute when
|
|
|
|
|
an application wants to close an existing notification (via an
|
|
|
|
|
OSC-99 escape sequence).
|
2024-05-20 09:03:29 +02:00
|
|
|
|
|
|
|
|
[1707]: https://codeberg.org/dnkl/foot/issues/1707
|
2024-06-15 10:17:01 +02:00
|
|
|
[1738]: https://codeberg.org/dnkl/foot/issues/1738
|
2024-06-24 01:33:07 +02:00
|
|
|
[828]: https://codeberg.org/dnkl/foot/issues/828
|
2024-07-01 19:11:05 +02:00
|
|
|
[856]: https://codeberg.org/dnkl/foot/issues/856
|
2024-07-18 08:41:44 +02:00
|
|
|
[1771]: https://codeberg.org/dnkl/foot/issues/1771
|
2024-07-01 19:11:05 +02:00
|
|
|
|
2024-05-20 09:03:29 +02:00
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
### Changed
|
2024-04-27 09:38:55 +02:00
|
|
|
|
|
|
|
|
* All `XTGETTCAP` capabilities are now in the `tigetstr()` format:
|
|
|
|
|
|
|
|
|
|
- parameterized string capabilities were previously "source
|
|
|
|
|
encoded", meaning e.g. `\E` where not "decoded" into `\x1b`.
|
|
|
|
|
- Control characters were also "source encoded", meaning they were
|
|
|
|
|
returned as e.g. "^G" instead of `\x07` ([#1701][1701]).
|
|
|
|
|
|
|
|
|
|
In other words, if, after this change, `XTGETTCAP` returns a string
|
|
|
|
|
that is different compared to `tigetstr()`, then it is likely a bug
|
|
|
|
|
in foot's implementation of `XTGETTCAP`.
|
2024-07-13 10:19:53 +02:00
|
|
|
* If the cursor foreground and background colors are identical (for
|
|
|
|
|
example, when cursor uses inverted colors and the cell's foreground
|
|
|
|
|
and background are the same), the cursor will instead be rendered
|
|
|
|
|
using the default foreground and background colors, inverted
|
|
|
|
|
([#1761][1761]).
|
input: don't map wheel events to BTN_{BACK,FORWARD}
BTN_BACK and BTN_FORWARD are separate buttons. The scroll wheel don't
have any button mappings in libinput/wayland, so make up our own
defines.
This allows us to map them in mouse bindings.
Also expose BTN_WHEEL_{LEFT,RIGHT}. These were already defined, and
used, internally, to handle wheel tilt events. With this, they can
also be used in mouse bindings.
Finally, fix encoding used for BTN_{BACK,FORWARD} when sending mouse
button events to the client application. Before this, they were mapped
to buttons 4/5. But, button 4/5 are for the scroll wheel, and as
mentioned above, BTN_{BACK,FORWARD} are not the same as scroll wheel
"buttons".
Closes #1763
2024-07-13 10:24:11 +02:00
|
|
|
* Mouse wheel events now generate `BTN_WHEEL_BACK` and
|
|
|
|
|
`BTN_WHEEL_FORWARD` "button presses", instead of `BTN_BACK` and
|
|
|
|
|
`BTN_FORWARD`. The default bindings have been updated, and
|
|
|
|
|
`scrollback-up-mouse`, `scrollback-down-mouse`, `font-increase` and
|
|
|
|
|
`font-decrease` now use the new button names.
|
2024-07-14 13:26:31 -07:00
|
|
|
|
input: don't map wheel events to BTN_{BACK,FORWARD}
BTN_BACK and BTN_FORWARD are separate buttons. The scroll wheel don't
have any button mappings in libinput/wayland, so make up our own
defines.
This allows us to map them in mouse bindings.
Also expose BTN_WHEEL_{LEFT,RIGHT}. These were already defined, and
used, internally, to handle wheel tilt events. With this, they can
also be used in mouse bindings.
Finally, fix encoding used for BTN_{BACK,FORWARD} when sending mouse
button events to the client application. Before this, they were mapped
to buttons 4/5. But, button 4/5 are for the scroll wheel, and as
mentioned above, BTN_{BACK,FORWARD} are not the same as scroll wheel
"buttons".
Closes #1763
2024-07-13 10:24:11 +02:00
|
|
|
This change allow users to separate physical mouse buttons that
|
|
|
|
|
_also_ generates `BTN_BACK` and `BTN_FORWARD`, from wheel scrolling
|
|
|
|
|
([#1763][1763]).
|
2024-07-14 13:26:31 -07:00
|
|
|
* Replaced the old catppuccin theme with updated flavored themes
|
|
|
|
|
pulled from [catppuccin/foot](https://github.com/catppuccin/foot)
|
input: allow mouse selections to start inside the margins
Before this, margins were special cased:
* The mouse cursor was always a pointer, and never an I-beam (thus
signaling selections cannot be made).
* The internal mouse coords where set to -1 when the cursor was inside
the margins, causing:
- text selections from being made
- mouse events being passed to mouse grabbing applications
In particular, even with a one-pixel margin, making selections was
unnecessarily hard in e.g. fullscreen mode, where you'd expect to be
able to throw the cursor into the corner of the screen and then start
a selection.
With this patch, the cursor is treated as if it was in the first/last
column/row, when inside the margin(s).
An unintended side-effect of this, initially, was that auto-scrolling
selections where way too easy to trigger, since part of its logic is
checking if the cursor is inside the margins.
That problem has been reduced by two things:
* auto-scrolling does not occur unless a selection has been
started. That is, just holding down the mouse in the margins and
moving up/down doesn't cause scrolling. You have to first select at
least one cell in the visible viewport.
* A selection isn't fully started (i.e. a cell is actually selected)
unless the cursor is inside the actual grid, and *not* in the
margins.
What does the last point mean? We now allow a selection to be
_started_ when clicking in the margin. What this means internally is
we set a start coordinate for a selection, but *not* and end
coordinate. At this point, we don't have an actual selection. Nothing
is selected, and no cells are highlighted, graphically.
This happens when we set an end coordinate. Without the last bullet
point, that would happen as soon as the cursor was _moved_, even if
still inside the margins. Now, we require the cursor to leave the
margins and touch an actual cell before we set an end coordinate.
Closes #1702
2024-07-18 08:08:44 +02:00
|
|
|
* Mouse selections can now be started inside the margins
|
|
|
|
|
([#1702][1702]).
|
2024-04-27 09:38:55 +02:00
|
|
|
|
|
|
|
|
[1701]: https://codeberg.org/dnkl/foot/issues/1701
|
2024-07-13 10:19:53 +02:00
|
|
|
[1761]: https://codeberg.org/dnkl/foot/issues/1761
|
input: don't map wheel events to BTN_{BACK,FORWARD}
BTN_BACK and BTN_FORWARD are separate buttons. The scroll wheel don't
have any button mappings in libinput/wayland, so make up our own
defines.
This allows us to map them in mouse bindings.
Also expose BTN_WHEEL_{LEFT,RIGHT}. These were already defined, and
used, internally, to handle wheel tilt events. With this, they can
also be used in mouse bindings.
Finally, fix encoding used for BTN_{BACK,FORWARD} when sending mouse
button events to the client application. Before this, they were mapped
to buttons 4/5. But, button 4/5 are for the scroll wheel, and as
mentioned above, BTN_{BACK,FORWARD} are not the same as scroll wheel
"buttons".
Closes #1763
2024-07-13 10:24:11 +02:00
|
|
|
[1763]: https://codeberg.org/dnkl/foot/issues/1763
|
input: allow mouse selections to start inside the margins
Before this, margins were special cased:
* The mouse cursor was always a pointer, and never an I-beam (thus
signaling selections cannot be made).
* The internal mouse coords where set to -1 when the cursor was inside
the margins, causing:
- text selections from being made
- mouse events being passed to mouse grabbing applications
In particular, even with a one-pixel margin, making selections was
unnecessarily hard in e.g. fullscreen mode, where you'd expect to be
able to throw the cursor into the corner of the screen and then start
a selection.
With this patch, the cursor is treated as if it was in the first/last
column/row, when inside the margin(s).
An unintended side-effect of this, initially, was that auto-scrolling
selections where way too easy to trigger, since part of its logic is
checking if the cursor is inside the margins.
That problem has been reduced by two things:
* auto-scrolling does not occur unless a selection has been
started. That is, just holding down the mouse in the margins and
moving up/down doesn't cause scrolling. You have to first select at
least one cell in the visible viewport.
* A selection isn't fully started (i.e. a cell is actually selected)
unless the cursor is inside the actual grid, and *not* in the
margins.
What does the last point mean? We now allow a selection to be
_started_ when clicking in the margin. What this means internally is
we set a start coordinate for a selection, but *not* and end
coordinate. At this point, we don't have an actual selection. Nothing
is selected, and no cells are highlighted, graphically.
This happens when we set an end coordinate. Without the last bullet
point, that would happen as soon as the cursor was _moved_, even if
still inside the margins. Now, we require the cursor to leave the
margins and touch an actual cell before we set an end coordinate.
Closes #1702
2024-07-18 08:08:44 +02:00
|
|
|
[1702]: https://codeberg.org/dnkl/foot/issues/1702
|
2024-04-27 09:38:55 +02:00
|
|
|
|
|
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
### Deprecated
|
2024-07-23 07:09:54 +02:00
|
|
|
|
|
|
|
|
* `notify` option; replaced by `desktop-notifications.command`.
|
|
|
|
|
* `notify-focus-inhibit` option; replaced by
|
|
|
|
|
`desktop-notifications.inhibit-when-focused`.
|
|
|
|
|
|
|
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
### Removed
|
|
|
|
|
### Fixed
|
2024-04-20 08:18:41 +02:00
|
|
|
|
|
|
|
|
* Crash when zooming in or out, with `dpi-aware=yes`, and the
|
|
|
|
|
monitor's DPI is 0 (this is true for, for example, nested Wayland
|
|
|
|
|
sessions, or in virtualized environments).
|
2024-04-20 08:19:58 +02:00
|
|
|
* No error response for empty `XTGETTCAP` request ([#1694][1694]).
|
unicode-mode: move state from seat to term
This fixes an issue where entering unicode-mode in one foot client,
also enabled unicode-mode on other foot clients. Both
visually (although glitchy), and in effect.
The reason the state was originally in the seat objects, was to fully
support multi-seat. That is, one seat/keyboard entering unicode-mode
should not affect other seats/keyboards.
The issue with this is that seat objects are Wayland global. Thus, in
server mode, all seat objects are shared between the foot clients.
There is a similarity with IME, which also keeps state in the
seat. There's one big difference, however, and that is IME has Wayland
native enter/leave events, that the compositor emits when windows are
focused/unfocused. These events allow us to reset IME state. For our
own Unicode mode, there is nothing similar.
This patch moves the Unicode state from seats, to the terminal
struct. This does mean that if one seat/keyboard enters Unicode mode,
then *all* seats/keyboards will affect the unicode state. This
potential downside is outweighed by the fact that different foot
clients no longer affect each other.
Closes #1717
2024-05-21 07:06:45 +02:00
|
|
|
* Unicode-mode in one foot client affecting other clients, in foot
|
|
|
|
|
server mode ([#1717][1717]).
|
2024-05-21 06:18:00 +02:00
|
|
|
* IME interfering in URL-mode ([#1718][1718]).
|
2024-06-08 08:39:47 +02:00
|
|
|
* OSC-52 reply interleaved with other data sent to the client
|
|
|
|
|
([#1734][1734]).
|
2024-06-22 07:58:43 +02:00
|
|
|
* XKB compose state being reset when foot receives a new keymap
|
|
|
|
|
([#1744][1744]).
|
2024-06-24 17:55:07 +02:00
|
|
|
* Regression: alpha changes through OSC-11 sequences not taking effect
|
|
|
|
|
until window is resized.
|
2024-06-24 20:21:46 +02:00
|
|
|
* VS15 being ignored ([#1742][1742]).
|
2024-06-24 21:18:37 +02:00
|
|
|
* VS16 being ignored for a subset of the valid VS16 sequences
|
|
|
|
|
([#1742][1742]).
|
2024-07-01 10:53:21 +02:00
|
|
|
* Crash in debug builds, when using OSC-12 to set the cursor color and
|
|
|
|
|
foot config has not set any custom cursor colors (i.e. without
|
|
|
|
|
OSC-12, inverted fg/bg would be used).
|
2024-07-13 10:22:54 +02:00
|
|
|
* Wrong color used when drawing the unfocused, hollow cursor.
|
input: don't map wheel events to BTN_{BACK,FORWARD}
BTN_BACK and BTN_FORWARD are separate buttons. The scroll wheel don't
have any button mappings in libinput/wayland, so make up our own
defines.
This allows us to map them in mouse bindings.
Also expose BTN_WHEEL_{LEFT,RIGHT}. These were already defined, and
used, internally, to handle wheel tilt events. With this, they can
also be used in mouse bindings.
Finally, fix encoding used for BTN_{BACK,FORWARD} when sending mouse
button events to the client application. Before this, they were mapped
to buttons 4/5. But, button 4/5 are for the scroll wheel, and as
mentioned above, BTN_{BACK,FORWARD} are not the same as scroll wheel
"buttons".
Closes #1763
2024-07-13 10:24:11 +02:00
|
|
|
* Encoding of `BTN_BACK` and `BTN_FORWARD`, when sending a mouse input
|
|
|
|
|
escape sequence to the terminal application.
|
2024-04-20 08:19:58 +02:00
|
|
|
|
|
|
|
|
[1694]: https://codeberg.org/dnkl/foot/issues/1694
|
unicode-mode: move state from seat to term
This fixes an issue where entering unicode-mode in one foot client,
also enabled unicode-mode on other foot clients. Both
visually (although glitchy), and in effect.
The reason the state was originally in the seat objects, was to fully
support multi-seat. That is, one seat/keyboard entering unicode-mode
should not affect other seats/keyboards.
The issue with this is that seat objects are Wayland global. Thus, in
server mode, all seat objects are shared between the foot clients.
There is a similarity with IME, which also keeps state in the
seat. There's one big difference, however, and that is IME has Wayland
native enter/leave events, that the compositor emits when windows are
focused/unfocused. These events allow us to reset IME state. For our
own Unicode mode, there is nothing similar.
This patch moves the Unicode state from seats, to the terminal
struct. This does mean that if one seat/keyboard enters Unicode mode,
then *all* seats/keyboards will affect the unicode state. This
potential downside is outweighed by the fact that different foot
clients no longer affect each other.
Closes #1717
2024-05-21 07:06:45 +02:00
|
|
|
[1717]: https://codeberg.org/dnkl/foot/issues/1717
|
2024-05-21 06:18:00 +02:00
|
|
|
[1718]: https://codeberg.org/dnkl/foot/issues/1718
|
2024-06-08 08:39:47 +02:00
|
|
|
[1734]: https://codeberg.org/dnkl/foot/issues/1734
|
2024-06-22 07:58:43 +02:00
|
|
|
[1744]: https://codeberg.org/dnkl/foot/issues/1744
|
2024-06-24 20:21:46 +02:00
|
|
|
[1742]: https://codeberg.org/dnkl/foot/issues/1742
|
2024-04-20 08:18:41 +02:00
|
|
|
|
|
|
|
|
|
2024-04-17 11:28:22 +02:00
|
|
|
### Security
|
|
|
|
|
### Contributors
|
|
|
|
|
|
|
|
|
|
|
2024-04-17 11:26:25 +02:00
|
|
|
## 1.17.2
|
|
|
|
|
|
2024-04-11 15:32:15 +02:00
|
|
|
### Changed
|
2024-04-15 16:02:54 +02:00
|
|
|
|
|
|
|
|
* Notifications with invalid UTF-8 strings are now ignored.
|
|
|
|
|
|
|
|
|
|
|
2024-04-11 15:32:15 +02:00
|
|
|
### Fixed
|
2024-04-15 16:03:30 +02:00
|
|
|
|
2024-04-15 16:07:47 +02:00
|
|
|
* Crash when changing aspect ratio of a sixel, in the middle of the
|
|
|
|
|
sixel data (this is unsupported in foot, but should of course not
|
|
|
|
|
result in a crash).
|
2024-04-15 16:03:30 +02:00
|
|
|
* Crash when printing double-width (or longer) characters to, or near,
|
|
|
|
|
the last column, when auto-wrap (private mode 7) has been disabled.
|
2024-04-15 16:05:56 +02:00
|
|
|
* Dynamically sized sixel being trimmed to nothing.
|
term: stash last known DPI, and use after a unmapped/mapped sequence
A compositor may unmap, and then remap the window, for example when
the window is minimized, or if the user switches workspace.
With DPI aware rendering, we *need* to know on which output we're
mapped, in order to use the correct DPI. This means the first frame we
render, before being mapped, always guesses the DPI.
In an unmap/map sequence, guessing the wrong DPI means the window will
flicker.
Fix by stashing the last used DPI value, and use that instead of
guessing.
This means the *only* time we _actually_ guess the DPI, is the very
first frame, when starting up foot.
2024-04-17 08:35:58 +02:00
|
|
|
* Flickering with `dpi-aware=yes` and window is unmapped/remapped
|
|
|
|
|
(some compositors do this when window is minimized), in a
|
|
|
|
|
multi-monitor setup with different monitor DPIs.
|
2024-04-15 16:05:56 +02:00
|
|
|
|
|
|
|
|
|
2024-04-11 15:28:08 +02:00
|
|
|
## 1.17.1
|
|
|
|
|
|
2024-04-02 16:34:08 +02:00
|
|
|
### Added
|
2024-04-09 16:28:54 +02:00
|
|
|
|
|
|
|
|
* `cursor.unfocused-style=unchanged|hollow|none` to `foot.ini`. The
|
|
|
|
|
default is `hollow` ([#1582][1582]).
|
2024-04-10 19:26:23 +02:00
|
|
|
* New key binding: `quit` ([#1475][1475]).
|
2024-04-09 16:28:54 +02:00
|
|
|
|
|
|
|
|
[1582]: https://codeberg.org/dnkl/foot/issues/1582
|
2024-04-10 19:26:23 +02:00
|
|
|
[1475]: https://codeberg.org/dnkl/foot/issues/1475
|
2024-04-09 16:28:54 +02:00
|
|
|
|
|
|
|
|
|
2024-04-02 16:34:08 +02:00
|
|
|
### Fixed
|
2024-04-05 16:19:24 +02:00
|
|
|
|
|
|
|
|
* Log-level not respected by syslog.
|
2024-04-05 16:22:42 +02:00
|
|
|
* Regression: terminal shutting down when the PTY is closed by the
|
|
|
|
|
client application, which may be earlier than when the client
|
|
|
|
|
application exits ([#1666][1666]).
|
2024-04-05 16:27:56 +02:00
|
|
|
* When closing the window, send `SIGHUP` to the client application,
|
|
|
|
|
before sending `SIGTERM`. The signal sequence is now `SIGHUP`, wait,
|
|
|
|
|
`SIGTERM`, wait `SIGKILL`.
|
2024-04-10 05:44:33 +02:00
|
|
|
* Crash when receiving a `DECRQSS` request with more than 2 bytes in
|
|
|
|
|
the `q` parameter.
|
2024-04-05 16:22:42 +02:00
|
|
|
|
|
|
|
|
[1666]: https://codeberg.org/dnkl/foot/issues/1666
|
2024-04-05 16:19:24 +02:00
|
|
|
|
|
|
|
|
|
2024-04-02 16:34:08 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2024-04-11 15:28:08 +02:00
|
|
|
* Holger Weiß
|
|
|
|
|
* izmyname
|
|
|
|
|
* Marcin Puc
|
|
|
|
|
* tunjan
|
|
|
|
|
|
2024-04-02 16:34:08 +02:00
|
|
|
|
2024-04-02 16:27:25 +02:00
|
|
|
## 1.17.0
|
|
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
### Added
|
2023-12-29 13:37:07 +01:00
|
|
|
|
2021-12-10 17:40:59 +00:00
|
|
|
- Support for opening an existing PTY, e.g. a VM console.
|
|
|
|
|
([#1564][1564])
|
2024-01-03 13:31:35 +01:00
|
|
|
* Unicode input mode now accepts input from the numpad as well,
|
|
|
|
|
numlock is ignored.
|
2024-01-17 15:00:14 -05:00
|
|
|
* A new `resize-by-cells` option, enabled by default, allows the size
|
|
|
|
|
of floating windows to be constrained to multiples of the cell size.
|
2024-02-06 11:10:36 +01:00
|
|
|
* Support for custom (i.e. other than ctrl/shift/alt/super) modifiers
|
|
|
|
|
in key bindings ([#1348][1348]).
|
2022-12-08 11:51:27 +01:00
|
|
|
* `pipe-command-output` key binding.
|
2024-02-06 13:49:46 +01:00
|
|
|
* Support for OSC-176, _"Set App-ID"_
|
|
|
|
|
(https://gist.github.com/delthas/d451e2cc1573bb2364839849c7117239).
|
2024-02-11 15:09:28 +00:00
|
|
|
* Support for `DECRQM` queries with ANSI/ECMA-48 modes (`CSI Ps $ p`).
|
2024-03-07 16:28:59 +01:00
|
|
|
* Rectangular edit functions: `DECCARA`, `DECRARA`, `DECCRA`, `DECFRA`
|
2024-03-07 16:29:39 +01:00
|
|
|
and `DECERA` ([#1633][1633]).
|
2024-03-07 16:28:59 +01:00
|
|
|
* `Rect` capability to terminfo.
|
2024-03-29 11:40:15 +01:00
|
|
|
* `fe` and `fd` (focus in/out enable/disable) capabilities to
|
|
|
|
|
terminfo.
|
2024-03-29 11:40:35 +01:00
|
|
|
* `nel` capability to terminfo.
|
2024-02-06 11:10:36 +01:00
|
|
|
|
|
|
|
|
[1348]: https://codeberg.org/dnkl/foot/issues/1348
|
2024-03-07 16:29:39 +01:00
|
|
|
[1633]: https://codeberg.org/dnkl/foot/issues/1633
|
2021-12-10 17:40:59 +00:00
|
|
|
[1564]: https://codeberg.org/dnkl/foot/pulls/1564
|
2024-03-15 17:51:51 +00:00
|
|
|
[`DECBKM`]: https://vt100.net/docs/vt510-rm/DECBKM.html
|
2023-12-29 13:37:07 +01:00
|
|
|
|
2024-04-02 16:27:25 +02:00
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
### Changed
|
2023-10-26 16:22:41 +02:00
|
|
|
|
|
|
|
|
* config: ARGB color values now default to opaque, rather than
|
|
|
|
|
transparent, when the alpha component has been left out
|
|
|
|
|
([#1526][1526]).
|
2024-01-03 14:07:15 +01:00
|
|
|
* The `foot` process now changes CWD to `/` after spawning the shell
|
|
|
|
|
process. This ensures the terminal itself does not "lock" a
|
|
|
|
|
directory; for example, preventing a mount point from being
|
|
|
|
|
unmounted ([#1528][1528]).
|
input: kitty: update to latest version of the spec
Starting with kitty 0.32.0, the modifier bits during modifier key
events behave differently, compared to before. Or, rather, they have
now been spec:ed; before, behavior was different on e.g. MacOS, and
Linux.
The new behavior is this:
On key press, the modifier bits in the kitty key event *includes* the
pressed modifier key.
On key release, the modifier bits in the kitty key event does *not*
include the released modifier key.
In other words, The modifier bits reflects the state *after* the key
event.
This is the exact opposite of what foot did before this patch.
The patch is really pretty small: in order to include the key in the
modifier set, we simulate a key press to update the XKB state, using
xkb_state_uppate_key(). For key pressed, we simulate an XKB_KEY_DOWN
event, and for key releases we simulate an XKB_KEY_UP event.
Then we re-retrieve the modifers, both the full set, and the consumed
set.
Closes #1561
2024-01-22 16:39:26 +01:00
|
|
|
* Kitty keyboard protocol: updated behavior of modifiers bits during
|
|
|
|
|
modifier key events, to match the (new [#6913][kitty-6913]) behavior
|
|
|
|
|
in kitty >= 0.32.0 ([#1561][1561]).
|
2024-01-17 15:00:14 -05:00
|
|
|
* When changing font sizes or display scales in floating windows, the
|
|
|
|
|
window will be resized as needed to preserve the same grid size.
|
2024-02-05 12:07:47 +01:00
|
|
|
* `smm` now disables private mode 1036 (_"send ESC when Meta modifies
|
|
|
|
|
a key"_), and enables private mode 1034 (_"8-bit Meta mode"_). `rmm`
|
|
|
|
|
does the opposite ([#1584][1584]).
|
2024-02-13 16:28:03 +01:00
|
|
|
* Grid is now always centered in the window, when either fullscreened
|
|
|
|
|
or maximized.
|
2024-02-15 16:41:16 +01:00
|
|
|
* Ctrl+wheel up/down bound to `font-increase` and `font-decrease`
|
|
|
|
|
respectively (in addition to the already existing default key
|
|
|
|
|
bindings `ctrl-+` and `ctrl+-`).
|
2024-02-21 16:29:10 +01:00
|
|
|
* Use XRGB pixel format (instead of ARGB) when there is no
|
|
|
|
|
transparency.
|
2024-02-29 07:54:27 +01:00
|
|
|
* Prefer CSS xcursor names, and fallback to legacy X11 names.
|
2024-02-29 09:32:38 +01:00
|
|
|
* Kitty keyboard protocol: use the `XKB` mode when retrieving locked
|
|
|
|
|
modifiers, instead of the `GTK` mode. This fixes an issue where some
|
|
|
|
|
key combinations (e.g. Shift+space) produces different results
|
|
|
|
|
depending on the state of e.g. the NumLock key.
|
|
|
|
|
* Kitty keyboard protocol: filter out **all** locked modifiers (as
|
|
|
|
|
reported by XKB), rather than hardcoding it to CapsLock only, when
|
|
|
|
|
determining whether a key combination produces text or not.
|
2024-03-14 07:03:51 +01:00
|
|
|
* CSI-t queries now report pixel values **unscaled**, instead of
|
|
|
|
|
**scaled** ([#1643][1643]).
|
2024-03-04 16:18:49 +01:00
|
|
|
* Sixel: text cursor is now placed on the last text row touched by the
|
|
|
|
|
sixel, instead of the text row touched by the _upper_ pixel of the
|
|
|
|
|
last sixel ([#chafa-192][chafa-192]).
|
2024-03-11 16:25:45 +01:00
|
|
|
* Sixel: trailing, fully transparent rows are now trimmed
|
|
|
|
|
([#chafa-192][chafa-192]).
|
2024-03-29 11:40:15 +01:00
|
|
|
* `1004` (enable focus in/out events) removed from the `XM` terminfo
|
|
|
|
|
capability. To enable focus in/out, use the `fe` and `fd`
|
|
|
|
|
capabilities instead.
|
2024-03-29 11:40:47 +01:00
|
|
|
* Tightened the regular expression in the `rv` terminfo capability.
|
|
|
|
|
* Tightened the regular expression in the `xr` terminfo capability.
|
2024-04-01 08:49:27 +02:00
|
|
|
* `DECRQM` queries for private mode 67 ([`DECBKM`]) now reply with mode
|
|
|
|
|
value 4 ("permanently reset") instead of 0 ("not recognized").
|
2023-10-26 16:22:41 +02:00
|
|
|
|
|
|
|
|
[1526]: https://codeberg.org/dnkl/foot/issues/1526
|
2024-01-03 14:07:15 +01:00
|
|
|
[1528]: https://codeberg.org/dnkl/foot/issues/1528
|
input: kitty: update to latest version of the spec
Starting with kitty 0.32.0, the modifier bits during modifier key
events behave differently, compared to before. Or, rather, they have
now been spec:ed; before, behavior was different on e.g. MacOS, and
Linux.
The new behavior is this:
On key press, the modifier bits in the kitty key event *includes* the
pressed modifier key.
On key release, the modifier bits in the kitty key event does *not*
include the released modifier key.
In other words, The modifier bits reflects the state *after* the key
event.
This is the exact opposite of what foot did before this patch.
The patch is really pretty small: in order to include the key in the
modifier set, we simulate a key press to update the XKB state, using
xkb_state_uppate_key(). For key pressed, we simulate an XKB_KEY_DOWN
event, and for key releases we simulate an XKB_KEY_UP event.
Then we re-retrieve the modifers, both the full set, and the consumed
set.
Closes #1561
2024-01-22 16:39:26 +01:00
|
|
|
[1561]: https://codeberg.org/dnkl/foot/issues/1561
|
|
|
|
|
[kitty-6913]: https://github.com/kovidgoyal/kitty/issues/6913
|
2024-02-05 12:07:47 +01:00
|
|
|
[1584]: https://codeberg.org/dnkl/foot/issues/1584
|
2024-03-14 07:03:51 +01:00
|
|
|
[1643]: https://codeberg.org/dnkl/foot/issues/1643
|
2024-03-04 16:18:49 +01:00
|
|
|
[chafa-192]: https://github.com/hpjansson/chafa/issues/192
|
2023-10-26 16:22:41 +02:00
|
|
|
|
|
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
### Fixed
|
2023-10-26 16:22:41 +02:00
|
|
|
|
|
|
|
|
* config: improved validation of color values.
|
2023-10-27 16:23:57 +02:00
|
|
|
* config: double close of file descriptor, resulting in a chain of
|
|
|
|
|
errors ultimately leading to a startup failure ([#1531][1531]).
|
2024-01-09 16:47:41 +01:00
|
|
|
* Crash when using a desktop scaling factor > 1, on compositors that
|
|
|
|
|
implements neither the `fractional-scale-v1`, nor the
|
|
|
|
|
`cursor-shape-v1` Wayland protocols ([#1573][1573]).
|
2024-01-10 16:41:03 +01:00
|
|
|
* Crash in `--server` mode when one or more environment variables are
|
|
|
|
|
set in `[environment]`.
|
slave: don't skip setting environment variables when using a custom environment
When launching footclient with -E,--client-environment the environment
variables that should be set by foot, wasn't.
Those variables are:
* TERM
* COLORTERM
* PWD
* SHELL
and all variables defined by the user in the [environment] section in
foot.ini.
In the same way, we did not *unset* TERM_PROGRAM and
TERM_PROGRAM_VERSION.
This patch fixes it by "cloning" the custom environment, making it
mutable, and then adding/removing the variables above from it.
Instead of calling setenv()/unsetenv() directly, we add the wrapper
functions add_to_env() and del_from_env().
When *not* using a custom environment, they simply call
setenv()/unsetenv().
When we *are* using a custom environment, add_to_env() first loops all
existing variables, looking for a match. If a match is found, it's
updated with the new value. If it's not found, a new entry is added.
del_from_env() loops all entries, and removes it when a match is
found. If no match is found, nothing is done.
The mutable environment is allocated on the heap, but never free:d. We
don't need to free it, since it's only allocated after forking, in the
child process.
Closes #1568
2024-01-09 16:50:47 +01:00
|
|
|
* Environment variables normally set by foot lost with `footclient
|
|
|
|
|
-E,--client-environment` ([#1568][1568]).
|
2024-02-06 13:08:43 +01:00
|
|
|
* XDG toplevel protocol violation, by trying to set a title that
|
|
|
|
|
contains an invalid UTF-8 sequence ([#1552][1552]).
|
2024-02-15 16:29:02 +01:00
|
|
|
* Crash when erasing the scrollback, when scrollback history is
|
|
|
|
|
exactly 0 rows. This happens when `[scrollback].line = 0`, and the
|
|
|
|
|
window size (number of rows) is a power of two (i.e. 2, 4, 8, 16
|
|
|
|
|
etc) ([#1610][1610]).
|
2024-02-08 17:09:27 +01:00
|
|
|
* VS16 (variation selector 16 - emoji representation) should only
|
|
|
|
|
affect emojis.
|
2024-02-23 17:48:01 +01:00
|
|
|
* Pressing a modifier key while the kitty keyboard protocol is enabled
|
|
|
|
|
no longer resets the viewport, or clears the selection.
|
2024-02-29 07:49:08 +01:00
|
|
|
* Crash when failing to load an xcursor image ([#1624][1624]).
|
2024-03-04 16:29:04 +01:00
|
|
|
* Crash when resizing a dynamically sized sixel (no raster
|
|
|
|
|
attributes), with a non-1:1 aspect ratio.
|
2024-03-15 15:19:43 +01:00
|
|
|
* The default sixel color table is now initialized to the colors used
|
|
|
|
|
by the VT340, instead of not being initialized at all (thus
|
|
|
|
|
requiring the sixel escape sequence to explicitly set all colors it
|
|
|
|
|
used).
|
2023-10-27 16:23:57 +02:00
|
|
|
|
|
|
|
|
[1531]: https://codeberg.org/dnkl/foot/issues/1531
|
2024-01-09 16:47:41 +01:00
|
|
|
[1573]: https://codeberg.org/dnkl/foot/issues/1573
|
slave: don't skip setting environment variables when using a custom environment
When launching footclient with -E,--client-environment the environment
variables that should be set by foot, wasn't.
Those variables are:
* TERM
* COLORTERM
* PWD
* SHELL
and all variables defined by the user in the [environment] section in
foot.ini.
In the same way, we did not *unset* TERM_PROGRAM and
TERM_PROGRAM_VERSION.
This patch fixes it by "cloning" the custom environment, making it
mutable, and then adding/removing the variables above from it.
Instead of calling setenv()/unsetenv() directly, we add the wrapper
functions add_to_env() and del_from_env().
When *not* using a custom environment, they simply call
setenv()/unsetenv().
When we *are* using a custom environment, add_to_env() first loops all
existing variables, looking for a match. If a match is found, it's
updated with the new value. If it's not found, a new entry is added.
del_from_env() loops all entries, and removes it when a match is
found. If no match is found, nothing is done.
The mutable environment is allocated on the heap, but never free:d. We
don't need to free it, since it's only allocated after forking, in the
child process.
Closes #1568
2024-01-09 16:50:47 +01:00
|
|
|
[1568]: https://codeberg.org/dnkl/foot/issues/1568
|
2024-02-06 13:08:43 +01:00
|
|
|
[1552]: https://codeberg.org/dnkl/foot/issues/1552
|
2024-02-15 16:29:02 +01:00
|
|
|
[1610]: https://codeberg.org/dnkl/foot/issues/1610
|
2024-02-29 07:49:08 +01:00
|
|
|
[1624]: https://codeberg.org/dnkl/foot/issues/1624
|
2023-10-26 16:22:41 +02:00
|
|
|
|
|
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2024-04-02 16:27:25 +02:00
|
|
|
* Alyssa Ross
|
|
|
|
|
* Andrew J. Hesford
|
|
|
|
|
* Artturin
|
|
|
|
|
* Craig Barnes
|
|
|
|
|
* delthas
|
|
|
|
|
* eugenrh
|
|
|
|
|
* Fazzi
|
|
|
|
|
* Gregory Anders
|
|
|
|
|
* Jan Palus
|
|
|
|
|
* Leonardo Hernández Hernández
|
|
|
|
|
* LmbMaxim
|
|
|
|
|
* Matheus Afonso Martins Moreira
|
|
|
|
|
* Sivecano
|
|
|
|
|
* Tim Culverhouse
|
|
|
|
|
* xnuk
|
|
|
|
|
|
2023-10-17 17:25:47 +02:00
|
|
|
|
2023-10-17 17:24:00 +02:00
|
|
|
## 1.16.2
|
|
|
|
|
|
2023-10-12 20:36:28 +02:00
|
|
|
### Fixed
|
2023-10-13 18:44:44 +02:00
|
|
|
|
|
|
|
|
* Last row and/or column of opaque sixels (not having a size that is a
|
|
|
|
|
multiple of the cell size) being the wrong color ([#1520][1520]).
|
|
|
|
|
|
|
|
|
|
[1520]: https://codeberg.org/dnkl/foot/issues/1520
|
|
|
|
|
|
|
|
|
|
|
2023-10-12 16:36:07 +02:00
|
|
|
## 1.16.1
|
|
|
|
|
|
2023-10-11 18:19:31 +02:00
|
|
|
### Fixed
|
2023-10-12 16:24:15 +02:00
|
|
|
|
2023-10-12 16:16:11 +02:00
|
|
|
* Foot not starting on linux kernels before 6.3 ([#1514][1514]).
|
2023-10-12 16:24:15 +02:00
|
|
|
* Cells underneath erased sixels not being repainted ([#1515][1515]).
|
2023-10-12 16:16:11 +02:00
|
|
|
|
|
|
|
|
[1514]: https://codeberg.org/dnkl/foot/issues/1514
|
2023-10-12 16:24:15 +02:00
|
|
|
[1515]: https://codeberg.org/dnkl/foot/issues/1515
|
2023-10-12 16:16:11 +02:00
|
|
|
|
|
|
|
|
|
2023-10-11 18:14:40 +02:00
|
|
|
## 1.16.0
|
|
|
|
|
|
2023-07-30 13:27:42 +02:00
|
|
|
### Added
|
2023-08-08 19:32:45 +02:00
|
|
|
|
|
|
|
|
* Support for building with _wayland-protocols_ as a subproject.
|
2023-09-18 16:36:39 +02:00
|
|
|
* Mouse wheel scrolls can now be used in `mouse-bindings`
|
2023-10-11 18:39:43 +02:00
|
|
|
([#1077][1077]).
|
2023-09-18 16:36:39 +02:00
|
|
|
* New mouse bindings: `scrollback-up-mouse` and
|
|
|
|
|
`scrollback-down-mouse`, bound to `BTN_BACK` and `BTN_FORWARD`
|
|
|
|
|
respectively.
|
selection: add support for selecting the contents of a quote
This patch changes the default of triple clicking, from selecting the
current logical row, to first trying to select the contents of the
quote under the cursor, and if failing to find a quote, selecting the
current row (like before).
This is implemented by adding a new key binding, 'select-quote'.
It will search for surrounding quote characters, and if one is found
on each side of the cursor, the quote is selected. If not, the entire
row is selected instead.
Subsequent selection operations will behave as if the selection is
either a word selection (a quote was found), or a row selection (no
quote found).
Escaped quote characters are not supported: "foo \" bar" will match
'foo \', and not 'foo " bar'.
Mismatched quotes are not custom handled. They will simply not match.
Nested quotes ("123 'abc def' 456") are supported.
Closes #1364
2023-09-19 16:23:34 +02:00
|
|
|
* New key binding: `select-quote`. This key binding selects text
|
|
|
|
|
between quote characters, and falls back to selecting the entire
|
|
|
|
|
row ([#1364][1364]).
|
2023-09-20 13:45:06 +02:00
|
|
|
* Support for DECSET/DECRST/DECRQM 2027 (_Grapheme cluster
|
|
|
|
|
processing_).
|
2023-10-11 18:12:18 +02:00
|
|
|
* New **search mode** key bindings (along with their defaults)
|
2023-09-26 17:54:03 +02:00
|
|
|
([#419][419]):
|
|
|
|
|
- `extend-char` (shift+right)
|
|
|
|
|
- `extend-line-down` (shift+down)
|
|
|
|
|
- `extend-backward-char` (shift+left)
|
|
|
|
|
- `extend-backward-to-word-boundary` (ctrl+shift+left)
|
2023-10-08 10:39:57 +02:00
|
|
|
- `extend-backward-to-next-whitespace` (none)
|
2023-09-26 17:54:03 +02:00
|
|
|
- `extend-line-up` (shift+up)
|
|
|
|
|
- `scrollback-up-page` (shift+page-up)
|
2023-10-08 10:39:57 +02:00
|
|
|
- `scrollback-up-half-page` (none)
|
|
|
|
|
- `scrollback-up-line` (none)
|
2023-09-26 17:54:03 +02:00
|
|
|
- `scrollback-down-page` (shift+page-down)
|
2023-10-08 10:39:57 +02:00
|
|
|
- `scrollback-down-half-page` (none)
|
|
|
|
|
- `scrollback-down-line` (none)
|
2023-10-07 19:37:04 +02:00
|
|
|
* Support for visual bell which flashes the terminal window.
|
2023-10-10 08:14:43 +02:00
|
|
|
([#1337][1337]).
|
2023-09-18 16:36:39 +02:00
|
|
|
|
|
|
|
|
[1077]: https://codeberg.org/dnkl/foot/issues/1077
|
selection: add support for selecting the contents of a quote
This patch changes the default of triple clicking, from selecting the
current logical row, to first trying to select the contents of the
quote under the cursor, and if failing to find a quote, selecting the
current row (like before).
This is implemented by adding a new key binding, 'select-quote'.
It will search for surrounding quote characters, and if one is found
on each side of the cursor, the quote is selected. If not, the entire
row is selected instead.
Subsequent selection operations will behave as if the selection is
either a word selection (a quote was found), or a row selection (no
quote found).
Escaped quote characters are not supported: "foo \" bar" will match
'foo \', and not 'foo " bar'.
Mismatched quotes are not custom handled. They will simply not match.
Nested quotes ("123 'abc def' 456") are supported.
Closes #1364
2023-09-19 16:23:34 +02:00
|
|
|
[1364]: https://codeberg.org/dnkl/foot/issues/1364
|
2023-09-26 17:54:03 +02:00
|
|
|
[419]: https://codeberg.org/dnkl/foot/issues/419
|
2023-10-10 08:14:43 +02:00
|
|
|
[1337]: https://codeberg.org/dnkl/foot/issues/1337
|
2023-08-08 19:32:45 +02:00
|
|
|
|
|
|
|
|
|
2023-07-30 13:27:42 +02:00
|
|
|
### Changed
|
2023-07-31 16:32:06 +02:00
|
|
|
|
|
|
|
|
* Minimum required version of _wayland-protocols_ is now 1.32
|
|
|
|
|
([#1391][1391]).
|
2023-07-29 20:54:59 +02:00
|
|
|
* `foot-server.service` systemd now checks for
|
|
|
|
|
`ConditionEnvironment=WAYLAND_DISPLAY` for consistency with the
|
|
|
|
|
socket unit ([#1448][1448])
|
selection: add support for selecting the contents of a quote
This patch changes the default of triple clicking, from selecting the
current logical row, to first trying to select the contents of the
quote under the cursor, and if failing to find a quote, selecting the
current row (like before).
This is implemented by adding a new key binding, 'select-quote'.
It will search for surrounding quote characters, and if one is found
on each side of the cursor, the quote is selected. If not, the entire
row is selected instead.
Subsequent selection operations will behave as if the selection is
either a word selection (a quote was found), or a row selection (no
quote found).
Escaped quote characters are not supported: "foo \" bar" will match
'foo \', and not 'foo " bar'.
Mismatched quotes are not custom handled. They will simply not match.
Nested quotes ("123 'abc def' 456") are supported.
Closes #1364
2023-09-19 16:23:34 +02:00
|
|
|
* Default key binding for `select-row` is now `BTN_LEFT+4`. However,
|
|
|
|
|
in many cases, triple clicking will still be enough to select the
|
|
|
|
|
entire row; see the new key binding `select-quote` (mapped to
|
|
|
|
|
`BTN_LEFT+3` by default) ([#1364][1364]).
|
2023-09-20 15:29:35 +02:00
|
|
|
* `file://` prefix from URI's are no longer stripped when
|
|
|
|
|
opened/activated ([#1474][1474]).
|
2023-09-25 16:37:32 +02:00
|
|
|
* `XTGETTCAP` with capabilities that are not properly hex encoded will
|
|
|
|
|
be ignored, instead of echo:ed back to the TTY in an error response.
|
2023-09-22 08:23:38 +00:00
|
|
|
* Command line configuration overrides are now applied even if the
|
|
|
|
|
configuration file does not exist or can't be
|
|
|
|
|
parsed. ([#1495][1495]).
|
2023-10-07 16:23:09 +02:00
|
|
|
* Wayland surface damage is now more fine-grained. This should result
|
|
|
|
|
in lower latencies in many use cases, especially on high DPI
|
|
|
|
|
monitors.
|
2023-07-31 16:32:06 +02:00
|
|
|
|
|
|
|
|
[1391]: https://codeberg.org/dnkl/foot/issues/1391
|
2023-07-29 20:54:59 +02:00
|
|
|
[1448]: https://codeberg.org/dnkl/foot/pulls/1448
|
2023-09-20 15:29:35 +02:00
|
|
|
[1474]: https://codeberg.org/dnkl/foot/pulls/1474
|
2023-09-22 08:23:38 +00:00
|
|
|
[1495]: https://codeberg.org/dnkl/foot/pulls/1495
|
2023-07-31 16:32:06 +02:00
|
|
|
|
|
|
|
|
|
2023-07-30 13:27:42 +02:00
|
|
|
### Removed
|
2023-07-31 16:28:07 +02:00
|
|
|
|
2023-08-05 07:25:36 +02:00
|
|
|
* `utempter` config option (was deprecated in 1.15.0).
|
2023-07-31 16:28:07 +02:00
|
|
|
|
|
|
|
|
|
2023-08-07 16:44:24 +02:00
|
|
|
### Fixed
|
2023-07-29 20:54:59 +02:00
|
|
|
|
|
|
|
|
* Race condition for systemd units start in GNOME and KDE
|
|
|
|
|
([#1436][1436]).
|
term: improve fallback logic when selecting scaling factor while unmapped
The foot window may, for various reasons, become completely
unmapped (that is, being removed from all outputs) at run time.
One example is wlroots based compositors; they unmap all other windows
when an opaque window is fullscreened.
21d99f8dced335826964ca96b8ba7ccac059e598 introduced a regression,
where instead of picking the scaling factor from one of the available
outputs (at random), we started falling back to '1' as soon as we were
unmapped.
This patch restores the original logic, but also improves upon it.
As soon as a scaling factor has been assigned to the window, we store
a copy of it in the term struct ('scale_before_unmap').
When unmapped, we check if it has a valid value (the only time it
doesn't is before the initial map). If so, we use it.
Only if it hasn't been set do we fall back to picking an output at
random, and using its scaling factor.
Closes #1464
2023-08-18 16:39:00 +02:00
|
|
|
* One frame being rendered at the wrong scale after being hidden by
|
|
|
|
|
another opaque, maximized window ([#1464][1464]).
|
2023-08-21 16:26:18 +02:00
|
|
|
* Double-width characters, and grapheme clusters breaking URL
|
|
|
|
|
auto-detection ([#1465][1465]).
|
2023-09-21 18:31:46 +02:00
|
|
|
* Crash when `XDG_ACTIVATION_TOKEN` is set, but compositor does not
|
|
|
|
|
support XDG activation ([#1493][1493]).
|
2023-10-01 09:20:13 +02:00
|
|
|
* Crash when compositor calls `fractional_scale::preferred_scale()`
|
|
|
|
|
when there are no monitors (for example, after a monitor has been
|
|
|
|
|
turned off and then back on again) ([#1498][1498]).
|
2023-10-07 07:58:55 +02:00
|
|
|
* Transparency in margins (padding) not being disabled in fullscreen
|
|
|
|
|
mode ([#1503][1503]).
|
2023-09-26 17:54:03 +02:00
|
|
|
* Crash when a scrollback search match is in the last column.
|
|
|
|
|
* Scrollback search: grapheme clusters not matching correctly.
|
2023-10-10 10:55:26 +02:00
|
|
|
* Wrong baseline offset for some fonts ([#1511][1511]).
|
2023-07-29 20:54:59 +02:00
|
|
|
|
|
|
|
|
[1436]: https://codeberg.org/dnkl/foot/issues/1436
|
term: improve fallback logic when selecting scaling factor while unmapped
The foot window may, for various reasons, become completely
unmapped (that is, being removed from all outputs) at run time.
One example is wlroots based compositors; they unmap all other windows
when an opaque window is fullscreened.
21d99f8dced335826964ca96b8ba7ccac059e598 introduced a regression,
where instead of picking the scaling factor from one of the available
outputs (at random), we started falling back to '1' as soon as we were
unmapped.
This patch restores the original logic, but also improves upon it.
As soon as a scaling factor has been assigned to the window, we store
a copy of it in the term struct ('scale_before_unmap').
When unmapped, we check if it has a valid value (the only time it
doesn't is before the initial map). If so, we use it.
Only if it hasn't been set do we fall back to picking an output at
random, and using its scaling factor.
Closes #1464
2023-08-18 16:39:00 +02:00
|
|
|
[1464]: https://codeberg.org/dnkl/foot/issues/1464
|
2023-08-21 16:26:18 +02:00
|
|
|
[1465]: https://codeberg.org/dnkl/foot/issues/1465
|
2023-09-21 18:31:46 +02:00
|
|
|
[1493]: https://codeberg.org/dnkl/foot/pulls/1493
|
2023-10-01 09:20:13 +02:00
|
|
|
[1498]: https://codeberg.org/dnkl/foot/issues/1498
|
2023-10-07 07:58:55 +02:00
|
|
|
[1503]: https://codeberg.org/dnkl/foot/issues/1503
|
2023-10-10 10:55:26 +02:00
|
|
|
[1511]: https://codeberg.org/dnkl/foot/issues/1511
|
2023-07-29 20:54:59 +02:00
|
|
|
|
2023-08-07 16:44:24 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2023-10-11 18:14:40 +02:00
|
|
|
* 6t8k
|
|
|
|
|
* Alyssa Ross
|
|
|
|
|
* CismonX
|
|
|
|
|
* Max Gautier
|
|
|
|
|
* raggedmyth
|
|
|
|
|
* Raimund Sacherer
|
|
|
|
|
* Sertonix
|
|
|
|
|
|
2023-08-07 16:44:24 +02:00
|
|
|
|
2023-08-07 16:39:42 +02:00
|
|
|
## 1.15.3
|
|
|
|
|
|
2023-07-30 13:27:42 +02:00
|
|
|
### Fixed
|
2023-07-31 16:26:17 +02:00
|
|
|
|
|
|
|
|
* `-f,--font` command line option not affecting `csd.font` (if unset).
|
2023-07-31 16:29:08 +02:00
|
|
|
* Vertical alignment in URL jump labels, and the scrollback position
|
|
|
|
|
indicator. The fix in 1.15.2 was incorrect, and was reverted in the
|
|
|
|
|
last minute. But we forgot to remove the entry from the changelog
|
|
|
|
|
([#1430][1430]).
|
2023-07-31 16:26:17 +02:00
|
|
|
|
|
|
|
|
|
2023-07-30 13:18:41 +02:00
|
|
|
## 1.15.2
|
|
|
|
|
|
2023-07-21 09:00:57 +02:00
|
|
|
### Added
|
2023-07-26 16:12:36 +02:00
|
|
|
|
|
|
|
|
* `[tweak].bold-text-in-bright-amount` option ([#1434][1434]).
|
2023-07-26 16:14:38 +02:00
|
|
|
* `-Dterminfo-base-name` meson option, allowing you to name the
|
|
|
|
|
terminfo files to something other than `-Ddefault-terminfo`. Use
|
|
|
|
|
case: have foot default to using the terminfo from ncurses (`foot`,
|
|
|
|
|
`foot-direct`), while still packaging foot's terminfo files, but
|
|
|
|
|
under a different name (e.g. `foot-extra`, `foot-extra-direct`).
|
2023-07-26 16:12:36 +02:00
|
|
|
|
|
|
|
|
[1434]: https://codeberg.org/dnkl/foot/issues/1434
|
|
|
|
|
|
|
|
|
|
|
2023-07-21 09:00:57 +02:00
|
|
|
### Fixed
|
2023-07-22 11:23:22 +02:00
|
|
|
|
|
|
|
|
* Crash when copying text that contains invalid UTF-8 ([#1423][1423]).
|
2023-07-23 20:03:31 +02:00
|
|
|
* Wrong font size after suspending the monitor ([#1431][1431]).
|
2023-07-23 17:35:57 +02:00
|
|
|
* Vertical alignment in URL jump labels, and the scrollback position
|
|
|
|
|
indicator ([#1430][1430]).
|
|
|
|
|
* Regression: line- and box drawing characters not covering the full
|
|
|
|
|
height of the line, when a custom `line-height` is being used
|
|
|
|
|
([#1430][1430]).
|
2023-07-28 15:32:42 +02:00
|
|
|
* Crash when compositor does not implement the _viewporter_ interface
|
|
|
|
|
([#1444][1444]).
|
2023-07-29 09:09:59 +02:00
|
|
|
* CSD rendering with fractional scaling ([#1441][1441]).
|
2023-07-30 07:53:33 +02:00
|
|
|
* Regression: crash with certain combinations of
|
|
|
|
|
`--window-size-chars=NxM` and desktop scaling factors
|
|
|
|
|
([#1446][1446]).
|
2023-07-22 11:23:22 +02:00
|
|
|
|
|
|
|
|
[1423]: https://codeberg.org/dnkl/foot/issues/1423
|
2023-07-23 20:03:31 +02:00
|
|
|
[1431]: https://codeberg.org/dnkl/foot/issues/1431
|
2023-07-23 17:35:57 +02:00
|
|
|
[1430]: https://codeberg.org/dnkl/foot/issues/1430
|
2023-07-28 15:32:42 +02:00
|
|
|
[1444]: https://codeberg.org/dnkl/foot/issues/1444
|
2023-07-29 09:09:59 +02:00
|
|
|
[1441]: https://codeberg.org/dnkl/foot/issues/1441
|
2023-07-30 07:53:33 +02:00
|
|
|
[1446]: https://codeberg.org/dnkl/foot/issues/1446
|
2023-07-22 11:23:22 +02:00
|
|
|
|
|
|
|
|
|
2023-07-21 08:56:49 +02:00
|
|
|
## 1.15.1
|
|
|
|
|
|
2023-07-14 12:40:55 +02:00
|
|
|
### Changed
|
2023-07-17 16:31:37 +02:00
|
|
|
|
|
|
|
|
* When window is mapped, use metadata (DPI, scaling factor, subpixel
|
|
|
|
|
configuration) from the monitor we were most recently mapped on,
|
|
|
|
|
instead of the one least recently.
|
2023-07-18 16:18:53 +02:00
|
|
|
* Starlight theme (the default theme) updated to [V4][starlight-v4]
|
2023-07-19 16:34:42 +02:00
|
|
|
* Background transparency (alpha) is now disabled in fullscreened
|
|
|
|
|
windows ([#1416][1416]).
|
2023-02-14 12:04:26 +01:00
|
|
|
* Foot server systemd units now use the standard
|
|
|
|
|
graphical-session.target ([#1281][1281]).
|
|
|
|
|
* If `$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock` does not exist,
|
|
|
|
|
`footclient` now tries `$XDG_RUNTIME_DIR/foot.sock`, then
|
|
|
|
|
`/tmp/foot.sock`, even if `$WAYLAND_DISPLAY` and/or
|
|
|
|
|
`$XDG_RUNTIME_DIR` are defined ([#1281][1281]).
|
2023-07-21 08:17:32 +02:00
|
|
|
* Font baseline calculation: try to center the text within the line,
|
|
|
|
|
instead of anchoring it at the top ([#1302][1302]).
|
2023-07-18 16:18:53 +02:00
|
|
|
|
|
|
|
|
[starlight-v4]: https://github.com/CosmicToast/starlight/blob/v4/CHANGELOG.md#v4
|
2023-07-19 16:34:42 +02:00
|
|
|
[1416]: https://codeberg.org/dnkl/foot/issues/1416
|
2023-02-14 12:04:26 +01:00
|
|
|
[1281]: https://codeberg.org/dnkl/foot/pulls/1281
|
2023-07-21 08:17:32 +02:00
|
|
|
[1302]: https://codeberg.org/dnkl/foot/issues/1302
|
2023-07-17 16:31:37 +02:00
|
|
|
|
|
|
|
|
|
2023-07-14 12:40:55 +02:00
|
|
|
### Fixed
|
2023-07-14 16:53:50 -07:00
|
|
|
|
|
|
|
|
* Use appropriate rounding when applying fractional scales.
|
2023-07-17 20:08:34 +02:00
|
|
|
* Xcursor not being scaled correctly on `fractional-scale-v1` capable
|
|
|
|
|
compositors.
|
2023-07-17 16:31:54 +02:00
|
|
|
* `dpi-aware=yes` being broken on `fractional-scale-v1` capable
|
2023-07-19 16:37:25 +02:00
|
|
|
compositors (and when a fractional scaling factor is being used)
|
2023-07-17 16:31:54 +02:00
|
|
|
([#1404][1404]).
|
|
|
|
|
* Initial font size being wrong on `fractional-scale-v1` capable
|
|
|
|
|
compositors, with multiple monitors with different scaling factors
|
|
|
|
|
connected ([#1404][1404]).
|
2023-07-18 16:12:43 +02:00
|
|
|
* Crash when _pointer capability_ is removed from a seat, on
|
|
|
|
|
compositors without `cursor-shape-v1 support` ([#1411][1411]).
|
2023-07-18 16:13:36 +02:00
|
|
|
* Crash on exit, if the mouse is hovering over the foot window (does
|
|
|
|
|
not happen on all compositors)
|
2023-07-19 16:39:56 +02:00
|
|
|
* Visual glitches when CSD titlebar is transparent.
|
2023-07-17 16:31:54 +02:00
|
|
|
|
|
|
|
|
[1404]: https://codeberg.org/dnkl/foot/issues/1404
|
2023-07-18 16:12:43 +02:00
|
|
|
[1411]: https://codeberg.org/dnkl/foot/pulls/1411
|
2023-07-17 20:08:34 +02:00
|
|
|
|
2023-07-14 16:53:50 -07:00
|
|
|
|
2023-07-14 12:40:55 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2023-07-21 08:56:49 +02:00
|
|
|
* Ayush Agarwal
|
|
|
|
|
* CismonX
|
|
|
|
|
* Max Gautier
|
|
|
|
|
* Ronan Pigott
|
|
|
|
|
* xdavidwu
|
|
|
|
|
|
2023-07-14 12:40:55 +02:00
|
|
|
|
2023-07-14 12:25:16 +02:00
|
|
|
## 1.15.0
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Added
|
2023-04-26 18:30:09 +02:00
|
|
|
|
|
|
|
|
* VT: implemented `XTQMODKEYS` query (`CSI ? Pp m`).
|
2023-05-17 20:51:40 +02:00
|
|
|
* Meson option `utmp-backend=none|libutempter|ulog|auto`. The default
|
|
|
|
|
is `auto`, which will select `libutempter` on Linux, `ulog` on
|
|
|
|
|
FreeBSD, and `none` for all others.
|
2023-06-19 19:06:38 +02:00
|
|
|
* Sixel aspect ratio.
|
2023-07-04 08:38:07 +02:00
|
|
|
* Support for the new `fractional-scale-v1` Wayland protocol. This
|
2023-06-26 17:34:20 +02:00
|
|
|
brings true fractional scaling to Wayland in general, and with this
|
2023-07-04 08:38:07 +02:00
|
|
|
release, to foot.
|
2023-06-27 17:25:57 +02:00
|
|
|
* Support for the new `cursor-shape-v1` Wayland protocol, i.e. server
|
|
|
|
|
side cursor shapes ([#1379][1379]).
|
2023-07-05 00:19:21 +08:00
|
|
|
* Support for touchscreen input ([#517][517]).
|
2023-07-14 12:03:35 +02:00
|
|
|
* `csd.double-click-to-maximize` option to `foot.ini`. Defaults to
|
|
|
|
|
`yes` ([#1293][1293]).
|
2023-06-27 17:25:57 +02:00
|
|
|
|
|
|
|
|
[1379]: https://codeberg.org/dnkl/foot/issues/1379
|
2023-07-05 00:19:21 +08:00
|
|
|
[517]: https://codeberg.org/dnkl/foot/issues/517
|
2023-07-14 12:03:35 +02:00
|
|
|
[1293]: https://codeberg.org/dnkl/foot/issues/1293
|
2023-04-26 18:30:09 +02:00
|
|
|
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Changed
|
2023-04-26 18:28:07 +02:00
|
|
|
|
2023-07-14 10:11:30 +02:00
|
|
|
* Default color theme is now
|
|
|
|
|
[starlight](https://github.com/CosmicToast/starlight)
|
|
|
|
|
([#1321][1321]).
|
2023-06-14 12:26:19 +00:00
|
|
|
* Minimum required meson version is now 0.59 ([#1371][1371]).
|
2023-07-10 12:42:10 +02:00
|
|
|
* `Control+Shift+u` is now bound to `unicode-input` instead of
|
|
|
|
|
`show-urls-launch`, to follow the convention established in GTK and
|
|
|
|
|
Qt ([#1183][1183]).
|
|
|
|
|
* `show-urls-launch` now bound to `Control+Shift+o` ([#1183][1183]).
|
2023-04-26 18:28:07 +02:00
|
|
|
* Kitty keyboard protocol: F3 is now encoded as `CSI 13~` instead of
|
|
|
|
|
`CSI R`. The kitty keyboard protocol originally allowed F3 to be
|
|
|
|
|
encoded as `CSI R`, but this was removed from the specification
|
2024-02-06 12:36:45 +01:00
|
|
|
since `CSI R` conflicts with the _"Cursor Position Report"_.
|
2023-05-17 20:51:40 +02:00
|
|
|
* `[main].utempter` renamed to `[main].utmp-helper`. The old option
|
|
|
|
|
name is still recognized, but will log a deprecation warning.
|
|
|
|
|
* Meson option `default-utempter-path` renamed to
|
|
|
|
|
`utmp-default-helper-path`.
|
2023-05-31 16:27:48 +02:00
|
|
|
* Opaque sixels now retain the background opacity (when current
|
|
|
|
|
background color is the **default** background color)
|
|
|
|
|
([#1360][1360]).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Text cursor's vertical position after emitting a sixel, when sixel
|
2023-06-16 16:20:37 +02:00
|
|
|
scrolling is **enabled** (the default) has been updated to match
|
2024-02-06 12:36:45 +01:00
|
|
|
XTerm's, and the VT382's behavior: the cursor is positioned **on**
|
2023-06-16 16:20:37 +02:00
|
|
|
the last sixel row, rather than _after_ it. This allows printing
|
|
|
|
|
sixels on the last row without scrolling up, but also means
|
|
|
|
|
applications may have to explicitly emit a newline to ensure the
|
|
|
|
|
sixel is visible. For example, `cat`:ing a sixel in the shell will
|
|
|
|
|
typically result in the last row not being visible, unless a newline
|
|
|
|
|
is explicitly added.
|
2023-06-19 19:06:38 +02:00
|
|
|
* Default sixel aspect ratio is now 2:1 instead of 1:1.
|
2023-06-19 19:09:58 +02:00
|
|
|
* Sixel images are no longer cropped to the last non-transparent row.
|
2023-06-29 14:49:54 +02:00
|
|
|
* Sixel images are now re-scaled when the font size is changed
|
|
|
|
|
([#1383][1383]).
|
2023-06-26 17:55:59 +02:00
|
|
|
* `dpi-aware` now defaults to `no`, and the `auto` value has been
|
|
|
|
|
removed.
|
2023-07-14 09:51:06 +02:00
|
|
|
* When using custom cursor colors (`cursor.color` is set in
|
|
|
|
|
`foot.ini`), the cursor is no longer inverted when the cell is
|
|
|
|
|
selected, or when the cell has the `reverse` (SGR 7) attribute set
|
|
|
|
|
([#1347][1347]).
|
2023-06-19 19:06:38 +02:00
|
|
|
|
2023-07-14 10:11:30 +02:00
|
|
|
[1321]: https://codeberg.org/dnkl/foot/issues/1321
|
2023-06-14 12:26:19 +00:00
|
|
|
[1371]: https://codeberg.org/dnkl/foot/pulls/1371
|
bind control-shift-u to unicode-input, move urls to o
Having a keybinding to invoke arbitrary unicode characters is very
useful. It's often used as a method of last resort to communicate with
people outside of your main language. For example, if you want to type
the last letter of my real name, you can invoke the latin-1 character
0xe9 or unicode 0x00e9.
You can also use this to type special characters, for example, unicode
U+1F4A9 is of course, the infamous PILE OF POO, which is sure to
produce million laughs everywhere you go.
In foot, there's no keybinding by default to invoke the very useful
unicode-input command. There is no "standard" (as in "ISO") keybinding
this either. But there *is* a de-facto standard currently deployed
by *both* GTK and Qt (a rare feat) *and* Chrome OS (an even rarer
feat) and it's control-shift-u.
Alternatives include Control-x 8 (emacs), Control V u (vim),
Alt (Windows, LibreOffice), or Option (Mac). I doubt we want to adopt
any of those.
So let's use control-shift-u for this. Unfortunately, it's currently
assigned to show-urls-launch, which is unfortunate, but
insurmountable. We can reassign this keybinding elsewhere. I have
picked control-shift-o in my configuration, because "o" is a good
mnemonic for "open URLs". Others have suggested "m" instead.
Closes: #1183
2022-12-15 11:49:51 -05:00
|
|
|
[1183]: https://codeberg.org/dnkl/foot/issues/1183
|
2023-05-31 16:27:48 +02:00
|
|
|
[1360]: https://codeberg.org/dnkl/foot/issues/1360
|
2023-06-29 14:49:54 +02:00
|
|
|
[1383]: https://codeberg.org/dnkl/foot/issues/1383
|
2023-07-14 09:51:06 +02:00
|
|
|
[1347]: https://codeberg.org/dnkl/foot/issues/1347
|
2023-05-31 16:27:48 +02:00
|
|
|
|
2023-04-26 18:28:07 +02:00
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Deprecated
|
2023-05-17 20:51:40 +02:00
|
|
|
|
|
|
|
|
* `[main].utempter` option.
|
|
|
|
|
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Removed
|
2023-06-26 17:55:59 +02:00
|
|
|
|
|
|
|
|
* `auto` value for the `dpi-aware` option.
|
|
|
|
|
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Fixed
|
2023-04-05 14:39:02 +02:00
|
|
|
|
|
|
|
|
* Incorrect icon in dock and window switcher on Gnome ([#1317][1317])
|
2023-04-12 16:39:54 +02:00
|
|
|
* Crash when scrolling after resizing the window with non-zero
|
|
|
|
|
scrolling regions.
|
2023-05-12 09:42:35 +02:00
|
|
|
* `XTMODKEYS` state not being reset on a terminal reset.
|
2023-05-02 01:53:01 +10:00
|
|
|
* In Gnome dock foot always groups under "foot client". Change
|
|
|
|
|
instances of footclient and foot to appear as "foot client" and
|
osc: update font subpixel mode, and window opaque compositor hint, on alpha changes
When background alpha is changed at runtime (using OSC-11), we (may)
have to update the opaque hint we send to the compositor.
We must also update the subpixel mode used when rendering font
glyphs.
Why?
When the window is fully opaque, we use wl_surface_set_opaque_region()
on the entire surface, to hint to the compositor that it doesn’t have
to blend the window content with whatever is behind the
window. Obviously, if alpha is changed from opaque, to transparent (or
semi-transparent), that hint must be removed.
Sub-pixel mode is harder to explain, but in short, we can’t do
subpixel hinting with a (semi-)transparent background. Thus, similar
to the opaque hint, subpixel antialiasing must be enabled/disabled
when background alpha is changed.
2023-05-25 18:39:32 +02:00
|
|
|
"foot" respectively. ([#1355][1355]).
|
|
|
|
|
* Glitchy rendering when alpha (transparency) is changed between
|
|
|
|
|
opaque and non-opaque at runtime (using OSC-11).
|
2023-06-20 15:59:16 +02:00
|
|
|
* Regression: crash when resizing the window when `resize-delay-ms >
|
|
|
|
|
0` ([#1377][1377]).
|
term: scroll: only record scroll damage when viewport is at the bottom
We don’t need to record scroll damage if the viewport isn’t at the
bottom, since in this case, the renderer ignores the scroll damage
anyway.
This fixes a performance corner case, when the viewport is at the top
of the scrollback history.
When application scrolls the terminal contents, and the scrollback
history is full, and the viewport is at top of the history, then the
viewport needs to be moved (the scrollback history is a circular
buffer, and thus the top of the history “moves” when we’re scrolling
in new contents).
Moving the viewport typically results in another type of scroll
damage (DAMAGE_SCROLL_IN_VIEW, instead of the “normal” DAMAGE_SCROLL).
Thus, each application triggered scroll, will result in two scroll
damage records: one DAMAGE_SCROLL, and one
DAMAGE_SCROLL_IN_VIEW. These two are incompatible, meaning they can’t
be merged. What’s worse, it also means the DAMAGE_SCROLL records from
two application triggered scrolls cannot be merged (since there’s a
DAMAGE_SCROLL_IN_VIEW in between).
As a result, the renderer will not see one, or “a few” scroll damage
events, but a *ton*. _Each_ one typically a single line, or so. And
each one resulting in lots of traffic on the wayland socket, as we
create and destroy new buffer pools, when doing “shm scrolling”.
This eventually leads to the socket not being able to keep up, and the
socket is closed on us, forcing us to exit.
The fix is really simple: don’t record “normal” scroll damage when
scrolling, _unless_ the viewport is at the bottom (and thus “follows”
the application output).
As soon as the user scrolls up in the history, we’ll stop emitting
normal scroll damage records. This is just fine, since, as mentioned
above, the renderer ignores them when the viewport isn’t at the
bottom.
What if the viewport is moved back down again, before the next frame
has been rendered? Wont there be “missing” scroll damage records? No,
because moving the viewport results in scroll damage records by
itself.
Closes #1380
2023-06-23 20:20:01 +02:00
|
|
|
* Crash when scrolling up while running something that generates a lot
|
|
|
|
|
of output (for example, `yes`) ([#1380][1380]).
|
2023-07-10 12:42:36 +02:00
|
|
|
* Default key binding for URL mode conflicting with Unicode input on
|
|
|
|
|
some DEs; `show-urls-launched` is now mapped to `Control+Shift+o` by
|
|
|
|
|
default, instead of `Control+Shift+u` ([#1183][1183]).
|
2023-04-05 14:39:02 +02:00
|
|
|
|
|
|
|
|
[1317]: https://codeberg.org/dnkl/foot/issues/1317
|
2023-05-02 01:53:01 +10:00
|
|
|
[1355]: https://codeberg.org/dnkl/foot/issues/1355
|
2023-06-20 15:59:16 +02:00
|
|
|
[1377]: https://codeberg.org/dnkl/foot/issues/1377
|
term: scroll: only record scroll damage when viewport is at the bottom
We don’t need to record scroll damage if the viewport isn’t at the
bottom, since in this case, the renderer ignores the scroll damage
anyway.
This fixes a performance corner case, when the viewport is at the top
of the scrollback history.
When application scrolls the terminal contents, and the scrollback
history is full, and the viewport is at top of the history, then the
viewport needs to be moved (the scrollback history is a circular
buffer, and thus the top of the history “moves” when we’re scrolling
in new contents).
Moving the viewport typically results in another type of scroll
damage (DAMAGE_SCROLL_IN_VIEW, instead of the “normal” DAMAGE_SCROLL).
Thus, each application triggered scroll, will result in two scroll
damage records: one DAMAGE_SCROLL, and one
DAMAGE_SCROLL_IN_VIEW. These two are incompatible, meaning they can’t
be merged. What’s worse, it also means the DAMAGE_SCROLL records from
two application triggered scrolls cannot be merged (since there’s a
DAMAGE_SCROLL_IN_VIEW in between).
As a result, the renderer will not see one, or “a few” scroll damage
events, but a *ton*. _Each_ one typically a single line, or so. And
each one resulting in lots of traffic on the wayland socket, as we
create and destroy new buffer pools, when doing “shm scrolling”.
This eventually leads to the socket not being able to keep up, and the
socket is closed on us, forcing us to exit.
The fix is really simple: don’t record “normal” scroll damage when
scrolling, _unless_ the viewport is at the bottom (and thus “follows”
the application output).
As soon as the user scrolls up in the history, we’ll stop emitting
normal scroll damage records. This is just fine, since, as mentioned
above, the renderer ignores them when the viewport isn’t at the
bottom.
What if the viewport is moved back down again, before the next frame
has been rendered? Wont there be “missing” scroll damage records? No,
because moving the viewport results in scroll damage records by
itself.
Closes #1380
2023-06-23 20:20:01 +02:00
|
|
|
[1380]: https://codeberg.org/dnkl/foot/issues/1380
|
2023-04-05 14:39:02 +02:00
|
|
|
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2023-07-14 12:25:16 +02:00
|
|
|
* Antoine Beaupré
|
|
|
|
|
* CismonX
|
|
|
|
|
* Craig Barnes
|
|
|
|
|
* Dan Bungert
|
|
|
|
|
* jdevdevdev
|
|
|
|
|
* Kyle Gunger
|
|
|
|
|
* locture
|
|
|
|
|
* Phillip Susi
|
|
|
|
|
* sewn
|
|
|
|
|
* ShugarSkull
|
|
|
|
|
* Vivian Szczepanski
|
|
|
|
|
* Vladimir Bauer
|
|
|
|
|
* wout
|
|
|
|
|
* CosmicToast
|
|
|
|
|
|
2023-04-03 18:57:50 +02:00
|
|
|
|
2023-04-03 18:52:22 +02:00
|
|
|
## 1.14.0
|
2022-08-31 19:26:21 +02:00
|
|
|
|
2022-08-07 09:38:25 +02:00
|
|
|
### Added
|
2022-08-19 02:54:49 +02:00
|
|
|
|
|
|
|
|
* Support for adjusting the thickness of regular underlines ([#1136][1136]).
|
2022-09-23 20:24:04 +02:00
|
|
|
* Support (optional) for utmp logging with libutempter.
|
2022-09-24 12:32:17 +02:00
|
|
|
* `kxIN` and `kxOUT` (focus in/out events) to terminfo.
|
2022-09-28 21:09:35 +02:00
|
|
|
* `name` capability to `XTGETTCAP`.
|
2022-12-01 15:00:44 +01:00
|
|
|
* String values in `foot.ini` may now be quoted. This can be used to
|
|
|
|
|
set a value to the empty string, for example.
|
2022-12-01 19:43:38 +01:00
|
|
|
* Environment variables can now be **unset**, by setting
|
2022-12-15 11:10:32 +01:00
|
|
|
`[environment].<variable>=""` (quotes are required) ([#1225][1225]).
|
|
|
|
|
* `font-size-adjustment=N[px]` option, letting you configure how much
|
|
|
|
|
to increment/decrement the font size when zooming in or out
|
|
|
|
|
([#1188][1188]).
|
2023-01-01 15:21:17 +00:00
|
|
|
* Bracketed paste terminfo entries (`BD`, `BE`, `PE` and `PS`, added
|
2023-01-01 10:22:54 +01:00
|
|
|
to ncurses in 2022-12-24). Vim makes use of these.
|
2024-02-06 12:36:45 +01:00
|
|
|
* "Report version" terminfo entries (`XR`/`xr`).
|
|
|
|
|
* "Report DA2" terminfo entries (`RV`/`rv`).
|
2023-01-15 14:00:06 +01:00
|
|
|
* `XF` terminfo capability (focus in/out events available).
|
2023-03-20 14:40:36 +00:00
|
|
|
* `$TERM_PROGRAM` and `$TERM_PROGRAM_VERSION` environment variables
|
2023-05-12 14:55:55 +02:00
|
|
|
unset in the slave process.
|
2022-08-19 02:54:49 +02:00
|
|
|
|
|
|
|
|
[1136]: https://codeberg.org/dnkl/foot/issues/1136
|
2022-12-01 19:43:38 +01:00
|
|
|
[1225]: https://codeberg.org/dnkl/foot/issues/1225
|
2022-12-15 11:10:32 +01:00
|
|
|
[1188]: https://codeberg.org/dnkl/foot/issues/1188
|
2022-08-19 02:54:49 +02:00
|
|
|
|
|
|
|
|
|
2022-08-07 09:38:25 +02:00
|
|
|
### Changed
|
2022-08-08 16:31:28 +02:00
|
|
|
|
2022-08-17 18:12:51 +02:00
|
|
|
* Default color theme from a variant of the Zenburn theme, to a
|
|
|
|
|
variant of the Solarized dark theme.
|
2022-09-03 12:16:41 +02:00
|
|
|
* Default `pad` from 2x2 to 0x0 (i.e. no padding at all).
|
2022-09-10 12:04:39 +02:00
|
|
|
* Current working directory (as set by OSC-7) is now passed to the
|
2022-09-17 07:17:12 +01:00
|
|
|
program executed by the `pipe-*` key bindings ([#1166][1166]).
|
|
|
|
|
* `DECRPM` replies (to `DECRQM` queries) now report a value of `4`
|
|
|
|
|
("permanently reset") instead of `2` ("reset") for DEC private
|
|
|
|
|
modes that are known but unsupported.
|
2022-09-26 19:00:27 +02:00
|
|
|
* Set `PWD` environment variable in the slave process ([#1179][1179]).
|
2022-11-04 17:45:43 +01:00
|
|
|
* DPI is now forced to 96 when found to be unreasonably high.
|
change default log level to WARNING
The default foot output looks like this, in Debian testing "bookworm"
at the time of writing:
anarcat@angela:pubpaste$ foot true
info: main.c:421: version: 1.13.1 +pgo +ime +graphemes -assertions
info: main.c:428: arch: Linux x86_64/64-bit
info: main.c:440: locale: fr_CA.UTF-8
info: config.c:3003: loading configuration from /home/anarcat/.config/foot/foot.ini
info: fcft.c:338: fcft: 3.1.5 +graphemes -runs +svg(nanosvg) -assertions
info: fcft.c:377: fontconfig: 2.13.1, freetype: 2.12.1, harfbuzz: 5.2.0
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=8.00pt/8px, dpi=75.00
info: wayland.c:1353: eDP-1: 2256x1504+0x0@60Hz 0x095F 13.32" scale=2 PPI=205x214 (physical) PPI=136x143 (logical), DPI=271.31
info: wayland.c:1509: requesting SSD decorations
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Bold.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Bold.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=24.00pt/32px, dpi=96.00
info: terminal.c:700: cell width=19, height=39
info: terminal.c:588: using 16 rendering threads
info: wayland.c:859: using SSD decorations
info: main.c:680: goodbye
anarcat@angela:pubpaste$
That's 17 lines of output that are *mostly* useless for most use
cases. I might understand having this output during the project's
startup, when it's helpful for diagnostics, but now Foot just mostly
works everywhere, and I've never had a use for any of that stuff in
the (arguably short) time I've been using Foot so far.
And if I do, there's the `--log-level` commandline option to tweak
this. At first, I looked at tweaking the log level through the config
file. But as explained in this issue:
https://codeberg.org/dnkl/foot/issues/1142
... there's a chicken and egg problem there that makes it hard to
implement and possibly confusing for users as well.
There's also the possibility for users to change the shortcut with
which they start foot, for example a `.desktop` file so that menu
systems that support those start foot properly. But that only works in
that environment, and not through the so many things that will just
call `foot` and hope it will do the right thing.
In my case, I have `foot` hardcoded in a lot of places now, between
sway and waybar, and this is only going to grow. Others have suggested
adding the flag to a $TERMINAL global variable, but that won't help
.desktop users.
So, instead of playing whack-a-mole with the log levels, just make it
so that, by default, foot is silent. This is actually one of the
[basics of UNIX philosophy][1]:
> Rule of Silence: When a program has nothing surprising to say, it
> should say nothing.
And yes, I am aware I am severely violating that principle by writing
a way too long commit log for a one-line patch, but there you go, I
figured it was good to document the why of this properly.
[1]: https://web.archive.org/web/20031102053334/http://www.faqs.org/docs/artu/ch01s06.html
2022-11-18 11:07:16 -05:00
|
|
|
* Set default log level to warning ([#1215][1215]).
|
2022-12-16 16:56:43 +01:00
|
|
|
* Default `grapheme-width-method` from `wcswidth` to `double-width`.
|
2023-03-03 17:21:11 +01:00
|
|
|
* When determining initial font size, do FontConfig config
|
|
|
|
|
substitution if the user-provided font pattern has no {pixel}size
|
|
|
|
|
option ([#1287][1287]).
|
2023-03-31 10:36:43 +02:00
|
|
|
* DECRST of DECCOLM and DECSCLM removed from terminfo.
|
2022-09-10 12:04:39 +02:00
|
|
|
|
|
|
|
|
[1166]: https://codeberg.org/dnkl/foot/issues/1166
|
2022-09-26 19:00:27 +02:00
|
|
|
[1179]: https://codeberg.org/dnkl/foot/issues/1179
|
change default log level to WARNING
The default foot output looks like this, in Debian testing "bookworm"
at the time of writing:
anarcat@angela:pubpaste$ foot true
info: main.c:421: version: 1.13.1 +pgo +ime +graphemes -assertions
info: main.c:428: arch: Linux x86_64/64-bit
info: main.c:440: locale: fr_CA.UTF-8
info: config.c:3003: loading configuration from /home/anarcat/.config/foot/foot.ini
info: fcft.c:338: fcft: 3.1.5 +graphemes -runs +svg(nanosvg) -assertions
info: fcft.c:377: fontconfig: 2.13.1, freetype: 2.12.1, harfbuzz: 5.2.0
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=8.00pt/8px, dpi=75.00
info: wayland.c:1353: eDP-1: 2256x1504+0x0@60Hz 0x095F 13.32" scale=2 PPI=205x214 (physical) PPI=136x143 (logical), DPI=271.31
info: wayland.c:1509: requesting SSD decorations
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Bold.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Bold.otf: size=24.00pt/32px, dpi=96.00
info: fcft.c:838: /home/anarcat/.local/share/fonts/Fira-4.202/otf/FiraMono-Regular.otf: size=24.00pt/32px, dpi=96.00
info: terminal.c:700: cell width=19, height=39
info: terminal.c:588: using 16 rendering threads
info: wayland.c:859: using SSD decorations
info: main.c:680: goodbye
anarcat@angela:pubpaste$
That's 17 lines of output that are *mostly* useless for most use
cases. I might understand having this output during the project's
startup, when it's helpful for diagnostics, but now Foot just mostly
works everywhere, and I've never had a use for any of that stuff in
the (arguably short) time I've been using Foot so far.
And if I do, there's the `--log-level` commandline option to tweak
this. At first, I looked at tweaking the log level through the config
file. But as explained in this issue:
https://codeberg.org/dnkl/foot/issues/1142
... there's a chicken and egg problem there that makes it hard to
implement and possibly confusing for users as well.
There's also the possibility for users to change the shortcut with
which they start foot, for example a `.desktop` file so that menu
systems that support those start foot properly. But that only works in
that environment, and not through the so many things that will just
call `foot` and hope it will do the right thing.
In my case, I have `foot` hardcoded in a lot of places now, between
sway and waybar, and this is only going to grow. Others have suggested
adding the flag to a $TERMINAL global variable, but that won't help
.desktop users.
So, instead of playing whack-a-mole with the log levels, just make it
so that, by default, foot is silent. This is actually one of the
[basics of UNIX philosophy][1]:
> Rule of Silence: When a program has nothing surprising to say, it
> should say nothing.
And yes, I am aware I am severely violating that principle by writing
a way too long commit log for a one-line patch, but there you go, I
figured it was good to document the why of this properly.
[1]: https://web.archive.org/web/20031102053334/http://www.faqs.org/docs/artu/ch01s06.html
2022-11-18 11:07:16 -05:00
|
|
|
[1215]: https://codeberg.org/dnkl/foot/pulls/1215
|
2023-03-03 17:21:11 +01:00
|
|
|
[1287]: https://codeberg.org/dnkl/foot/issues/1287
|
2022-08-08 16:31:28 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 19:26:21 +02:00
|
|
|
### Fixed
|
terminal: don’t unref a not-yet-referenced key-binding set
Key-binding sets are bound to a seat/configuration pair. The conf
reference is done when a new terminal instance is created.
When that same terminal instance is destroyed, the key binding set is
unref:ed.
If the terminal instance is destroyed *before* the key binding set has
been referenced, we’ll still unref it. This creates an imbalance.
In particular, when the there is exactly one other terminal instance
referencing that same key binding set, that terminal instance will
trigger a foot server crash as soon as it receives a key press/release
event. This happens because the next-to-last terminal instance brought
the reference count of the binding set down to 0, causing it to be
free:d.
Thus, we *must* reference the binding set *before* we can error
out (when instantiating a new terminal instance).
At this point, we don’t yet have a valid terminal instance. But,
that’s ok, because all the key_binding_new_for_term() did with the
terminal instance was get the "struct wayland" and "struct config"
pointers. So, rename the function and simply pass these pointers
explicitly.
Similarly, change key_binding_for() to take a "struct config" pointer,
rather than a "struct terminal" pointer.
Also rename key_binding_unref_term() -> key_binding_unref().
2022-09-05 19:23:40 +02:00
|
|
|
|
|
|
|
|
* Crash in `foot --server` on key press, after another `footclient`
|
|
|
|
|
has terminated very early (for example, by trying to launch a
|
|
|
|
|
non-existing shell/client).
|
2022-09-22 18:34:41 +02:00
|
|
|
* Glitchy rendering when scrolling in the scrollback, on compositors
|
2023-10-03 14:11:55 +02:00
|
|
|
that does not allow Wayland buffer reuse (e.g. KDE/plasma)
|
2022-09-22 18:34:41 +02:00
|
|
|
([#1173][1173])
|
2022-09-22 18:39:00 +02:00
|
|
|
* Scrollback search matches not being highlighted correctly, on
|
2023-10-03 14:11:55 +02:00
|
|
|
compositors that does not allow Wayland buffer reuse
|
2022-09-22 18:39:00 +02:00
|
|
|
(e.g. KDE/plasma).
|
2022-10-03 19:41:13 +03:00
|
|
|
* Nanosecs "overflow" when calculating timeout value for
|
|
|
|
|
`resize-delay-ms` option.
|
2022-09-27 19:05:56 +02:00
|
|
|
* Missing backslash in ST terminator in escape sequences in the
|
|
|
|
|
built-in terminfo (accessed via XTGETTCAP).
|
2022-10-06 17:26:38 +02:00
|
|
|
* Crash when interactively resizing the window with a very large
|
|
|
|
|
scrollback.
|
2022-10-13 17:52:34 +02:00
|
|
|
* Crash when a sixel image exceeds the current sixel max height.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Crash after reverse-scrolling (`CSI Ps T`) in the 'normal'
|
2022-10-14 18:05:12 +02:00
|
|
|
(non-alternate) screen ([#1190][1190]).
|
2022-10-30 19:39:09 +01:00
|
|
|
* Background transparency being applied to the text "behind" the
|
|
|
|
|
cursor. Only applies to block cursor using inversed fg/bg
|
|
|
|
|
colors. ([#1205][1205]).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Crash when monitor's physical size is "too small" ([#1209][1209]).
|
2022-11-23 16:23:01 +01:00
|
|
|
* Line-height adjustment when incrementing/decrementing the font size
|
|
|
|
|
with a user-set line-height ([#1218][1218]).
|
2022-11-24 17:21:53 +01:00
|
|
|
* Scaling factor not being correctly applied when converting pt-or-px
|
|
|
|
|
config values (e.g. letter offsets, line height etc).
|
2023-03-31 10:41:17 +02:00
|
|
|
* Selection being stuck visually when `IL` and `DL`.
|
2022-11-30 10:51:45 +01:00
|
|
|
* URL underlines sometimes still being visible after exiting URL mode.
|
2023-01-15 10:24:01 +01:00
|
|
|
* Text-bindings, and pipe-* bindings, with multiple key mappings
|
|
|
|
|
causing a crash (double-free) on exit ([#1259][1259]).
|
2023-01-15 14:42:48 +01:00
|
|
|
* Double-width glyphs glitching when surrounded by glyphs overflowing
|
|
|
|
|
into the double-width glyph ([#1256][1256]).
|
2022-12-29 11:32:21 +01:00
|
|
|
* Wayland protocol violation when ack:ing a configure event for an
|
|
|
|
|
unmapped surface ([#1249][1249]).
|
2023-03-31 10:42:50 +02:00
|
|
|
* `xdg_toplevel::set_min_size()` not being called.
|
2023-02-27 17:56:03 +01:00
|
|
|
* Key bindings with consumed modifiers masking other key bindings
|
|
|
|
|
([#1280][1280]).
|
2023-03-27 16:56:10 +02:00
|
|
|
* Multi-character compose sequences with the kitty keyboard protocol
|
|
|
|
|
([#1288][1288]).
|
render: protect against integer underflow when calculating scroll area
When applying scroll damage, we calculate the affected region’s
height (in pixels), by subtracting the number of rows to scroll, from
the scrolling region, and finally multiply by the cell height.
If the number of rows to scroll is very large, the subtraction may
underflow, resulting in a very large height value instead of a
negative one.
This caused the check for "scrolling too many lines" to fail. That in
turn resulted in an integer overflow when calculating the source
offset into the rendered surface buffer, which typically triggered a
segfault.
This bug happened when there was continuous output in the terminal
without any new frames being rendered. This caused a buildup of scroll
damage, that triggered the underflow+overflow when we finally did
render a new frame.
For example, a compositor that doesn’t send any frame callbacks (for
example because the terminal window is minimized, or on a different
workspace/tag) would cause this.
Closes #1305
2023-03-28 18:31:24 +02:00
|
|
|
* Crash when application output scrolls very fast, e.g. `yes`
|
|
|
|
|
([#1305][1305]).
|
term: protect against integer overflow when accumulating scroll damage
When accumulating scroll damage, we check if the last scroll damage’s
scrolling region, and type, matches the new/current scroll damage. If
so, the number of lines in the last scroll damage is increased,
instead of adding a new scroll damage instance to the list.
If the scroll damage list isn’t consumed, this build up of scroll
damage would eventually overflow.
And, even if it didn’t overflow, it could become large enough, that
when later used to calculate e.g. the affected surface area, while
rendering a frame, would cause an overflow there instead.
This patch fixes both issues by:
a) do an overflow check before increasing the line count
b) limit the line count to UINT16_MAX
2023-03-28 18:37:41 +02:00
|
|
|
* Crash when application scrolls **many** lines (> ~2³¹).
|
2023-01-19 19:52:57 +01:00
|
|
|
* DECCOLM erasing the screen ([#1265][1265]).
|
2022-09-22 18:34:41 +02:00
|
|
|
|
|
|
|
|
[1173]: https://codeberg.org/dnkl/foot/issues/1173
|
2022-10-14 18:05:12 +02:00
|
|
|
[1190]: https://codeberg.org/dnkl/foot/issues/1190
|
2022-10-30 19:39:09 +01:00
|
|
|
[1205]: https://codeberg.org/dnkl/foot/issues/1205
|
2022-11-04 17:42:52 +01:00
|
|
|
[1209]: https://codeberg.org/dnkl/foot/issues/1209
|
2022-11-23 16:23:01 +01:00
|
|
|
[1218]: https://codeberg.org/dnkl/foot/issues/1218
|
2023-01-15 10:24:01 +01:00
|
|
|
[1259]: https://codeberg.org/dnkl/foot/issues/1259
|
2023-01-15 14:42:48 +01:00
|
|
|
[1256]: https://codeberg.org/dnkl/foot/issues/1256
|
2022-12-29 11:32:21 +01:00
|
|
|
[1249]: https://codeberg.org/dnkl/foot/issues/1249
|
2023-02-27 17:56:03 +01:00
|
|
|
[1280]: https://codeberg.org/dnkl/foot/issues/1280
|
2023-03-27 16:56:10 +02:00
|
|
|
[1288]: https://codeberg.org/dnkl/foot/issues/1288
|
render: protect against integer underflow when calculating scroll area
When applying scroll damage, we calculate the affected region’s
height (in pixels), by subtracting the number of rows to scroll, from
the scrolling region, and finally multiply by the cell height.
If the number of rows to scroll is very large, the subtraction may
underflow, resulting in a very large height value instead of a
negative one.
This caused the check for "scrolling too many lines" to fail. That in
turn resulted in an integer overflow when calculating the source
offset into the rendered surface buffer, which typically triggered a
segfault.
This bug happened when there was continuous output in the terminal
without any new frames being rendered. This caused a buildup of scroll
damage, that triggered the underflow+overflow when we finally did
render a new frame.
For example, a compositor that doesn’t send any frame callbacks (for
example because the terminal window is minimized, or on a different
workspace/tag) would cause this.
Closes #1305
2023-03-28 18:31:24 +02:00
|
|
|
[1305]: https://codeberg.org/dnkl/foot/issues/1305
|
2023-01-19 19:52:57 +01:00
|
|
|
[1265]: https://codeberg.org/dnkl/foot/issues/1265
|
terminal: don’t unref a not-yet-referenced key-binding set
Key-binding sets are bound to a seat/configuration pair. The conf
reference is done when a new terminal instance is created.
When that same terminal instance is destroyed, the key binding set is
unref:ed.
If the terminal instance is destroyed *before* the key binding set has
been referenced, we’ll still unref it. This creates an imbalance.
In particular, when the there is exactly one other terminal instance
referencing that same key binding set, that terminal instance will
trigger a foot server crash as soon as it receives a key press/release
event. This happens because the next-to-last terminal instance brought
the reference count of the binding set down to 0, causing it to be
free:d.
Thus, we *must* reference the binding set *before* we can error
out (when instantiating a new terminal instance).
At this point, we don’t yet have a valid terminal instance. But,
that’s ok, because all the key_binding_new_for_term() did with the
terminal instance was get the "struct wayland" and "struct config"
pointers. So, rename the function and simply pass these pointers
explicitly.
Similarly, change key_binding_for() to take a "struct config" pointer,
rather than a "struct terminal" pointer.
Also rename key_binding_unref_term() -> key_binding_unref().
2022-09-05 19:23:40 +02:00
|
|
|
|
|
|
|
|
|
2022-08-31 19:26:21 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2023-04-03 18:52:22 +02:00
|
|
|
* Alexey Sakovets
|
|
|
|
|
* Andrea Pappacoda
|
|
|
|
|
* Antoine Beaupré
|
|
|
|
|
* argosatcore
|
2022-09-17 07:17:12 +01:00
|
|
|
* Craig Barnes
|
2023-04-03 18:52:22 +02:00
|
|
|
* EuCaue
|
|
|
|
|
* Grigory Kirillov
|
|
|
|
|
* Harri Nieminen
|
|
|
|
|
* Hugo Osvaldo Barrera
|
|
|
|
|
* jaroeichler
|
|
|
|
|
* Joakim Nohlgård
|
|
|
|
|
* Nick Hastings
|
|
|
|
|
* Soren A D
|
|
|
|
|
* Torsten Trautwein
|
|
|
|
|
* Vladimír Magyar
|
|
|
|
|
* woojiq
|
|
|
|
|
* Yorick Peterse
|
2022-09-17 07:17:12 +01:00
|
|
|
|
2022-08-31 19:26:21 +02:00
|
|
|
|
2022-08-31 19:17:38 +02:00
|
|
|
## 1.13.1
|
|
|
|
|
|
2022-08-07 09:38:25 +02:00
|
|
|
### Changed
|
2022-08-08 16:31:28 +02:00
|
|
|
|
|
|
|
|
* Window is now dimmed while in Unicode input mode.
|
|
|
|
|
|
|
|
|
|
|
2022-08-07 09:38:25 +02:00
|
|
|
### Fixed
|
2022-08-12 16:12:36 +02:00
|
|
|
|
|
|
|
|
* Compiling against wayland-protocols < 1.25
|
2022-08-12 16:13:25 +02:00
|
|
|
* Crash on buggy compositors (GNOME) that sometimes send pointer-enter
|
|
|
|
|
events with a NULL surface. Foot now ignores these events, and the
|
|
|
|
|
subsequent motion and leave events.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Regression: "random" selected empty cells being highlighted as
|
selection: never highlight selected, empty cells
This fixes a regression, where empty cells "between" non-empty
cells (i.e. non-trailing empty cells) sometimes were incorrectly
highlighted.
The idea has always been to highlight exactly those cells that will
get extracted when they’re copied. This means we’ve not highlighted
trailing empty cells, but we _have_ highlighted other empty cells,
since they are converted to spaces when copied (whereas trailing empty
cells are skipped).
fa2d9f86996467ba33cc381f810ea966a4323381 changed how a selection is
updated. That is, which cells gets marked as selected, and which ones
gets unmarked.
Since we no longer walk all the cells, but instead work with pixman
regions representing selection diffs, we can no longer determine (with
certainty) which empty cells should be selected and which shouldn’t.
Before this patch (but after
fa2d9f86996467ba33cc381f810ea966a4323381), we sometimes incorrectly
highlighted empty cells that should not have been highlighted. This
happened when we’ve first (correctly) highlighted a region of empty
cells, but then shrink the selection such that all those empty cells
should be de-selected.
This patch changes the selection behavior to *never* highlight empty
cells. This fixes the regression, but also means slightly different
behavior, compared to pre-fa2d9f86996467ba33cc381f810ea966a4323381.
The other alternative is to always highlight all empty cells. But,
since I personally like the fact that we’re skipping trailing empty
cells, I prefer the approach taken by this patch.
2022-08-17 17:36:10 +02:00
|
|
|
selected when they should not.
|
2022-08-29 21:04:56 +02:00
|
|
|
* Crash when either resizing the terminal window, or scrolling in the
|
|
|
|
|
scrollback history ([#1074][1074])
|
2022-08-30 17:48:04 +02:00
|
|
|
* OSC-8 URLs with matching IDs, but mismatching URIs being incorrectly
|
|
|
|
|
connected.
|
2022-08-29 21:04:56 +02:00
|
|
|
|
|
|
|
|
[1074]: https://codeberg.org/dnkl/foot/pulls/1074
|
2022-08-12 16:12:36 +02:00
|
|
|
|
|
|
|
|
|
2022-08-07 09:31:56 +02:00
|
|
|
## 1.13.0
|
2022-05-04 17:33:34 +02:00
|
|
|
|
2022-04-27 20:09:16 +02:00
|
|
|
### Added
|
url-mode: add support for XDG activation when opening URLs
First, add a ‘token’ argument to spawn(). When non-NULL, spawn() will
set the ‘XDG_ACTIVATION_TOKEN’ environment variable in the forked
process. If DISPLAY is non-NULL, we also set DESKTOP_STARTUP_ID, for
compatibility with X11 applications. Note that failing to set either
of these environment variables are considered non-fatal - i.e. we
ignore failures.
Next, add a helper function, wayl_get_activation_token(), to generate
an XDG activation token, and call a user-provided callback when it’s
‘done (since token generation is asynchronous). This function takes an
optional ‘seat’ and ‘serial’ arguments - when both are non-NULL/zero,
we set the serial on the token. ‘win’ is a required argument, used to
set the surface on the token.
Re-write wayl_win_set_urgent() to use the new helper function.
Finally, rewrite activate_url() to first try to get an activation
token (and spawn the URL launcher in the token callback). If that
fails, or if we don’t have XDG activation support, spawn the URL
launcher immediately (like before this patch).
Closes #1058
2022-05-03 19:37:04 +02:00
|
|
|
|
|
|
|
|
* XDG activation support when opening URLs ([#1058][1058]).
|
2022-05-04 17:33:34 +02:00
|
|
|
* `-Dsystemd-units-dir=<path>` meson command line option.
|
2022-05-28 19:28:45 +02:00
|
|
|
* Support for custom environment variables in `foot.ini`
|
|
|
|
|
([#1070][1070]).
|
osc: add support for OSC 133;A (prompt markers)
This patch adds support for the OSC-133;A sequence, introduced by
FinalTerm and implemented by iTerm2, Kitty and more. See
https://iterm2.com/documentation-one-page.html#documentation-escape-codes.html.
The shell emits the OSC just before printing the prompt. This lets the
terminal know where, in the scrollback, there are prompts.
We implement this using a simple boolean in the row struct ("this row
has a prompt"). The prompt marker must be reflowed along with the text
on window resizes.
In an ideal world, erasing, or overwriting the cell where the OSC was
emitted, would remove the prompt mark. Since we don't store this
information in the cell struct, we can't do that. The best we can do
is reset it in erase_line(). This works well enough in the "normal"
screen, when used with a "normal" shell. It doesn't really work in
fullscreen apps, on the alt screen. But that doesn't matter since we
don't support jumping between prompts on the alt screen anyway.
To be able to jump between prompts, two new key bindings have been
added: prompt-prev and prompt-next, bound to ctrl+shift+z and
ctrl+shift+x respectively.
prompt-prev will jump to the previous, not currently visible, prompt,
by moving the viewport, ensuring the prompt is at the top of the
screen.
prompt-next jumps to the next prompt, visible or not. Again, by moving
the viewport to ensure the prompt is at the top of the screen. If
we're at the bottom of the scrollback, the viewport is instead moved
as far down as possible.
Closes #30
2022-06-15 18:44:23 +02:00
|
|
|
* Support for jumping to previous/next prompt (requires shell
|
|
|
|
|
integration). By default bound to `ctrl`+`shift`+`z` and
|
|
|
|
|
`ctrl`+`shift`+`x` respectively ([#30][30]).
|
2022-07-27 19:14:27 +02:00
|
|
|
* `colors.search-box-no-match` and `colors.search-box-match` options
|
|
|
|
|
to `foot.ini` ([#1112][1112]).
|
2022-07-28 18:09:16 +02:00
|
|
|
* Very basic Unicode input mode via the new
|
|
|
|
|
`key-bindings.unicode-input` and `search-bindings.unicode-input` key
|
|
|
|
|
bindings. Note that there is no visual feedback, as the preferred
|
|
|
|
|
way of entering Unicode characters is with an IME ([#1116][1116]).
|
2022-05-06 20:05:04 +02:00
|
|
|
* Support for `xdg_toplevel.wm_capabilities`, to adapt the client-side
|
|
|
|
|
decoration buttons to the compositor capabilities ([#1061][1061]).
|
url-mode: add support for XDG activation when opening URLs
First, add a ‘token’ argument to spawn(). When non-NULL, spawn() will
set the ‘XDG_ACTIVATION_TOKEN’ environment variable in the forked
process. If DISPLAY is non-NULL, we also set DESKTOP_STARTUP_ID, for
compatibility with X11 applications. Note that failing to set either
of these environment variables are considered non-fatal - i.e. we
ignore failures.
Next, add a helper function, wayl_get_activation_token(), to generate
an XDG activation token, and call a user-provided callback when it’s
‘done (since token generation is asynchronous). This function takes an
optional ‘seat’ and ‘serial’ arguments - when both are non-NULL/zero,
we set the serial on the token. ‘win’ is a required argument, used to
set the surface on the token.
Re-write wayl_win_set_urgent() to use the new helper function.
Finally, rewrite activate_url() to first try to get an activation
token (and spawn the URL launcher in the token callback). If that
fails, or if we don’t have XDG activation support, spawn the URL
launcher immediately (like before this patch).
Closes #1058
2022-05-03 19:37:04 +02:00
|
|
|
|
|
|
|
|
[1058]: https://codeberg.org/dnkl/foot/issues/1058
|
2022-05-28 19:28:45 +02:00
|
|
|
[1070]: https://codeberg.org/dnkl/foot/issues/1070
|
osc: add support for OSC 133;A (prompt markers)
This patch adds support for the OSC-133;A sequence, introduced by
FinalTerm and implemented by iTerm2, Kitty and more. See
https://iterm2.com/documentation-one-page.html#documentation-escape-codes.html.
The shell emits the OSC just before printing the prompt. This lets the
terminal know where, in the scrollback, there are prompts.
We implement this using a simple boolean in the row struct ("this row
has a prompt"). The prompt marker must be reflowed along with the text
on window resizes.
In an ideal world, erasing, or overwriting the cell where the OSC was
emitted, would remove the prompt mark. Since we don't store this
information in the cell struct, we can't do that. The best we can do
is reset it in erase_line(). This works well enough in the "normal"
screen, when used with a "normal" shell. It doesn't really work in
fullscreen apps, on the alt screen. But that doesn't matter since we
don't support jumping between prompts on the alt screen anyway.
To be able to jump between prompts, two new key bindings have been
added: prompt-prev and prompt-next, bound to ctrl+shift+z and
ctrl+shift+x respectively.
prompt-prev will jump to the previous, not currently visible, prompt,
by moving the viewport, ensuring the prompt is at the top of the
screen.
prompt-next jumps to the next prompt, visible or not. Again, by moving
the viewport to ensure the prompt is at the top of the screen. If
we're at the bottom of the scrollback, the viewport is instead moved
as far down as possible.
Closes #30
2022-06-15 18:44:23 +02:00
|
|
|
[30]: https://codeberg.org/dnkl/foot/issues/30
|
2022-07-27 19:14:27 +02:00
|
|
|
[1112]: https://codeberg.org/dnkl/foot/issues/1112
|
2022-07-28 18:09:16 +02:00
|
|
|
[1116]: https://codeberg.org/dnkl/foot/issues/1116
|
2022-05-06 20:05:04 +02:00
|
|
|
[1061]: https://codeberg.org/dnkl/foot/pulls/1061
|
url-mode: add support for XDG activation when opening URLs
First, add a ‘token’ argument to spawn(). When non-NULL, spawn() will
set the ‘XDG_ACTIVATION_TOKEN’ environment variable in the forked
process. If DISPLAY is non-NULL, we also set DESKTOP_STARTUP_ID, for
compatibility with X11 applications. Note that failing to set either
of these environment variables are considered non-fatal - i.e. we
ignore failures.
Next, add a helper function, wayl_get_activation_token(), to generate
an XDG activation token, and call a user-provided callback when it’s
‘done (since token generation is asynchronous). This function takes an
optional ‘seat’ and ‘serial’ arguments - when both are non-NULL/zero,
we set the serial on the token. ‘win’ is a required argument, used to
set the surface on the token.
Re-write wayl_win_set_urgent() to use the new helper function.
Finally, rewrite activate_url() to first try to get an activation
token (and spawn the URL launcher in the token callback). If that
fails, or if we don’t have XDG activation support, spawn the URL
launcher immediately (like before this patch).
Closes #1058
2022-05-03 19:37:04 +02:00
|
|
|
|
|
|
|
|
|
2022-04-27 20:09:16 +02:00
|
|
|
### Changed
|
2022-05-24 18:18:15 +02:00
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
* Use `$HOME` instead of `getpwuid()` to retrieve the user's home
|
2022-05-24 18:18:15 +02:00
|
|
|
directory when searching for `foot.ini`.
|
selection: allow HT, VT and FF, disallow NUL in non-bracketed paste mode
This syncs foot with more recent versions of XTerm, where it’s
“disallowedPasteControls” resource has changed its default value to
BS,DEL,ENQ,EOT,ESC,NULL
Note that we’re already stripping out ENQ,EOT,ESC in all modes.
What does it mean for foot:
* HT, VT and FF are now allowed, regardless of paste mode
* NUL is now stripped in non-bracketed paste mode
Closes #1084
2022-06-13 11:41:54 +02:00
|
|
|
* HT, VT and FF are no longer stripped when pasting in non-bracketed
|
|
|
|
|
mode ([#1084][1084]).
|
|
|
|
|
* NUL is now stripped when pasting in non-bracketed mode
|
|
|
|
|
([#1084][1084]).
|
2022-07-26 18:19:34 +02:00
|
|
|
* `alt`+`escape` now emits `\E\E` instead of a `CSI 27` sequence
|
|
|
|
|
([#1105][1105]).
|
selection: allow HT, VT and FF, disallow NUL in non-bracketed paste mode
This syncs foot with more recent versions of XTerm, where it’s
“disallowedPasteControls” resource has changed its default value to
BS,DEL,ENQ,EOT,ESC,NULL
Note that we’re already stripping out ENQ,EOT,ESC in all modes.
What does it mean for foot:
* HT, VT and FF are now allowed, regardless of paste mode
* NUL is now stripped in non-bracketed paste mode
Closes #1084
2022-06-13 11:41:54 +02:00
|
|
|
|
|
|
|
|
[1084]: https://codeberg.org/dnkl/foot/issues/1084
|
2022-07-26 18:19:34 +02:00
|
|
|
[1105]: https://codeberg.org/dnkl/foot/issues/1105
|
2022-05-24 18:18:15 +02:00
|
|
|
|
|
|
|
|
|
2022-04-27 20:09:16 +02:00
|
|
|
### Fixed
|
2022-05-11 17:58:18 +02:00
|
|
|
|
|
|
|
|
* Graphical corruption when viewport is at the top of the scrollback,
|
|
|
|
|
and the output is scrolling.
|
2022-06-20 19:29:57 +02:00
|
|
|
* Improved text reflow of logical lines with trailing empty cells
|
|
|
|
|
([#1055][1055])
|
2022-06-15 18:41:08 +02:00
|
|
|
* IME focus is now tracked independently from keyboard focus.
|
2022-06-20 19:29:57 +02:00
|
|
|
* Workaround for buggy compositors (e.g. some versions of GNOME)
|
|
|
|
|
allowing drag-and-drops even though foot has reported it does not
|
|
|
|
|
support the offered mime-types ([#1092][1092]).
|
2022-06-28 20:57:48 +02:00
|
|
|
* Keyboard enter/leave events being ignored if there is no keymap
|
|
|
|
|
([#1097][1097]).
|
2022-07-22 10:44:33 +02:00
|
|
|
* Crash when application emitted an invalid `CSI 38;5;<idx>m`, `CSI
|
|
|
|
|
38:5:<idx>m`, `CSI 48;5;<idx>m` or `CSI 48:5:<idx>m` sequence
|
|
|
|
|
([#1111][1111]).
|
2022-07-26 18:44:29 +02:00
|
|
|
* Certain dead-key combinations resulting in different escape
|
|
|
|
|
sequences compared to kitty, when the kitty keyboard protocol is
|
|
|
|
|
used ([#1120][1120]).
|
2022-07-28 18:56:28 +02:00
|
|
|
* Search matches ending with a double-width character not being
|
|
|
|
|
highlighted correctly.
|
2022-07-28 18:27:13 +02:00
|
|
|
* Selection not being cancelled correctly when scrolled out.
|
2022-07-28 18:32:17 +02:00
|
|
|
* Extending a multi-page selection behaving inconsistently.
|
selection: rework how we update a selection
Before this patch, each selection update would result in grid covered
by the selection being walked *three* times. First to “premark” the
area that *will* be selected after the update, then again to unmark
the previous selection (excluding the cells that were premarked - but
the cells are still iterated), and then one more time to finalize the
selection state in the grid.
Furthermore, each time a frame is rendered, the entire selection were
iterated again, to ensure all the cells have their ‘selected’ bit
set.
This quickly gets *very* slow.
This patch takes a completely different approach. Instead of looking
at the selection as a range of cells to iterate, we view it as an
area, or region. Thus, on each update, we have to regions: the region
representing the previous selection, and the region representing the
to-be selection.
By diffing these two regions, we get two new regions: one that
represents the cells that were selected, but aren’t any more, and one
that represents the cells that previously were not selected, but now
will be.
We implement the regions using pixman regions. By subtracting the
current selection from the previous selection, we get the region
representing the cells that are no longer selected, and that should be
unmarked.
By subtracting the previous selection from the current, we get the
region representing the cells that was added to the selection in this
update, and that should be marked.
selection_dirty_cells() is rewritten in a similar manner. We create
pixman regions for the selection, and the current scrollback view. The
intersection represents the (selected) cells that are visible. These
need to iterated and marked as being selected.
Closes #1114
2022-07-28 18:45:25 +02:00
|
|
|
* Poor performance when making very large selections ([#1114][1114]).
|
2022-07-29 20:12:47 +02:00
|
|
|
* Bogus error message when using systemd socket activation for server
|
|
|
|
|
mode ([#1107][1107])
|
2022-08-05 18:26:37 +02:00
|
|
|
* Empty line at the bottom after a window resize ([#1108][1108]).
|
2022-06-01 19:29:30 +02:00
|
|
|
|
|
|
|
|
[1055]: https://codeberg.org/dnkl/foot/issues/1055
|
2022-06-20 19:29:57 +02:00
|
|
|
[1092]: https://codeberg.org/dnkl/foot/issues/1092
|
2022-06-28 20:57:48 +02:00
|
|
|
[1097]: https://codeberg.org/dnkl/foot/issues/1097
|
2022-07-22 10:44:33 +02:00
|
|
|
[1111]: https://codeberg.org/dnkl/foot/issues/1111
|
2022-07-26 18:44:29 +02:00
|
|
|
[1120]: https://codeberg.org/dnkl/foot/issues/1120
|
selection: rework how we update a selection
Before this patch, each selection update would result in grid covered
by the selection being walked *three* times. First to “premark” the
area that *will* be selected after the update, then again to unmark
the previous selection (excluding the cells that were premarked - but
the cells are still iterated), and then one more time to finalize the
selection state in the grid.
Furthermore, each time a frame is rendered, the entire selection were
iterated again, to ensure all the cells have their ‘selected’ bit
set.
This quickly gets *very* slow.
This patch takes a completely different approach. Instead of looking
at the selection as a range of cells to iterate, we view it as an
area, or region. Thus, on each update, we have to regions: the region
representing the previous selection, and the region representing the
to-be selection.
By diffing these two regions, we get two new regions: one that
represents the cells that were selected, but aren’t any more, and one
that represents the cells that previously were not selected, but now
will be.
We implement the regions using pixman regions. By subtracting the
current selection from the previous selection, we get the region
representing the cells that are no longer selected, and that should be
unmarked.
By subtracting the previous selection from the current, we get the
region representing the cells that was added to the selection in this
update, and that should be marked.
selection_dirty_cells() is rewritten in a similar manner. We create
pixman regions for the selection, and the current scrollback view. The
intersection represents the (selected) cells that are visible. These
need to iterated and marked as being selected.
Closes #1114
2022-07-28 18:45:25 +02:00
|
|
|
[1114]: https://codeberg.org/dnkl/foot/issues/1114
|
2022-07-29 20:12:47 +02:00
|
|
|
[1107]: https://codeberg.org/dnkl/foot/issues/1107
|
2022-08-05 18:26:37 +02:00
|
|
|
[1108]: https://codeberg.org/dnkl/foot/issues/1108
|
2022-05-11 17:58:18 +02:00
|
|
|
|
|
|
|
|
|
2022-04-27 20:09:16 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2022-08-07 09:31:56 +02:00
|
|
|
* Craig Barnes
|
|
|
|
|
* Lorenz
|
|
|
|
|
* Max Gautier
|
|
|
|
|
* Simon Ser
|
|
|
|
|
* Stefan Prosiegel
|
|
|
|
|
|
2022-04-27 20:09:16 +02:00
|
|
|
|
2022-04-27 20:05:51 +02:00
|
|
|
## 1.12.1
|
|
|
|
|
|
2022-04-22 17:19:04 +02:00
|
|
|
### Added
|
2022-04-26 17:28:36 +02:00
|
|
|
|
|
|
|
|
* Workaround for Sway bug [#6960][sway-6960]: scrollback search and
|
2024-02-06 12:36:45 +01:00
|
|
|
the OSC-555 ("flash") escape sequence leaves dimmed (search) and
|
2022-04-26 17:28:36 +02:00
|
|
|
yellow (flash) artifacts ([#1046][1046]).
|
2022-04-26 18:34:18 +02:00
|
|
|
* `Control+Shift+v` and `XF86Paste` have been added to the default set
|
|
|
|
|
of key bindings that paste from the clipboard into the scrollback
|
|
|
|
|
search buffer. This is in addition to the pre-existing `Control+v`
|
|
|
|
|
and `Control+y` bindings.
|
2022-04-26 17:28:36 +02:00
|
|
|
|
|
|
|
|
[sway-6960]: https://github.com/swaywm/sway/issues/6960
|
|
|
|
|
[1046]: https://codeberg.org/dnkl/foot/issues/1046
|
|
|
|
|
|
|
|
|
|
|
2022-04-22 17:19:04 +02:00
|
|
|
### Changed
|
2022-04-27 18:52:08 +02:00
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
* Scrollback search's `extend-to-word-boundary` no longer stops at
|
2022-04-27 18:52:08 +02:00
|
|
|
space-to-word boundaries, making selection extension feel more
|
|
|
|
|
natural.
|
|
|
|
|
|
|
|
|
|
|
2022-04-22 17:19:04 +02:00
|
|
|
### Fixed
|
2022-04-23 00:49:52 +02:00
|
|
|
|
|
|
|
|
* build: missing symbols when linking the `pgo` helper binary.
|
2022-04-24 12:08:23 +02:00
|
|
|
* UI not refreshing when pasting something into the scrollback search
|
|
|
|
|
box, that does not result in a grid update (for example, when the
|
|
|
|
|
search criteria did not result in any matches) ([#1040][1040]).
|
2022-04-26 18:24:22 +02:00
|
|
|
* foot freezing in scrollback search mode, using 100% CPU
|
|
|
|
|
([#1036][1036], [#1047][1047]).
|
2022-04-26 17:40:00 +02:00
|
|
|
* Crash when extending a selection to the next word boundary in
|
|
|
|
|
scrollback search mode ([#1036][1036]).
|
2022-04-26 17:40:20 +02:00
|
|
|
* Scrollback search mode not always highlighting all matches
|
|
|
|
|
correctly.
|
2022-04-26 21:05:17 +02:00
|
|
|
* Sixel options not being reset on hard resets (`\Ec`)
|
|
|
|
|
|
2022-04-24 12:08:23 +02:00
|
|
|
[1040]: https://codeberg.org/dnkl/foot/issues/1040
|
2022-04-23 15:19:32 +02:00
|
|
|
[1036]: https://codeberg.org/dnkl/foot/issues/1036
|
2022-04-28 19:29:06 +02:00
|
|
|
[1047]: https://codeberg.org/dnkl/foot/issues/1047
|
2022-04-23 00:49:52 +02:00
|
|
|
|
|
|
|
|
|
2022-04-22 17:14:00 +02:00
|
|
|
## 1.12.0
|
2022-01-01 13:59:19 +01:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
### Added
|
2022-01-01 13:59:19 +01:00
|
|
|
|
|
|
|
|
* OSC-22 - set xcursor pointer.
|
2022-02-07 22:01:23 +05:30
|
|
|
* Add "xterm" as fallback cursor where "text" is not available.
|
2022-02-23 19:03:54 +01:00
|
|
|
* `[key-bindings].scrollback-home|end` options.
|
2022-04-22 20:05:33 +02:00
|
|
|
* Socket activation for `foot --server` and accompanying systemd unit
|
|
|
|
|
files
|
2022-04-20 20:56:04 +02:00
|
|
|
* Support for re-mapping input, i.e. mapping input to custom escape
|
2022-04-22 20:05:33 +02:00
|
|
|
sequences ([#325][325]).
|
|
|
|
|
* Support for [DECNKM](https://vt100.net/docs/vt510-rm/DECNKM.html),
|
|
|
|
|
which allows setting/saving/restoring/querying the keypad mode.
|
2022-02-27 16:29:35 +01:00
|
|
|
* Sixel support can be disabled by setting `[tweak].sixel=no`
|
2022-04-22 20:05:33 +02:00
|
|
|
([#950][950]).
|
2022-04-11 12:19:40 +02:00
|
|
|
* footclient: `-E,--client-environment` command line option. When
|
|
|
|
|
used, the child process in the new terminal instance inherits the
|
2024-02-06 12:36:45 +01:00
|
|
|
environment from the footclient process instead of the server's
|
2022-04-22 20:05:33 +02:00
|
|
|
([#1004][1004]).
|
|
|
|
|
* `[csd].hide-when-maximized=yes|no` option ([#1019][1019]).
|
2022-04-17 11:05:14 +02:00
|
|
|
* Scrollback search mode now highlights all matches.
|
2022-03-22 19:07:06 +01:00
|
|
|
* `[key-binding].show-urls-persistent` action. This key binding action
|
|
|
|
|
is similar to `show-urls-launch`, but does not automatically exit
|
2022-04-22 20:05:33 +02:00
|
|
|
URL mode after activating an URL ([#964][964]).
|
2022-04-19 17:25:06 +02:00
|
|
|
* Support for `CSI > 4 n`, disable _modifyOtherKeys_. Note that since
|
|
|
|
|
foot only supports level 1 and 2 (and not level 0), this sequence
|
|
|
|
|
does not disable _modifyOtherKeys_ completely, but simply reverts it
|
|
|
|
|
back to level 1 (the default).
|
2022-02-06 12:51:54 +01:00
|
|
|
* `-Dtests=false|true` meson command line option. When disabled, test
|
|
|
|
|
binaries will neither be built, nor will `ninja test` attempt to
|
2022-04-22 20:05:33 +02:00
|
|
|
execute them. Enabled by default ([#919][919]).
|
2022-01-01 13:59:19 +01:00
|
|
|
|
2022-04-23 11:13:25 +02:00
|
|
|
[325]: https://codeberg.org/dnkl/foot/issues/325
|
|
|
|
|
[950]: https://codeberg.org/dnkl/foot/issues/950
|
|
|
|
|
[1004]: https://codeberg.org/dnkl/foot/issues/1004
|
|
|
|
|
[1019]: https://codeberg.org/dnkl/foot/issues/1019
|
|
|
|
|
[964]: https://codeberg.org/dnkl/foot/issues/964
|
|
|
|
|
[919]: https://codeberg.org/dnkl/foot/issues/919
|
|
|
|
|
|
2022-03-04 17:54:19 +01:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
### Changed
|
2022-02-07 10:44:00 +01:00
|
|
|
|
2022-02-27 11:26:40 +01:00
|
|
|
* Minimum required meson version is now 0.58.
|
2022-02-07 10:44:00 +01:00
|
|
|
* Mouse selections are now finalized when the window is resized
|
2022-04-22 20:05:33 +02:00
|
|
|
([#922][922]).
|
2022-03-13 09:05:55 +01:00
|
|
|
* OSC-4 and OSC-11 replies now uses four digits instead of 2
|
2022-04-22 20:05:33 +02:00
|
|
|
([#971][971]).
|
2022-03-16 20:17:02 +01:00
|
|
|
* `\r` is no longer translated to `\n` when pasting clipboard data
|
2022-04-22 20:05:33 +02:00
|
|
|
([#980][980]).
|
2022-03-23 11:55:16 +01:00
|
|
|
* Use circles for rendering light arc box-drawing characters
|
2022-04-22 20:05:33 +02:00
|
|
|
([#988][988]).
|
2022-04-06 19:03:59 +02:00
|
|
|
* Example configuration is now installed to
|
|
|
|
|
`${sysconfdir}/xdg/foot/foot.ini`, typically resolving to
|
2022-04-22 20:05:33 +02:00
|
|
|
`/etc/xdg/foot/foot.ini` ([#1001][1001]).
|
2022-02-07 10:44:00 +01:00
|
|
|
|
2022-04-23 11:13:25 +02:00
|
|
|
[922]: https://codeberg.org/dnkl/foot/issues/922
|
|
|
|
|
[971]: https://codeberg.org/dnkl/foot/issues/971
|
|
|
|
|
[980]: https://codeberg.org/dnkl/foot/issues/980
|
|
|
|
|
[988]: https://codeberg.org/dnkl/foot/issues/988
|
|
|
|
|
[1001]: https://codeberg.org/dnkl/foot/issues/1001
|
|
|
|
|
|
2022-02-07 10:44:00 +01:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
### Removed
|
2022-02-09 20:50:20 +00:00
|
|
|
|
|
|
|
|
* DECSET mode 27127 (which was first added in release 1.6.0).
|
|
|
|
|
The kitty keyboard protocol (added in release 1.10.3) can
|
|
|
|
|
be used to similar effect.
|
|
|
|
|
|
2022-03-04 17:54:19 +01:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
### Fixed
|
2022-02-06 12:05:01 +01:00
|
|
|
|
|
|
|
|
* Build: missing `wayland_client` dependency in `test-config`
|
2022-04-22 20:05:33 +02:00
|
|
|
([#918][918]).
|
2024-02-06 12:36:45 +01:00
|
|
|
* "(null)" being logged as font-name (for some fonts) when warning
|
2022-02-06 12:07:05 +01:00
|
|
|
about a non-monospaced primary font.
|
2022-02-07 10:44:00 +01:00
|
|
|
* Rare crash when the window is resized while a mouse selection is
|
2022-04-22 20:05:33 +02:00
|
|
|
ongoing ([#922][922]).
|
|
|
|
|
* Large selections crossing the scrollback wrap-around ([#924][924]).
|
|
|
|
|
* Crash in `pipe-scrollback` ([#926][926]).
|
2022-02-16 22:40:51 +01:00
|
|
|
* Exit code being 0 when a foot server with no open windows terminate
|
2022-04-22 20:05:33 +02:00
|
|
|
due to e.g. a Wayland connection failure ([#943][943]).
|
2022-02-08 21:21:17 +01:00
|
|
|
* Key binding collisions not detected for bindings specified as option
|
|
|
|
|
overrides on the command line.
|
2022-04-22 20:05:33 +02:00
|
|
|
* Crash when seat has no keyboard ([#963][963]).
|
2022-03-19 18:59:15 +01:00
|
|
|
* Key presses with e.g. `AltGr` triggering key combinations with the
|
2022-04-22 20:05:33 +02:00
|
|
|
base symbol ([#983][983]).
|
2022-04-05 19:18:46 +02:00
|
|
|
* Underline cursor sometimes being positioned too low, either making
|
|
|
|
|
it look thinner than what it should be, or being completely
|
2022-04-22 20:05:33 +02:00
|
|
|
invisible ([#1005][1005]).
|
2022-04-06 18:44:09 +02:00
|
|
|
* Fallback to `/etc/xdg` if `XDG_CONFIG_DIRS` is unset
|
2022-04-22 20:05:33 +02:00
|
|
|
([#1008][1008]).
|
2022-04-07 13:03:31 +02:00
|
|
|
* Improved compatibility with XTerm when `modifyOtherKeys=2`
|
2022-04-22 20:05:33 +02:00
|
|
|
([#1009][1009]).
|
2022-04-16 10:47:55 +02:00
|
|
|
* Window geometry when CSDs are enabled and CSD border width set to a
|
|
|
|
|
non-zero value. This fixes window snapping in e.g. GNOME.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Window size "jumping" when starting an interactive resize when CSDs
|
2022-04-16 11:15:10 +02:00
|
|
|
are enabled, and CSD border width set to a non-zero value.
|
2022-04-17 16:01:30 +02:00
|
|
|
* Key binding overrides on the command line having no effect with
|
2022-04-22 20:05:33 +02:00
|
|
|
`footclient` instances ([#931][931]).
|
2022-04-17 19:16:47 +02:00
|
|
|
* Search prev/next not updating the selection correctly when the
|
|
|
|
|
previous and new match overlaps.
|
2022-04-21 18:54:27 +02:00
|
|
|
* Various minor fixes to scrollback search, and how it finds the
|
|
|
|
|
next/prev match.
|
2022-02-06 12:05:01 +01:00
|
|
|
|
2022-04-23 11:13:25 +02:00
|
|
|
[918]: https://codeberg.org/dnkl/foot/issues/918
|
|
|
|
|
[922]: https://codeberg.org/dnkl/foot/issues/922
|
|
|
|
|
[924]: https://codeberg.org/dnkl/foot/issues/924
|
|
|
|
|
[926]: https://codeberg.org/dnkl/foot/issues/926
|
|
|
|
|
[943]: https://codeberg.org/dnkl/foot/issues/943
|
|
|
|
|
[963]: https://codeberg.org/dnkl/foot/issues/963
|
|
|
|
|
[983]: https://codeberg.org/dnkl/foot/issues/983
|
|
|
|
|
[1005]: https://codeberg.org/dnkl/foot/issues/1005
|
|
|
|
|
[1008]: https://codeberg.org/dnkl/foot/issues/1008
|
|
|
|
|
[1009]: https://codeberg.org/dnkl/foot/issues/1009
|
|
|
|
|
[931]: https://codeberg.org/dnkl/foot/issues/931
|
|
|
|
|
|
2022-02-06 12:05:01 +01:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2022-04-22 17:14:00 +02:00
|
|
|
* Ashish SHUKLA
|
2022-03-19 13:14:54 +00:00
|
|
|
* Craig Barnes
|
2022-04-22 17:14:00 +02:00
|
|
|
* Enes Hecan
|
|
|
|
|
* Johannes Altmanninger
|
|
|
|
|
* L3MON4D3
|
|
|
|
|
* Leonardo Neumann
|
|
|
|
|
* Mariusz Bialonczyk
|
|
|
|
|
* Max Gautier
|
|
|
|
|
* Merlin Büge
|
|
|
|
|
* jvoisin
|
|
|
|
|
* merkix
|
2022-03-19 13:14:54 +00:00
|
|
|
|
2022-02-05 17:38:24 +01:00
|
|
|
|
2022-02-05 17:19:43 +01:00
|
|
|
## 1.11.0
|
|
|
|
|
|
2021-12-02 20:36:09 +01:00
|
|
|
### Added
|
2021-10-09 21:40:11 +00:00
|
|
|
|
2021-11-29 22:06:35 +00:00
|
|
|
* `[mouse-bindings].selection-override-modifiers` option, specifying
|
|
|
|
|
which modifiers to hold to override mouse grabs by client
|
|
|
|
|
applications and force selection instead.
|
2021-12-27 21:13:26 +01:00
|
|
|
* _irc://_ and _ircs://_ to the default set of protocols recognized
|
|
|
|
|
when auto-detecting URLs.
|
2021-12-30 05:13:45 -06:00
|
|
|
* [SGR-Pixels (1016) mouse extended coordinates](https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Extended-coordinates) is now supported
|
2022-04-22 20:02:15 +02:00
|
|
|
([#762](https://codeberg.org/dnkl/foot/issues/762)).
|
2022-01-14 13:34:23 +01:00
|
|
|
* `XTGETTCAP` - builtin terminfo. See
|
|
|
|
|
[README.md::XTGETTCAP](README.md#xtgettcap) for details
|
2022-04-22 20:02:15 +02:00
|
|
|
([#846](https://codeberg.org/dnkl/foot/issues/846)).
|
2022-01-13 15:36:27 +01:00
|
|
|
* `DECRQSS` - _Request Selection or Setting_
|
2022-04-22 20:02:15 +02:00
|
|
|
([#798](https://codeberg.org/dnkl/foot/issues/798)). Implemented settings
|
2022-01-13 15:36:27 +01:00
|
|
|
are:
|
|
|
|
|
- `DECSTBM` - _Set Top and Bottom Margins_
|
|
|
|
|
- `SGR` - _Set Graphic Rendition_
|
|
|
|
|
- `DECSCUSR` - _Set Cursor Style_
|
2022-01-27 18:40:04 +01:00
|
|
|
* Support for searching for the last searched-for string in scrollback
|
|
|
|
|
search (search for next/prev match with an empty search string).
|
2022-01-13 15:36:27 +01:00
|
|
|
|
2022-01-11 21:37:41 +01:00
|
|
|
|
2021-12-08 18:14:44 +01:00
|
|
|
### Changed
|
2021-12-18 14:24:30 +01:00
|
|
|
|
|
|
|
|
* PaperColorDark and PaperColorLight themes renamed to
|
|
|
|
|
paper-color-dark and paper-color-light, for consistency with other
|
|
|
|
|
theme names.
|
2024-02-06 12:36:45 +01:00
|
|
|
* `[scrollback].multiplier` is now applied in "alternate scroll" mode,
|
input: apply scrollback.multplier in alterate scroll mode
Before this patch, foot only applied [scrollback].multiplier on the
normal screen, never the alt screen.
However, scrolling can be done in two ways on the alt screen:
If the application has enabled mouse support, we simply pass on the
mouse scroll events to the application. Here, it makes sense to not
apply the multiplier, and instead let the application choose how much
to scroll for each scroll event.
But, if the application has not enabled mouse support, we can still
scroll by simulating the arrow keys being pressed - alternate
scrolling (private mode 1007).
This is enabled by default in foot (but can be disabled in foot.ini
with the [mouse].alternate-scroll-mode setting).
In this mode, it makes more sense to apply the multiplier. And that’s
what this patch changes - the multiplier is now applied, on the alt
screen, when the application has not enabled mouse support, and
alternate scrolling has been enabled in foot.
Closes #859
2021-12-24 15:22:14 +01:00
|
|
|
where scroll events are translated to fake arrow key presses on the
|
2022-04-22 20:02:15 +02:00
|
|
|
alt screen ([#859](https://codeberg.org/dnkl/foot/issues/859)).
|
2024-02-06 12:36:45 +01:00
|
|
|
* The width of the block cursor's outline in an unfocused window is
|
|
|
|
|
now scaled by the output scaling factor ("desktop
|
|
|
|
|
scaling"). Previously, it was always 1px.
|
|
|
|
|
* Foot will now try to change the locale to either "C.UTF-8" or
|
|
|
|
|
"en_US.UTF-8" if started with a non-UTF8 locale. If this fails, foot
|
|
|
|
|
will start, but only to display a window with an error (user's shell
|
2022-01-11 21:37:41 +01:00
|
|
|
is not executed).
|
2022-01-15 14:56:13 +05:30
|
|
|
* `gettimeofday()` has been replaced with `clock_gettime()`, due to it being
|
|
|
|
|
marked as obsolete by POSIX.
|
2022-02-01 18:37:50 +01:00
|
|
|
* `alt+tab` now emits `ESC \t` instead of `CSI 27;3;9~`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#900](https://codeberg.org/dnkl/foot/issues/900)).
|
2022-02-02 21:17:01 +01:00
|
|
|
* File pasted, or dropped, on the alt screen is no longer quoted
|
2022-04-22 20:02:15 +02:00
|
|
|
([#379](https://codeberg.org/dnkl/foot/issues/379)).
|
2022-02-02 22:02:56 +01:00
|
|
|
* Line-based selections now include a trailing newline when copied
|
2022-04-22 20:02:15 +02:00
|
|
|
([#869](https://codeberg.org/dnkl/foot/issues/869)).
|
2022-02-02 21:35:39 +01:00
|
|
|
* Foot now clears the signal mask and resets all signal handlers to
|
|
|
|
|
their default handlers at startup
|
2022-04-22 20:02:15 +02:00
|
|
|
([#854](https://codeberg.org/dnkl/foot/issues/854)).
|
2022-02-05 16:42:38 +01:00
|
|
|
* `Copy` and `Paste` keycodes are supported by default for the
|
|
|
|
|
clipboard. These are useful for keyboards with custom firmware like
|
|
|
|
|
QMK to enable global copy/paste shortcuts that work inside and
|
|
|
|
|
outside the terminal (https://codeberg.org/dnkl/foot/pulls/894).
|
2021-12-18 14:24:30 +01:00
|
|
|
|
|
|
|
|
|
2021-12-08 18:14:44 +01:00
|
|
|
### Removed
|
wayland: remove workaround for sway-1.5 bug - slow resizing of hidden windows
In Sway-1.5, sway waits for configure ACKs from hidden windows when
views are being resized. I.e. if you have e.g. a stacked view, with
one or more windows currently not visible, and you resize the stack,
then sway will emit configure events to all windows, and then wait for
ACKs before rendering the resized view.
The problem with this is that sway also does **not** call frame
callbacks on hidden windows. So if we have rendered one frame, and
thus registered a frame callback, we’ll never render any more frames
until the window becomes visible again. Ergo, if you resize the view
interactively, only the first resize actually happens. After that, all
hidden views are “stuck”, causing ACK timeouts.
We worked around this in foot by preempting the frame
callback. I.e. destroying it, and rendering the frame anyway.
This has fixed in sway-1.6, and thus we can remove the workaround.
2021-05-11 22:09:17 +02:00
|
|
|
|
|
|
|
|
* Workaround for slow resize in Sway <= 1.5, when a foot window was
|
|
|
|
|
hidden, for example, in a tabbed view
|
|
|
|
|
(https://codeberg.org/dnkl/foot/pulls/507).
|
|
|
|
|
|
|
|
|
|
|
2021-12-08 18:14:44 +01:00
|
|
|
### Fixed
|
2021-12-14 17:45:12 +01:00
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
* Font size adjustment ("zooming") when font is configured with a
|
2021-12-14 17:45:12 +01:00
|
|
|
**pixelsize**, and `dpi-aware=no`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#842](https://codeberg.org/dnkl/foot/issues/842)).
|
2021-12-23 14:09:48 +01:00
|
|
|
* Key presses triggering keyboard layout switches also emitting CSI
|
|
|
|
|
codes in the Kitty keyboard protocol.
|
shm: get_buffer(): make sure buffer->busy is set
When going through the cached buffers, we only set buffer->busy on
the *first* re-usable buffer we found.
In some cases, we will find more than one re-usable buffer. In this
case, we select the “youngest” one (i.e the one most recently used, in
the hopes that we can use damage tracking instead of re-rendering the
entire buffer).
If the “current” buffer is younger than the previously detected,
re-usable, buffer, then we unref:ed the previously selected buffer,
and replaced it with the current one.
But, we did not sanitize it. That is, we did not:
* set buffer->busy
* clear its dirty region
* clear its scroll damage
That buffer would eventually get rendered to, and committed to the
compositor. Later, the compositor would free it. And there, in our
buffer_release() callback, we’d assert that buffer->busy was
set. And fail.
Closes #844
2021-12-15 12:37:21 +01:00
|
|
|
* Assertion in `shm.c:buffer_release()`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#844](https://codeberg.org/dnkl/foot/issues/844)).
|
2021-12-18 20:39:08 +01:00
|
|
|
* Crash when setting a key- or mouse binding to the empty string
|
2022-04-22 20:02:15 +02:00
|
|
|
([#851](https://codeberg.org/dnkl/foot/issues/851)).
|
2021-12-22 20:31:38 +01:00
|
|
|
* Crash when maximizing the window and `[csd].size=1`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#857](https://codeberg.org/dnkl/foot/issues/857)).
|
2021-12-26 14:51:26 +01:00
|
|
|
* OSC-8 URIs not getting overwritten (erased) by double-width
|
|
|
|
|
characters (e.g. emojis).
|
2021-12-29 18:11:51 +01:00
|
|
|
* Rendering of CSD borders when `csd.border-width > 0` and desktop
|
|
|
|
|
scaling has been enabled.
|
2022-02-03 19:23:43 +01:00
|
|
|
* Failure to launch when `exec(3)`:ed with an empty argv.
|
2022-01-11 20:26:49 +01:00
|
|
|
* Pasting from the primary clipboard (mouse middle clicking) did not
|
|
|
|
|
reset the scrollback view to the bottom.
|
input: reset mouse button click counter when mouse moves
As described in #883, creating a block selection (with ctrl+BTN_LEFT),
then *quickly* (within 300ms from) creating a new one, will, in fact,
_not_ create a new block selection, but a ‘select-word-whitespace’
selection (ctrl+BTN_LEFT-2).
A similar effect can be seen with plain selections (BTN_LEFT). Click
and drag to make a selection, but *release*, and make a new selection
within 300ms from the initial button press, and the new selection is
suddenly a word-based selection.
This happens because triggering a binding does *not* reset the button
click counter.
So, shouldn’t we just do that?
No, because we rely on this behavior to handle single-, double- and
triple-click actions. If we were to reset the button click handler,
then we’d have to instead delay triggering the first action with
300ms, which would make things appear laggy. If we don’t do this, it
would be impossible to double- and triple-click, since the
single-click action would keep resetting the click counter.
This patch takes a slightly different approach; we reset the click
counter when the mouse has moved “too much”. For now, “too much” is
when the cursor has moved to a different cell.
This way, single-, double- and triple-clicks continue to work as
before. But, creating actual selections, and then quickly releasing
and starting a new selection produces the expected results.
Closes #883
2022-01-12 15:38:32 +01:00
|
|
|
* Wrong mouse binding triggered when doing two mouse selections in
|
|
|
|
|
very quick (< 300ms) succession
|
2022-04-22 20:02:15 +02:00
|
|
|
([#883](https://codeberg.org/dnkl/foot/issues/883)).
|
2022-02-03 17:31:57 +01:00
|
|
|
* Bash completion giving an error when completing a list of short
|
|
|
|
|
options
|
2022-02-03 19:20:41 +01:00
|
|
|
* Sixel: large image resizes (triggered by e.g. large repeat counts in
|
|
|
|
|
`DECGRI`) are now truncated instead of ignored.
|
2022-02-03 19:23:43 +01:00
|
|
|
* Sixel: a repeat count of 0 in `DECGRI` now emits a single sixel.
|
2022-02-03 22:17:10 +01:00
|
|
|
* LIGHT ARC box drawing characters incorrectly rendered
|
2022-04-22 20:02:15 +02:00
|
|
|
platforms ([#914](https://codeberg.org/dnkl/foot/issues/914)).
|
2021-12-14 17:45:12 +01:00
|
|
|
|
|
|
|
|
|
2021-12-08 18:14:44 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-12-30 05:13:45 -06:00
|
|
|
* [lamonte](https://codeberg.org/lamonte)
|
2022-02-05 17:19:43 +01:00
|
|
|
* Érico Nogueira
|
|
|
|
|
* feeptr
|
|
|
|
|
* Felix Lechner
|
|
|
|
|
* grtcdr
|
|
|
|
|
* Mark Stosberg
|
|
|
|
|
* Nicolai Dagestad
|
|
|
|
|
* Oğuz Ersen
|
|
|
|
|
* Pranjal Kole
|
|
|
|
|
* Simon Ser
|
|
|
|
|
|
2021-12-08 18:14:44 +01:00
|
|
|
|
2021-12-08 18:08:45 +01:00
|
|
|
## 1.10.3
|
|
|
|
|
|
2021-12-02 20:36:09 +01:00
|
|
|
### Added
|
2021-12-02 20:41:45 +01:00
|
|
|
|
2022-04-22 20:02:15 +02:00
|
|
|
* Kitty keyboard protocol ([#319](https://codeberg.org/dnkl/foot/issues/319)):
|
2021-12-02 20:41:45 +01:00
|
|
|
- [Report event types](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-events)
|
|
|
|
|
(mode `0b10`)
|
2021-12-07 19:55:52 +01:00
|
|
|
- [Report alternate keys](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-alternates)
|
2021-12-08 18:20:26 +01:00
|
|
|
(mode `0b100`)
|
2021-11-29 21:03:33 +01:00
|
|
|
- [Report all keys as escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-all-keys)
|
|
|
|
|
(mode `0b1000`)
|
kitty: implement “report associated text”
In this mode, key events that generate text now add a third CSI
parameter, indicating the actual codepoint.
Remember that we always use the *unshifted* key in the CSI
escapes. With this mode, those CSI escapes now also included the text
codepoint. I.e. what would have been emitted, had we not generated a
CSI escape.
As far as I can tell, this mode has no effect unless “report all keys
as escape sequences” is enabled (reason being, without that, there
aren’t any text events that generate CSIs - they’re always emitted
as-is).
Note that Kitty itself seems to be somewhat buggy in this mode. At
least on Wayland, with my Swedish layout. For example ‘a’ and ‘A’ does
generate the expected CSIs, but ‘å’ and ‘Å’ appears to be treated as
non-text input.
Furthermore, Kitty optimizes away the modifier parameter, if no
modifiers are pressed (e.g. CSI 97;;97u), while we always emit the
modifier (CSI 97;1;97u).
Related to #319
2021-12-06 23:01:41 +01:00
|
|
|
- [Report associated text](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#report-text)
|
|
|
|
|
(mode `0b10000`)
|
2021-10-09 21:40:11 +00:00
|
|
|
|
|
|
|
|
|
2021-12-02 20:36:09 +01:00
|
|
|
### Fixed
|
2021-12-04 18:41:36 +01:00
|
|
|
|
|
|
|
|
* Crash when bitmap fonts are scaled down to very small font sizes
|
2022-04-22 20:02:15 +02:00
|
|
|
([#830](https://codeberg.org/dnkl/foot/issues/830)).
|
2021-12-08 17:41:29 +01:00
|
|
|
* Crash when overwriting/erasing an OSC-8 URL.
|
2021-12-04 18:41:36 +01:00
|
|
|
|
|
|
|
|
|
2021-12-02 20:26:42 +01:00
|
|
|
## 1.10.2
|
2021-11-22 23:02:25 +01:00
|
|
|
|
2021-11-22 22:24:13 +01:00
|
|
|
### Added
|
2021-11-22 23:02:25 +01:00
|
|
|
|
|
|
|
|
* New value, `max`, for `[tweak].grapheme-width-method`.
|
2021-11-27 18:47:20 +01:00
|
|
|
* Initial support for the [Kitty keyboard protocol](https://sw.kovidgoyal.net/kitty/keyboard-protocol/).
|
|
|
|
|
Modes supported:
|
2021-11-28 19:03:49 +01:00
|
|
|
- [Disambiguate escape codes](https://sw.kovidgoyal.net/kitty/keyboard-protocol/#disambiguate) (mode `0b1`)
|
2024-02-06 12:36:45 +01:00
|
|
|
* "Window menu" (compositor provided) on right clicks on the CSD title
|
2021-11-30 22:12:17 +01:00
|
|
|
bar.
|
2021-11-22 23:02:25 +01:00
|
|
|
|
|
|
|
|
|
2021-11-22 22:24:13 +01:00
|
|
|
### Fixed
|
2021-11-25 15:21:53 +01:00
|
|
|
|
|
|
|
|
* An ongoing mouse selection is now finalized on a pointer leave event
|
|
|
|
|
(for example by switching workspace while doing a mouse selection).
|
osc8: update URI ranges as we print data, *not* when the URI is closed
At first, an OSC-8 URI range was added when we received the closing
OSC-8 escape (i.e. with an empty URI).
But, this meant that cursor movements while the OSC-8 escape was in
effect wasn’t handled correctly, since we’d add a range that spanned
the cursor movements.
Attempts were made to handle this in the cursor movement functions, by
closing and re-opening the URI.
However, there are too many corner cases to make this a viable
approach. Scrolling is one such example, line-wrapping another.
This patch takes a different approach; emit, or update the URI range
when we print to the grid. This models the intended behavior much more
closely, where an active OSC-8 URI act like any other SGR attribute -
it is applied to all cells printed to, but otherwise have no effect.
To avoid killing performance, this is only done in the “generic”
printer. This means OSC-8 open/close calls must now “switch” the ASCII
printer.
Note that the “fast” printer still needs to *erase* pre-existing OSC-8
URIs.
Closes #816
2021-11-25 19:22:52 +01:00
|
|
|
* OSC-8 URIs in the last column
|
|
|
|
|
* OSC-8 URIs sometimes being applied to too many, and seemingly
|
2022-04-22 20:02:15 +02:00
|
|
|
unrelated cells ([#816](https://codeberg.org/dnkl/foot/issues/816)).
|
2021-11-26 20:27:55 +01:00
|
|
|
* OSC-8 URIs incorrectly being dropped when resizing the terminal
|
|
|
|
|
window with the alternate screen active.
|
render: fix csd border rendering glitch when width > 5px
CSD borders are always *at least* 5px. If url.border-width=0, those
5px are all fully transparent (and act as interactive resize handles).
As csd.border-width increases, the number of transparent pixels
decrease. Once csd.border-width >= 5, the border is fully opaque.
When csd.border-width > 5, then width of the border is (obviously)
more than 5px. But, when rendering the opaque part of the border, we
still used 5px for the invisible part, which caused some pixman
rectangles to have negative x/y coordinates.
This resulted in rendering glitches due to overflows in pixman when
rendering the borders.
The fix is to ensure the total border size is always at least, but
not *always* 5px. That is, set it to max(5, csd.border-width).
This patch also fixes an issue where the CSD borders were not
dimmed (like the titlebar) when the window looses input focus.
Closes #823
2021-11-29 19:23:58 +01:00
|
|
|
* CSD border not being dimmed when window is not focused.
|
|
|
|
|
* Visual corruption with large CSD borders
|
2022-04-22 20:02:15 +02:00
|
|
|
([#823](https://codeberg.org/dnkl/foot/issues/823)).
|
2021-12-01 20:04:01 +01:00
|
|
|
* Mouse cursor shape sometimes not being updated correctly.
|
2021-11-30 19:36:28 +01:00
|
|
|
* Color palette changes (via OSC 4/104) no longer affect RGB colors
|
2022-04-22 20:02:15 +02:00
|
|
|
([#678](https://codeberg.org/dnkl/foot/issues/678)).
|
2021-11-25 15:21:53 +01:00
|
|
|
|
|
|
|
|
|
2021-11-22 22:24:13 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-12-02 20:26:42 +01:00
|
|
|
* Jonas Ådahl
|
|
|
|
|
|
2021-11-22 22:24:13 +01:00
|
|
|
|
2021-11-22 21:56:38 +01:00
|
|
|
## 1.10.1
|
2021-11-14 23:12:18 +01:00
|
|
|
|
2021-11-14 18:26:24 +01:00
|
|
|
### Added
|
2021-11-14 23:12:18 +01:00
|
|
|
|
|
|
|
|
* `-Dthemes=false|true` meson command line option. When disabled,
|
|
|
|
|
example theme files are **not** installed.
|
2021-11-15 12:13:39 +01:00
|
|
|
* XDG desktop file for footclient.
|
2021-11-14 23:12:18 +01:00
|
|
|
|
|
|
|
|
|
2021-11-14 18:26:24 +01:00
|
|
|
### Fixed
|
2021-11-15 19:22:06 +01:00
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
* Regression: `letter-spacing` resulting in a "not a valid option"
|
2022-04-22 20:02:15 +02:00
|
|
|
error ([#795](https://codeberg.org/dnkl/foot/issues/795)).
|
2021-11-21 10:55:57 +01:00
|
|
|
* Regression: bad section name in configuration error messages.
|
2021-11-21 18:09:10 +01:00
|
|
|
* Regression: `pipe-*` key bindings not being parsed correctly,
|
|
|
|
|
resulting in invalid error messages
|
2022-04-22 20:02:15 +02:00
|
|
|
([#809](https://codeberg.org/dnkl/foot/issues/809)).
|
2021-11-20 18:10:45 +01:00
|
|
|
* OSC-8 data not being cleared when cell is overwritten
|
2022-04-22 20:02:15 +02:00
|
|
|
([#804](https://codeberg.org/dnkl/foot/issues/804),
|
|
|
|
|
[#801](https://codeberg.org/dnkl/foot/issues/801)).
|
2021-11-15 19:22:06 +01:00
|
|
|
|
|
|
|
|
|
2021-11-14 18:26:24 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-11-22 21:56:38 +01:00
|
|
|
* Arnavion
|
|
|
|
|
* Craig Barnes
|
|
|
|
|
* Soc Virnyl Silab Estela
|
|
|
|
|
* Xiretza
|
|
|
|
|
|
2021-11-14 18:26:24 +01:00
|
|
|
|
2021-11-14 18:10:43 +01:00
|
|
|
## 1.10.0
|
|
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
### Added
|
2021-10-05 23:07:01 +02:00
|
|
|
|
2021-10-22 19:57:11 +02:00
|
|
|
* `notify-focus-inhibit` boolean option, which can be used to control
|
|
|
|
|
whether desktop notifications should be inhibited when the terminal
|
|
|
|
|
has keyboard focus
|
2021-10-24 11:49:37 +02:00
|
|
|
* `[colors].scrollback-indicator` color-pair option, which specifies
|
2021-10-22 19:57:11 +02:00
|
|
|
foreground and background colors for the scrollback indicator.
|
2021-10-24 11:49:37 +02:00
|
|
|
* `[key-bindings].noop` action. Key combinations assigned to this
|
|
|
|
|
action will not be sent to the application
|
2022-04-22 20:02:15 +02:00
|
|
|
([#765](https://codeberg.org/dnkl/foot/issues/765)).
|
2021-10-27 17:31:02 +02:00
|
|
|
* Color schemes are now installed to `${datadir}/foot/themes`.
|
2021-10-27 18:27:08 +02:00
|
|
|
* `[csd].border-width` and `[csd].border-color`, allowing you to
|
|
|
|
|
configure the width and color of the CSD border.
|
2021-11-11 17:43:39 +01:00
|
|
|
* Support for `XTMODKEYS` with `Pp=4` and `Pv=2` (_modifyOtherKeys=2_).
|
2024-02-06 12:36:45 +01:00
|
|
|
* `[colors].dim0-7` options, allowing you to configure custom "dim"
|
2022-04-22 20:02:15 +02:00
|
|
|
colors ([#776](https://codeberg.org/dnkl/foot/issues/776)).
|
2021-10-22 19:57:11 +02:00
|
|
|
|
2021-10-05 23:07:01 +02:00
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
### Changed
|
2021-10-13 17:42:40 +02:00
|
|
|
|
|
|
|
|
* `[tweak].grapheme-shaping` is now enabled by default when both foot
|
|
|
|
|
itself, and fcft has been compiled with support for it.
|
|
|
|
|
* Default value of `[tweak].grapheme-width-method` changed from
|
|
|
|
|
`double-width` to `wcswidth`.
|
2021-10-16 16:58:59 +02:00
|
|
|
* INSTALL.md: `--override tweak.grapheme-shaping=no` added to PGO
|
|
|
|
|
command line.
|
2021-11-07 11:29:25 +01:00
|
|
|
* Foot now terminates if there are no available seats - for example,
|
|
|
|
|
due to the compositor not implementing a recent enough version of
|
2022-04-22 20:02:15 +02:00
|
|
|
the `wl_seat` interface ([#779](https://codeberg.org/dnkl/foot/issues/779)).
|
2021-11-07 11:35:39 +01:00
|
|
|
* Boolean options in `foot.ini` are now limited to
|
2024-02-06 12:36:45 +01:00
|
|
|
"yes|true|on|1|no|false|off|0", Previously, anything that did not
|
|
|
|
|
match "yes|true|on", or a number greater than 0, was treated as
|
|
|
|
|
"false".
|
2021-11-08 18:41:42 +01:00
|
|
|
* `[scrollback].multiplier` is no longer applied when the alternate
|
2022-04-22 20:02:15 +02:00
|
|
|
screen is in use ([#787](https://codeberg.org/dnkl/foot/issues/787)).
|
2021-10-13 17:42:40 +02:00
|
|
|
|
|
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
### Removed
|
2021-11-07 15:58:42 +01:00
|
|
|
|
|
|
|
|
* The bundled PKGBUILD.
|
2021-11-14 14:17:08 +01:00
|
|
|
* Deprecated `bell` option (replaced with `[bell]` section in 1.8.0).
|
|
|
|
|
* Deprecated `url-launch`, `jump-label-letters` and `osc8-underline`
|
|
|
|
|
options (moved to a dedicated `[url]` section in 1.8.0)
|
2021-11-07 15:58:42 +01:00
|
|
|
|
|
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
### Fixed
|
2021-10-02 17:33:01 +02:00
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
* 'Sticky' modifiers in input handling; when determining modifier
|
2021-10-02 17:33:01 +02:00
|
|
|
state, foot was looking at **depressed** modifiers, not
|
|
|
|
|
**effective** modifiers, like it should.
|
2021-10-08 02:28:01 +00:00
|
|
|
* Fix crashes after enabling CSD at runtime when `csd.size` is 0.
|
2021-10-19 21:34:04 +02:00
|
|
|
* Convert `\r` to `\n` when reading clipboard data
|
2022-04-22 20:02:15 +02:00
|
|
|
([#752](https://codeberg.org/dnkl/foot/issues/752)).
|
2021-10-20 18:47:36 +02:00
|
|
|
* Clipboard occasionally ceasing to work, until window has been
|
2022-04-22 20:02:15 +02:00
|
|
|
re-focused ([#753](https://codeberg.org/dnkl/foot/issues/753)).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Don't propagate window title updates to the Wayland compositor
|
2021-10-22 18:01:53 +02:00
|
|
|
unless the new title is different from the old title.
|
2021-10-02 17:33:01 +02:00
|
|
|
|
|
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-11-14 18:10:43 +01:00
|
|
|
* armin
|
|
|
|
|
* Craig Barnes
|
|
|
|
|
* Daniel Martí
|
|
|
|
|
* feeptr
|
|
|
|
|
* Mitja Horvat
|
|
|
|
|
* Ronan Pigott
|
|
|
|
|
* Stanislav Ochotnický
|
|
|
|
|
|
2021-10-02 14:48:13 +02:00
|
|
|
|
2021-10-02 14:46:42 +02:00
|
|
|
## 1.9.2
|
|
|
|
|
|
2021-10-01 21:57:57 +02:00
|
|
|
### Changed
|
2021-10-02 14:43:02 +02:00
|
|
|
|
|
|
|
|
* PGO helper scripts no longer set `LC_CTYPE=en_US.UTF-8`. But, note
|
2024-02-06 12:36:45 +01:00
|
|
|
that "full" PGO builds still **require** a UTF-8 locale; you need
|
2021-10-02 14:43:02 +02:00
|
|
|
to set one manually in your build script
|
2022-04-22 20:02:15 +02:00
|
|
|
([#728](https://codeberg.org/dnkl/foot/issues/728)).
|
2021-10-02 14:43:02 +02:00
|
|
|
|
|
|
|
|
|
2021-10-01 20:52:19 +02:00
|
|
|
## 1.9.1
|
|
|
|
|
|
2021-08-27 13:44:18 +02:00
|
|
|
### Added
|
2021-08-31 19:54:31 +02:00
|
|
|
|
|
|
|
|
* Warn when it appears the primary font is not monospaced. Can be
|
|
|
|
|
disabled by setting `[tweak].font-monospace-warn=no`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#704](https://codeberg.org/dnkl/foot/issues/704)).
|
2021-09-12 16:59:23 +02:00
|
|
|
* PGO build scripts, in the `pgo` directory. See INSTALL.md -
|
|
|
|
|
_Performance optimized, PGO_, for details
|
2022-04-22 20:02:15 +02:00
|
|
|
([#701](https://codeberg.org/dnkl/foot/issues/701)).
|
box-drawing: add braille characters
Render braille ourselves, instead of using font glyphs. Decoding a
braille character is easy enough; there are 256 codepoints,
represented by an 8-bit integer (i.e. subtract the Unicode codepoint
offset, 0x2800, and you’re left with an integer in the range 0-255).
Each bit corresponds to a dot. The first 6 bits represent the upper 6
dots, while the two last bits represent the fourth (and last) row of
dots.
The hard part is sizing the dots and the spacing between them.
The aim is to have the spacing between the dots be the same size as
the dots themselves, and to have the margins on each side be half the
size of the dots.
In a perfectly sized cell, this means two braille characters next to
each other will be evenly spaced.
This is however almost never the case. The layout logic currently:
* Set dot size to either the width / 4, or height / 8, depending on
which one is smallest.
* Horizontal spacing is initialized to the width / 4
* Vertical spacing is initialized to the height / 8
* Horizontal margins are initialized to the horizontal spacing / 2
* Vertical margins are initialized to the vertical spacing / 2.
Next, we calculate the number of “remaining” pixels. That is, if we
add the left margin, two dots and the spacing between, how many pixels
are left on the horizontal axis?
These pixels are distributed in the following order (we “stop” as soon
as we run out of pixels):
* If the dot size is 0 (happens for very small font sizes), increase
it to 1.
* If the margins are 0, increase them to 1.
* If we have enough pixels (need at 2 horizontal and 4 vertical),
increase the dot size.
* Increase spacing.
* Increase margins.
Closes #702
2021-09-02 14:55:26 +02:00
|
|
|
* Braille characters (U+2800 - U+28FF) are now rendered by foot
|
2022-04-22 20:02:15 +02:00
|
|
|
itself ([#702](https://codeberg.org/dnkl/foot/issues/702)).
|
2021-09-18 23:40:40 +01:00
|
|
|
* `-e` command-line option. This option is simply ignored, to appease
|
|
|
|
|
program launchers that blindly pass `-e` to any terminal emulator
|
2022-04-22 20:02:15 +02:00
|
|
|
([#184](https://codeberg.org/dnkl/foot/issues/184)).
|
2021-08-31 19:54:31 +02:00
|
|
|
|
|
|
|
|
|
2021-08-27 13:44:18 +02:00
|
|
|
### Changed
|
2021-08-30 20:31:28 +02:00
|
|
|
|
|
|
|
|
* `-Ddefault-terminfo` is now also applied to the generated terminfo
|
|
|
|
|
definitions when `-Dterminfo=enabled`.
|
|
|
|
|
* `-Dcustom-terminfo-install-location` no longer accepts `no` as a
|
|
|
|
|
special value, to disable exporting `TERMINFO`. To achieve the same
|
2024-02-06 12:36:45 +01:00
|
|
|
result, simply don't set it at all. If it _is_ set, `TERMINFO` is
|
2021-08-30 20:31:28 +02:00
|
|
|
still exported, like before.
|
|
|
|
|
* The default install location for the terminfo definitions have been
|
|
|
|
|
changed back to `${datadir}/terminfo`.
|
2024-02-06 12:36:45 +01:00
|
|
|
* `dpi-aware=auto`: fonts are now scaled using the monitor's DPI only
|
2021-09-19 11:58:34 +02:00
|
|
|
when **all** monitors have a scaling factor of one
|
2022-04-22 20:02:15 +02:00
|
|
|
([#714](https://codeberg.org/dnkl/foot/issues/714)).
|
fcft: adapt to API changes in fcft-3.x
Fcft no longer uses wchar_t, but plain uint32_t to represent
codepoints.
Since we do a fair amount of string operations in foot, it still makes
sense to use something that actually _is_ a string (or character),
rather than an array of uint32_t.
For this reason, we switch out all wchar_t usage in foot to
char32_t. We also verify, at compile-time, that char32_t used
UTF-32 (which is what fcft expects).
Unfortunately, there are no string functions for char32_t. To avoid
having to re-implement all wcs*() functions, we add a small wrapper
layer of c32*() functions.
These wrapper functions take char32_t arguments, but then simply call
the corresponding wcs*() function.
For this to work, wcs*() must _also_ be UTF-32 compatible. We can
check for the presence of the __STDC_ISO_10646__ macro. If set,
wchar_t is at least 4 bytes and its internal representation is UTF-32.
FreeBSD does *not* define this macro, because its internal wchar_t
representation depends on the current locale. It _does_ use UTF-32
_if_ the current locale is UTF-8.
Since foot enforces UTF-8, we simply need to check if __FreeBSD__ is
defined.
Other fcft API changes:
* fcft_glyph_rasterize() -> fcft_codepoint_rasterize()
* font.space_advance has been removed
* ‘tags’ have been removed from fcft_grapheme_rasterize()
* ‘fcft_log_init()’ removed
* ‘fcft_init()’ and ‘fcft_fini()’ must be explicitly called
2021-08-21 14:50:42 +02:00
|
|
|
* fcft >= 3.0.0 in now required.
|
2021-08-30 20:31:28 +02:00
|
|
|
|
|
|
|
|
|
2021-08-27 13:44:18 +02:00
|
|
|
### Fixed
|
2021-09-06 18:12:45 +02:00
|
|
|
|
|
|
|
|
* Added workaround for GNOME bug where multiple button press events
|
|
|
|
|
(for the same button) is sent to the CSDs without any release or
|
2022-04-22 20:02:15 +02:00
|
|
|
leave events in between ([#709](https://codeberg.org/dnkl/foot/issues/709)).
|
2021-09-30 13:39:23 +02:00
|
|
|
* Line-wise selection not taking soft line-wrapping into account
|
2022-04-22 20:02:15 +02:00
|
|
|
([#726](https://codeberg.org/dnkl/foot/issues/726)).
|
2021-09-06 18:12:45 +02:00
|
|
|
|
|
|
|
|
|
2021-08-27 13:44:18 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-09-18 23:40:40 +01:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2021-10-01 20:52:19 +02:00
|
|
|
* Arnavion
|
2021-09-18 23:40:40 +01:00
|
|
|
|
2021-08-27 13:44:18 +02:00
|
|
|
|
2021-08-27 12:45:22 +02:00
|
|
|
## 1.9.0
|
|
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
### Added
|
2021-07-22 21:39:35 +02:00
|
|
|
|
|
|
|
|
* Window title in the CSDs
|
2022-04-22 20:02:15 +02:00
|
|
|
([#638](https://codeberg.org/dnkl/foot/issues/638)).
|
2021-07-24 13:09:25 +02:00
|
|
|
* `-Ddocs=disabled|enabled|auto` meson command line option.
|
2021-07-30 14:44:16 +02:00
|
|
|
* Support for `~`-expansion in the `include` directive
|
2022-04-22 20:02:15 +02:00
|
|
|
([#659](https://codeberg.org/dnkl/foot/issues/659)).
|
2021-08-03 18:10:41 +02:00
|
|
|
* Unicode 13 characters U+1FB3C - U+1FB6F, U+1FB9A and U+1FB9B to list
|
|
|
|
|
of box drawing characters rendered by foot itself (rather than using
|
2022-04-22 20:02:15 +02:00
|
|
|
font glyphs) ([#474](https://codeberg.org/dnkl/foot/issues/474)).
|
2021-08-05 19:21:57 +02:00
|
|
|
* `XM`+`xm` to terminfo.
|
2021-08-05 18:34:09 +02:00
|
|
|
* Mouse buttons 6/7 (mouse wheel left/right).
|
2021-08-09 19:58:40 +02:00
|
|
|
* `url.uri-characters` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#654](https://codeberg.org/dnkl/foot/issues/654)).
|
2021-07-22 21:39:35 +02:00
|
|
|
|
|
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
### Changed
|
2021-07-22 18:22:39 +02:00
|
|
|
|
terminfo: install to $datadir/foot/terminfo by default, append to TERMINFO_DIRS
As of 2021-07-31, ncurses ships its own version of foot’s terminfo.
Since:
* It doesn’t have the non-standard Sync,Tc,setrgbf,setrgbb
capabilities.
* It doesn’t set hs,fsl,dsl (statusbar).
* We want to be able to update our termminfo without waiting for an
ncurses release.
* Foot should be installable and usable on Linux systems that doesn’t
have the latest ncurses.
we still want to ship our own version. We can however not install it
to the default terminfo location (e.g. /usr/share/terminfo), since it
will collide with the ncurses provided files.
Our options are to either rename our terminfo to something else, or to
keep the name, but install our terminfo files somewhere else.
The first option would be the easy one. However, I think it makes
sense to use the same name. For example, a user that SSH’s into a
remote system that does *not* have our own version installed,
but *does* have the ncurses one, will gracefully fall back to that
one, which is better than manually having to set
e.g. TERM=xterm-256color.
Now, if we want to use the same name, we need to install it somewhere
else. But where? And how do we ensure our version is preferred over
the ncurses one?
I opted to $datadir/foot/terminfo (e.g. /usr/share/foot/terminfo) by
default. It makes it namespaced to foot (i.e. we’re not introducing a
new “standard” terminfo location), thus guaranteeing it wont collide
with ncurses.
To enable applications to find it, we export TERMINFO_DIRS. This is a
list of *additional* directories to search for terminfo files. If it’s
already defined, we *append* to it.
The nice thing with this is, if there’s no terminfo in that
location (e.g. when you SSH into a remote), the default terminfo
location is *also* searched. But only *after* having searched through
TERMINFO_DIRS.
In short: our version is preferred, but the ncurses one (or an older
version of our terminfo package!) will be used if ours cannot be
found.
To enable packagers full control over the new behavior, the existing
meson command line options have been modified, and a new option added:
-Dterminfo=disabled|enabled|auto: *build* and *install* the terminfo
files.
-Dcustom-terminfo-install-location=<path>: *where* the terminfo files
are expected to be found.
This *needs* to be set *even* if -Dterminfo=disabled. For example, if
the packaging script builds and packages the terminfo files separate
from the regular foot build. The path is *relative to $prefix*, and
defaults to $datadir/foot/terminfo.
This is the value that will be appended to TERMINFO_DIRS. Note that
you can set it to ‘no’, in which case foot will *not* set/modify
TERMINFO_DIRS. Only do this if you don’t intend to package foot’s
terminfo files at all (i.e. you plan on using the ncurses ones only).
-Ddefault-terminfo=foot. Allows overriding the default TERM
value. This should only be changed if the target platform doesn’t
support terminfo files.
Closes #671
2021-08-07 16:42:51 +02:00
|
|
|
* Terminfo files can now co-exist with the foot terminfo files from
|
|
|
|
|
ncurses. See `INSTALL.md` for more information
|
2022-04-22 20:02:15 +02:00
|
|
|
([#671](https://codeberg.org/dnkl/foot/issues/671)).
|
2021-07-22 18:22:39 +02:00
|
|
|
* `bold-text-in-bright=palette-based` now only brightens colors from palette
|
2021-07-31 20:13:52 +02:00
|
|
|
* Raised grace period between closing the PTY and sending `SIGKILL` (when
|
|
|
|
|
terminating the client application) from 4 to 60 seconds.
|
|
|
|
|
* When terminating the client application, foot now sends `SIGTERM` immediately
|
|
|
|
|
after closing the PTY, instead of waiting 2 seconds.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Foot now sends `SIGTERM`/`SIGKILL` to the client application's process group,
|
|
|
|
|
instead of just to the client application's process.
|
2021-08-05 19:21:57 +02:00
|
|
|
* `kmous` terminfo capability from `\E[M` to `\E[<`.
|
pt-or-px: heed the dpi-aware setting
Before this patch, pt-or-px values, like letter-spacing, were *always*
scaled using the current DPI value.
This is wrong; if the fonts are scaled using the output’s scaling
factor, then so should all other point values.
This also fixes an issue where e.g. letter-spacing would use one DPI
value at startup, but then when increasing/decreasing or resetting the
font size, would be re-calculated using a different DPI value, leading
to completely different spacing.
This happened when there were multiple monitors, with different DPI
values, and foot guessed the initial DPI value wrong. Normally, foot
would correct itself as soon as the window was mapped, and the
“correct” DPI value known. But if the fonts were scaled using the
scaling factor, it was possible that the font reload never happened.
This patch also updates the thickness calculation (for LIGHT and HEAVY
box drawing characters) to use the scaling factor when appropriate.
Closes #680
2021-08-13 17:38:56 +02:00
|
|
|
* pt-or-px values (`letter-spacing`, etc) and the line thickness
|
|
|
|
|
(`tweak.box-drawing-base-thickness`) in box drawing characters are
|
2024-02-06 12:36:45 +01:00
|
|
|
now translated to pixel values using the monitor's scaling factor
|
pt-or-px: heed the dpi-aware setting
Before this patch, pt-or-px values, like letter-spacing, were *always*
scaled using the current DPI value.
This is wrong; if the fonts are scaled using the output’s scaling
factor, then so should all other point values.
This also fixes an issue where e.g. letter-spacing would use one DPI
value at startup, but then when increasing/decreasing or resetting the
font size, would be re-calculated using a different DPI value, leading
to completely different spacing.
This happened when there were multiple monitors, with different DPI
values, and foot guessed the initial DPI value wrong. Normally, foot
would correct itself as soon as the window was mapped, and the
“correct” DPI value known. But if the fonts were scaled using the
scaling factor, it was possible that the font reload never happened.
This patch also updates the thickness calculation (for LIGHT and HEAVY
box drawing characters) to use the scaling factor when appropriate.
Closes #680
2021-08-13 17:38:56 +02:00
|
|
|
when `dpi-aware=no`, or `dpi-aware=auto` and the scaling factor is
|
2022-04-22 20:02:15 +02:00
|
|
|
larger than 1 ([#680](https://codeberg.org/dnkl/foot/issues/680)).
|
2021-08-30 17:55:36 +02:00
|
|
|
* Spawning a new terminal with a working directory that does not exist
|
|
|
|
|
is no longer a fatal error.
|
2021-07-22 18:22:39 +02:00
|
|
|
|
|
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
### Removed
|
2021-08-14 21:08:32 +02:00
|
|
|
|
|
|
|
|
* `km`/`smm`/`rmm` from terminfo; foot prefixes Alt-key combinations
|
2024-02-06 12:36:45 +01:00
|
|
|
with `ESC`, and not by setting the 8:th "meta" bit, regardless of
|
2021-08-14 21:08:32 +02:00
|
|
|
`smm`/`rmm`. While this _can_ be disabled by, resetting private mode
|
|
|
|
|
1036, the terminfo should reflect the **default** behavior
|
2022-04-22 20:02:15 +02:00
|
|
|
([#670](https://codeberg.org/dnkl/foot/issues/670)).
|
2021-08-14 21:10:47 +02:00
|
|
|
* Keypad application mode keys from terminfo; enabling the keypad
|
|
|
|
|
application mode is not enough to make foot emit these sequences -
|
|
|
|
|
you also need to disable private mode 1035
|
2022-04-22 20:02:15 +02:00
|
|
|
([#670](https://codeberg.org/dnkl/foot/issues/670)).
|
2021-08-14 21:08:32 +02:00
|
|
|
|
|
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
### Fixed
|
2021-07-20 11:12:38 +02:00
|
|
|
|
|
|
|
|
* Rendering into the right margin area with `tweak.overflowing-glyphs`
|
|
|
|
|
enabled.
|
2022-04-22 20:02:15 +02:00
|
|
|
* PGO builds with clang ([#642](https://codeberg.org/dnkl/foot/issues/642)).
|
2021-07-22 17:53:29 +02:00
|
|
|
* Crash in scrollback search mode when selection has been canceled due
|
|
|
|
|
to terminal content updates
|
2022-04-22 20:02:15 +02:00
|
|
|
([#644](https://codeberg.org/dnkl/foot/issues/644)).
|
2021-07-24 20:31:14 +02:00
|
|
|
* Foot process not terminating when the Wayland connection is broken
|
2022-04-22 20:02:15 +02:00
|
|
|
([#651](https://codeberg.org/dnkl/foot/issues/651)).
|
2021-07-26 19:00:56 +02:00
|
|
|
* Output scale being zero on compositors that does not advertise a
|
|
|
|
|
scaling factor.
|
2021-07-31 20:13:52 +02:00
|
|
|
* Slow-to-terminate client applications causing other footclient instances to
|
|
|
|
|
freeze when closing a footclient window.
|
render: run the “overflowing glyphs” prepass *before* rendering sixels
This fixes an issue where the left-most column of a sixel was
“overwritten” by the cell content.
This patch also rewrites the prepass logic, to try to reduce the
number of loads performed.
The new logic loops each row from left to right, looking for dirty
cells. When a dirty cell is found, we first scan backwards, until we
find a non-overflowing cell. That cell is unaffected by the
overflowing cell we’re currently dealing with.
We can also stop as soon as we see a dirty cell, since that cell will
already have been dealt with.
Then, we scan forward, dirtying cells until we see a non-overflowing
cell. That first non-overflowing cell is also dirtied, but after that
we break.
The last loop, that scans forward, advances the same cell pointer used
in the outer loop.
2021-08-10 18:33:18 +02:00
|
|
|
* Underlying cell content showing through in the left-most column of
|
|
|
|
|
sixels.
|
2021-08-18 20:18:00 +02:00
|
|
|
* `cursor.blink` not working in GNOME
|
2022-04-22 20:02:15 +02:00
|
|
|
([#686](https://codeberg.org/dnkl/foot/issues/686)).
|
2021-08-17 18:31:42 +02:00
|
|
|
* Blinking cursor stops blinking, or becoming invisible, when
|
|
|
|
|
switching focus from, and then back to a terminal window on GNOME
|
2022-04-22 20:02:15 +02:00
|
|
|
([#686](https://codeberg.org/dnkl/foot/issues/686)).
|
2021-07-20 11:12:38 +02:00
|
|
|
|
|
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-07-26 19:00:56 +02:00
|
|
|
* Nihal Jere
|
2021-07-22 18:22:39 +02:00
|
|
|
* [nowrep](https://codeberg.org/nowrep)
|
2021-08-27 12:45:22 +02:00
|
|
|
* [clktmr](https://codeberg.org/clktmr)
|
2021-07-26 19:00:56 +02:00
|
|
|
|
2021-07-18 18:07:26 +02:00
|
|
|
|
2021-07-18 17:57:42 +02:00
|
|
|
## 1.8.2
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
### Added
|
2021-07-04 17:59:40 +02:00
|
|
|
|
|
|
|
|
* `locked-title=no|yes` to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#386](https://codeberg.org/dnkl/foot/issues/386)).
|
2021-06-15 11:45:27 +02:00
|
|
|
* `tweak.overflowing-glyphs` option, which can be enabled to fix rendering
|
|
|
|
|
issues with glyphs of any width that appear cut-off
|
2022-04-22 20:02:15 +02:00
|
|
|
([#592](https://codeberg.org/dnkl/foot/issues/592)).
|
2021-07-04 17:59:40 +02:00
|
|
|
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
### Changed
|
2021-07-02 16:31:46 +02:00
|
|
|
|
|
|
|
|
* Non-empty lines are now considered to have a hard linebreak,
|
|
|
|
|
_unless_ an actual word-wrap is inserted.
|
2021-07-14 19:17:44 +02:00
|
|
|
* Setting `DECSDM` now _disables_ sixel scrolling, while resetting it
|
2022-04-22 20:02:15 +02:00
|
|
|
_enables_ scrolling ([#631](https://codeberg.org/dnkl/foot/issues/631)).
|
2021-07-02 16:31:46 +02:00
|
|
|
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
### Removed
|
2021-06-15 11:45:27 +02:00
|
|
|
|
|
|
|
|
* The `tweak.allow-overflowing-double-width-glyphs` and
|
|
|
|
|
`tweak.pua-double-width` options (which have been superseded by
|
|
|
|
|
`tweak.overflowing-glyphs`).
|
|
|
|
|
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
### Fixed
|
2021-07-02 16:29:08 +02:00
|
|
|
|
2021-07-11 09:54:04 +02:00
|
|
|
* FD exhaustion when repeatedly entering/exiting URL mode with many
|
|
|
|
|
URLs.
|
2021-07-11 10:06:12 +02:00
|
|
|
* Double free of URL while removing duplicated and/or overlapping URLs
|
2022-04-22 20:02:15 +02:00
|
|
|
in URL mode ([#627](https://codeberg.org/dnkl/foot/issues/627)).
|
url-mode: abort when running into un-allocated scrollback memory
When tagging URL cells (in preparation for rendering URL mode), we
loop the URL’s entire range, setting the `url` attribute of all cells,
and dirtying the rows.
It is possible to create URLs that are invalid, and wrap around the
scrollback, even though the scrollback hasn’t yet been filled. For
example, by starting an OSC-8 URL, moving the cursor, and then closing
the OSC-8 URL.
These URLs are invalid, but are still rendered just fine. “Fine” being
relative - they will typically fill the entire screen. But at least
that’s a very clear indication for the user that’s something is wrong.
The problem is when we hit un-allocated scrollback rows. We didn’t
check for NULL rows, and crashed.
This has now been fixed.
2021-07-11 11:31:11 +02:00
|
|
|
* Crash when an unclosed OSC-8 URL ran into un-allocated scrollback
|
|
|
|
|
rows.
|
2021-07-14 19:48:13 +02:00
|
|
|
* Some box-drawing characters were rendered incorrectly on big-endian
|
|
|
|
|
architectures.
|
2021-07-15 18:27:10 +02:00
|
|
|
* Crash when resizing the window to the smallest possible size while
|
|
|
|
|
scrollback search is active.
|
2021-07-15 18:26:26 +02:00
|
|
|
* Scrollback indicator being incorrectly rendered when window size is
|
|
|
|
|
very small.
|
2021-07-15 18:39:41 +02:00
|
|
|
* Reduced memory usage in URL mode.
|
2021-07-18 15:38:46 +02:00
|
|
|
* Crash when the `E3` escape (`\E[3J`) was executed, and there was a
|
2021-07-18 16:31:33 +02:00
|
|
|
selection, or sixel image, in the scrollback
|
2022-04-22 20:02:15 +02:00
|
|
|
([#633](https://codeberg.org/dnkl/foot/issues/633)).
|
2021-07-02 16:29:08 +02:00
|
|
|
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-06-15 11:45:27 +02:00
|
|
|
* [clktmr](https://codeberg.org/clktmr)
|
|
|
|
|
|
2021-07-01 20:19:28 +02:00
|
|
|
|
2021-07-01 20:14:20 +02:00
|
|
|
## 1.8.1
|
2021-06-26 22:15:09 +01:00
|
|
|
|
2021-06-25 08:44:41 +02:00
|
|
|
### Added
|
2021-06-26 22:15:09 +01:00
|
|
|
|
|
|
|
|
* `--log-level=none` command-line option.
|
2021-06-29 08:47:46 +01:00
|
|
|
* `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
|
2022-04-22 20:02:15 +02:00
|
|
|
([#615](https://codeberg.org/dnkl/foot/issues/615)).
|
2021-06-30 18:00:33 +02:00
|
|
|
|
2021-06-26 22:15:09 +01:00
|
|
|
|
2021-06-25 08:44:41 +02:00
|
|
|
### Changed
|
2021-07-01 20:13:03 +02:00
|
|
|
|
|
|
|
|
* 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
|
2021-07-01 20:44:53 +02:00
|
|
|
behavior in foot-1.8.0.
|
2021-07-01 20:13:03 +02:00
|
|
|
|
|
|
|
|
|
2021-06-25 08:44:41 +02:00
|
|
|
### Fixed
|
2021-06-25 20:42:23 +02:00
|
|
|
|
|
|
|
|
* Grapheme cluster state being reset between codepoints.
|
2021-06-29 18:08:15 +02:00
|
|
|
* Regression: custom URL key bindings not working
|
2022-04-22 20:02:15 +02:00
|
|
|
([#614](https://codeberg.org/dnkl/foot/issues/614)).
|
2021-06-25 20:42:23 +02:00
|
|
|
|
|
|
|
|
|
2021-06-25 08:44:41 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-06-26 22:15:09 +01:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
|
|
|
|
|
2021-06-25 08:44:41 +02:00
|
|
|
|
2021-06-25 08:23:36 +02:00
|
|
|
## 1.8.0
|
2021-04-25 18:35:46 +01:00
|
|
|
|
2021-06-24 10:51:43 +02:00
|
|
|
### Grapheme shaping
|
|
|
|
|
|
2021-06-24 22:55:28 +02:00
|
|
|
This release adds _experimental, opt-in_ support for grapheme cluster
|
2021-06-24 10:51:43 +02:00
|
|
|
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 👩🏽🚀
|
2021-06-24 14:04:08 +02:00
|
|
|
consists of 4 codepoints (_Woman_ + _Medium skin tone_ + _Zero width
|
2021-06-24 10:51:43 +02:00
|
|
|
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
|
2021-06-24 17:36:52 +02:00
|
|
|
codepoints. This allowed us to cluster combining characters, like q́
|
2021-06-24 14:04:08 +02:00
|
|
|
(_q_ + _COMBINING ACUTE ACCENT_).
|
2021-06-24 10:51:43 +02:00
|
|
|
|
|
|
|
|
Once we have a grapheme cluster, we need to _shape_ it.
|
|
|
|
|
|
2021-06-24 17:36:52 +02:00
|
|
|
Combining characters are simple: they are typically rendered as
|
2021-06-24 10:51:43 +02:00
|
|
|
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`
|
|
|
|
|
|
2021-06-24 17:36:57 +02:00
|
|
|
If `tweak.grapheme-shaping` has **not** been enabled, foot will
|
|
|
|
|
neither use libutf8proc to do grapheme cluster segmentation, nor will
|
2024-02-06 12:36:45 +01:00
|
|
|
it use fcft's grapheme shaping capabilities to shape combining
|
2021-06-24 17:36:57 +02:00
|
|
|
characters.
|
|
|
|
|
|
2024-02-06 12:36:45 +01:00
|
|
|
This feature is _experimental_ mostly due to the "wcwidth" problem;
|
2021-06-24 10:51:43 +02:00
|
|
|
how many cells should foot allocate for a grapheme cluster? While the
|
|
|
|
|
answer may seem simple, the problem is that, whatever the answer is,
|
2021-06-24 14:04:08 +02:00
|
|
|
the client application **must** come up with the **same**
|
2021-06-24 10:51:43 +02:00
|
|
|
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**.
|
|
|
|
|
|
2021-06-24 14:04:08 +02:00
|
|
|
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.
|
|
|
|
|
|
2021-06-24 10:51:43 +02:00
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Added
|
2021-04-25 18:35:46 +01:00
|
|
|
|
|
|
|
|
* Support for DECSET/DECRST 2026, as an alternative to the existing
|
|
|
|
|
"synchronized updates" DCS sequences
|
2022-04-22 20:02:15 +02:00
|
|
|
([#459](https://codeberg.org/dnkl/foot/issues/459)).
|
2021-04-30 20:31:47 +02:00
|
|
|
* `cursor.beam-thickness` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#464](https://codeberg.org/dnkl/foot/issues/464)).
|
2021-05-18 18:52:10 +02:00
|
|
|
* `cursor.underline-thickness` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#524](https://codeberg.org/dnkl/foot/issues/524)).
|
2021-05-03 17:57:16 +02:00
|
|
|
* Unicode 13 characters U+1FB70 - U+1FB8B to list of box drawing
|
|
|
|
|
characters rendered by foot itself (rather than using font glyphs)
|
2022-04-22 20:02:15 +02:00
|
|
|
([#471](https://codeberg.org/dnkl/foot/issues/471)).
|
2021-05-20 17:56:56 +02:00
|
|
|
* Dedicated `[bell]` section to config, supporting multiple actions
|
|
|
|
|
and a new `command` action to run an arbitrary command.
|
2021-05-07 04:49:34 -05:00
|
|
|
(https://codeberg.org/dnkl/foot/pulls/483)
|
2021-05-20 17:56:56 +02:00
|
|
|
* Dedicated `[url]` section to config.
|
2021-05-20 17:58:06 +02:00
|
|
|
* `[url].protocols` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#531](https://codeberg.org/dnkl/foot/issues/531)).
|
2021-05-08 02:18:45 -05:00
|
|
|
* Support for setting the full 256 color palette in foot.ini
|
2022-04-22 20:02:15 +02:00
|
|
|
([#489](https://codeberg.org/dnkl/foot/issues/489))
|
2021-05-14 14:22:43 +02:00
|
|
|
* XDG activation support, will be used by `[bell].urgent` when
|
|
|
|
|
available (falling back to coloring the window margins red when
|
2022-04-22 20:02:15 +02:00
|
|
|
unavailable) ([#487](https://codeberg.org/dnkl/foot/issues/487)).
|
2021-05-25 16:51:07 +01:00
|
|
|
* `ctrl`+`c` as a default key binding; to cancel search/url mode.
|
2021-05-27 12:11:47 +02:00
|
|
|
* `${window-title}` to `notify`.
|
2021-05-28 17:44:13 +02:00
|
|
|
* Support for including files in `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#555](https://codeberg.org/dnkl/foot/issues/555)).
|
2021-05-30 10:21:24 +02:00
|
|
|
* `ENVIRONMENT` section in **foot**(1) and **footclient**(1) man pages
|
2022-04-22 20:02:15 +02:00
|
|
|
([#556](https://codeberg.org/dnkl/foot/issues/556)).
|
2021-05-31 17:10:05 +02:00
|
|
|
* `tweak.pua-double-width` option to `foot.ini`, letting you force
|
|
|
|
|
_Private Usage Area_ codepoints to be treated as double-width
|
|
|
|
|
characters.
|
2021-06-02 17:50:29 +02:00
|
|
|
* OSC 9 desktop notifications (iTerm2 compatible).
|
2021-06-09 09:30:34 +01:00
|
|
|
* Support for LS2 and LS3 (locking shift) escape sequences
|
2022-04-22 20:02:15 +02:00
|
|
|
([#581](https://codeberg.org/dnkl/foot/issues/581)).
|
2021-06-11 04:40:08 -05:00
|
|
|
* Support for overriding configuration options on the command line
|
2022-04-22 20:02:15 +02:00
|
|
|
([#554](https://codeberg.org/dnkl/foot/issues/554),
|
|
|
|
|
[#600](https://codeberg.org/dnkl/foot/issues/600)).
|
2021-06-17 17:52:38 +02:00
|
|
|
* `underline-offset` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#490](https://codeberg.org/dnkl/foot/issues/490)).
|
2021-06-20 10:44:50 +02:00
|
|
|
* `csd.button-color` option to `foot.ini`.
|
2021-06-23 16:58:10 +02:00
|
|
|
* `-Dterminfo-install-location=disabled|<custom-path>` meson command
|
2022-04-22 20:02:15 +02:00
|
|
|
line option ([#569](https://codeberg.org/dnkl/foot/issues/569)).
|
2021-04-30 20:31:47 +02:00
|
|
|
|
2021-04-25 18:35:46 +01:00
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Changed
|
2021-04-22 11:26:59 +02:00
|
|
|
|
2021-05-07 11:31:33 +02:00
|
|
|
* [fcft](https://codeberg.org/dnkl/fcft): required version bumped from
|
|
|
|
|
2.3.x to 2.4.x.
|
2021-04-22 11:26:59 +02:00
|
|
|
* `generate-alt-random-writes.py --sixel`: width and height of emitted
|
|
|
|
|
sixels has been adjusted.
|
2021-04-23 21:27:32 +02:00
|
|
|
* _Concealed_ text (`\E[8m`) is now revealed when highlighted.
|
2021-04-23 21:30:47 +02:00
|
|
|
* The background color of highlighted text is now adjusted, when the
|
|
|
|
|
foreground and background colors are the same, making the
|
|
|
|
|
highlighted text legible
|
2022-04-22 20:02:15 +02:00
|
|
|
([#455](https://codeberg.org/dnkl/foot/issues/455)).
|
2021-04-30 20:31:47 +02:00
|
|
|
* `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.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Foot's exit code is now -26/230 when foot itself failed to launch
|
2021-04-30 22:47:16 +02:00
|
|
|
(due to invalid command line options, client application/shell not
|
2024-02-06 12:36:45 +01:00
|
|
|
found etc). Footclient's exit code is -36/220 when it itself fails
|
2021-05-01 10:46:40 +02:00
|
|
|
to launch (e.g. bad command line option) and -26/230 when the foot
|
2021-04-30 22:47:16 +02:00
|
|
|
server failed to instantiate a new window
|
2022-04-22 20:02:15 +02:00
|
|
|
([#466](https://codeberg.org/dnkl/foot/issues/466)).
|
2021-05-01 20:17:54 +02:00
|
|
|
* Background alpha no longer applied to palette or RGB colors that
|
|
|
|
|
matches the background color.
|
2021-05-12 20:07:18 +02:00
|
|
|
* Improved performance on compositors that does not release shm
|
|
|
|
|
buffers immediately, e.g. KWin
|
2022-04-22 20:02:15 +02:00
|
|
|
([#478](https://codeberg.org/dnkl/foot/issues/478)).
|
2021-05-17 18:19:55 +02:00
|
|
|
* `ctrl + w` (_extend-to-word-boundary_) can now be used across lines
|
2022-04-22 20:02:15 +02:00
|
|
|
([#421](https://codeberg.org/dnkl/foot/issues/421)).
|
2021-05-22 16:42:43 +02:00
|
|
|
* Ignore auto-detected URLs that overlap with OSC-8 URLs.
|
2021-05-27 11:41:57 +02:00
|
|
|
* Default value for the `notify` option to use `-a ${app-id} -i
|
|
|
|
|
${app-id} ...` instead of `-a foot -i foot ...`.
|
2021-06-04 23:25:45 +02:00
|
|
|
* `scrollback-*`+`pipe-scrollback` key bindings are now passed through
|
|
|
|
|
to the client application when the alt screen is active
|
2022-04-22 20:02:15 +02:00
|
|
|
([#573](https://codeberg.org/dnkl/foot/issues/573)).
|
2021-06-07 21:46:46 +02:00
|
|
|
* Reverse video (`\E[?5h`) now only swaps the default foreground and
|
|
|
|
|
background colors. Cells with explicit foreground and/or background
|
|
|
|
|
colors remain unchanged.
|
2021-06-09 09:57:20 +02:00
|
|
|
* Tabs (`\t`) are now preserved when the window is resized, and when
|
2022-04-22 20:02:15 +02:00
|
|
|
copying text ([#508](https://codeberg.org/dnkl/foot/issues/508)).
|
sixel: add support for overlapping sixels
Writing a sixel on top of an already existing sixel currently has the
following limitations in foot:
* The parts of the first sixel that is covered by the new sixel are
removed, completely. Even if the new sixel has transparent
areas. I.e. writing a transparent sixel on top of another
sixel *replaces* the first sixel with the new sixel, instead of
layering them on top of each other.
* The second sixel erases the first sixel cell-wise. That is, a sixel
whose size isn’t a multiple of the cell dimensions will leave
unsightly holes in the first sixel.
This patch takes care of both issues.
The first one is actually the easiest one: all we need to do is
calculate the intersection, and blend the two images. To keep things
relatively simple, we use the pixman image from the *new* image, and
use the ‘OVER_REVERSE’ operation to blend the new image over the old
one.
That is, the old image is still split into four tiles (top, left,
right, bottom), just like before. But instead of throwing away the
fifth middle tile, we blend it with the new image. As an optimization,
this is only done if the new image has transparency (P1=1).
The second problem is solved by detecting when we’re erasing an area
from the second image that is larger than the new image. In this case,
we enlarge the new image, and copy the old image into the new one.
Finally, when we enlarge the new image, there may be areas in the new
image that is *not* covered by the old image. These areas are made
transparent.
The end result is:
* Each cell is covered by at *most* 1 sixel image. I.e. the total
numbers of sixels are finite. This is important for the ‘mpv
--vo=sixel’ use case - we don’t want to end up with thousands of
sixels layered on top of each other.
* Writing an opaque sixel on top of another sixel has _almost_ zero
performance impact. Especially if the two sixels have the same size,
so that we don’t have to resize the new image. Again, important for
the ‘mpv --vo=sixel’ use case.
Closes #562
2021-06-06 21:38:31 +02:00
|
|
|
* Writing a sixel on top of another sixel no longer erases the first
|
|
|
|
|
sixel, but the two are instead blended
|
2022-04-22 20:02:15 +02:00
|
|
|
([#562](https://codeberg.org/dnkl/foot/issues/562)).
|
2021-06-10 20:40:01 +02:00
|
|
|
* 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.
|
2021-04-22 11:26:59 +02:00
|
|
|
|
|
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Deprecated
|
2021-05-11 17:40:59 +02:00
|
|
|
|
2021-05-20 17:56:56 +02:00
|
|
|
* `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.
|
2021-05-07 04:49:34 -05:00
|
|
|
|
2021-05-11 17:40:59 +02:00
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Removed
|
2021-05-11 17:39:13 +02:00
|
|
|
|
|
|
|
|
* Buffer damage quirk for Plasma/KWin.
|
|
|
|
|
|
|
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Fixed
|
2021-04-22 11:26:59 +02:00
|
|
|
|
|
|
|
|
* `generate-alt-random-writes.py --sixel` sometimes crashing,
|
|
|
|
|
resulting in PGO build failures.
|
2021-05-06 12:37:22 +02:00
|
|
|
* Wrong colors in the 256-color cube
|
2022-04-22 20:02:15 +02:00
|
|
|
([#479](https://codeberg.org/dnkl/foot/issues/479)).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Memory leak triggered by "opening" an OSC-8 URI and then resetting
|
2021-05-08 15:18:25 +02:00
|
|
|
the terminal without closing the URI
|
2022-04-22 20:02:15 +02:00
|
|
|
([#495](https://codeberg.org/dnkl/foot/issues/495)).
|
2021-05-08 20:29:35 +02:00
|
|
|
* Assertion when emitting a sixel occupying the entire scrollback
|
2022-04-22 20:02:15 +02:00
|
|
|
history ([#494](https://codeberg.org/dnkl/foot/issues/494)).
|
2021-05-11 17:40:59 +02:00
|
|
|
* Font underlines being positioned below the cell (and thus being
|
|
|
|
|
invisible) for certain combinations of fonts and font sizes
|
2022-04-22 20:02:15 +02:00
|
|
|
([#503](https://codeberg.org/dnkl/foot/issues/503)).
|
2021-05-16 10:57:43 +02:00
|
|
|
* Sixels with transparent bottom border being resized below the size
|
2024-02-06 12:36:45 +01:00
|
|
|
specified in _"Set Raster Attributes"_.
|
2021-05-13 00:21:22 +02:00
|
|
|
* Fonts sometimes not being reloaded with the correct scaling factor
|
|
|
|
|
when `dpi-aware=no`, or `dpi-aware=auto` with monitor(s) with a
|
2022-04-22 20:02:15 +02:00
|
|
|
scaling factor > 1 ([#509](https://codeberg.org/dnkl/foot/issues/509)).
|
2021-05-16 19:38:00 +01:00
|
|
|
* Crash caused by certain CSI sequences with very large parameter
|
2022-04-22 20:02:15 +02:00
|
|
|
values ([#522](https://codeberg.org/dnkl/foot/issues/522)).
|
2021-05-21 20:00:45 +02:00
|
|
|
* Rare occurrences where the window did not close when the shell
|
|
|
|
|
exited. Only seen on FreeBSD
|
2022-04-22 20:02:15 +02:00
|
|
|
([#534](https://codeberg.org/dnkl/foot/issues/534))
|
2021-05-24 20:42:55 +02:00
|
|
|
* Foot process(es) sometimes remaining, using 100% CPU, when closing
|
|
|
|
|
multiple foot windows at the same time
|
2022-04-22 20:02:15 +02:00
|
|
|
([#542](https://codeberg.org/dnkl/foot/issues/542)).
|
2021-05-25 07:57:23 +02:00
|
|
|
* Regression where `<mod>+shift+tab` always produced `\E[Z` instead of
|
|
|
|
|
the correct `\E[27;<mod>;9~` sequence
|
2022-04-22 20:02:15 +02:00
|
|
|
([#547](https://codeberg.org/dnkl/foot/issues/547)).
|
2021-05-26 13:59:32 +02:00
|
|
|
* Crash when a line wrapping OSC-8 URI crossed the scrollback wrap
|
2022-04-22 20:02:15 +02:00
|
|
|
around ([#552](https://codeberg.org/dnkl/foot/issues/552)).
|
2021-05-31 17:12:38 +02:00
|
|
|
* Selection incorrectly wrapping rows ending with an explicit newline
|
2022-04-22 20:02:15 +02:00
|
|
|
([#565](https://codeberg.org/dnkl/foot/issues/565)).
|
2021-06-01 18:58:26 +02:00
|
|
|
* Off-by-one error in markup of auto-detected URLs when the URL ends
|
|
|
|
|
in the right-most column.
|
2021-06-02 19:32:05 +02:00
|
|
|
* Multi-column characters being cut in half when resizing the
|
|
|
|
|
alternate screen.
|
2021-06-02 17:48:57 +02:00
|
|
|
* Restore `SIGHUP` in spawned processes.
|
2022-04-22 20:02:15 +02:00
|
|
|
* Text reflow performance ([#504](https://codeberg.org/dnkl/foot/issues/504)).
|
2021-06-07 21:57:11 +02:00
|
|
|
* IL+DL (`CSI Ps L` + `CSI Ps M`) now moves the cursor to column 0.
|
2021-06-08 21:09:40 +01:00
|
|
|
* SS2 and SS3 (single shift) escape sequences behaving like locking
|
2022-04-22 20:02:15 +02:00
|
|
|
shifts ([#580](https://codeberg.org/dnkl/foot/issues/580)).
|
2021-06-09 09:51:07 +02:00
|
|
|
* `TEXT`+`STRING`+`UTF8_STRING` mime types not being recognized in
|
2022-04-22 20:02:15 +02:00
|
|
|
clipboard offers ([#583](https://codeberg.org/dnkl/foot/issues/583)).
|
2021-06-09 10:31:24 +02:00
|
|
|
* Memory leak caused by custom box drawing glyphs not being completely
|
|
|
|
|
freed when destroying a foot window instance
|
2022-04-22 20:02:15 +02:00
|
|
|
([#586](https://codeberg.org/dnkl/foot/issues/586)).
|
2021-06-16 17:44:14 +02:00
|
|
|
* Crash in scrollback search when current XKB layout is missing
|
|
|
|
|
_compose_ definitions.
|
render: use a timer instead of relying on the frame callback for title update throttling
Using the frame callback works most of the time, but e.g. Sway doesn’t
call it while the window is hidden, and thus prevents us from updating
the title in e.g. stacked views.
This patch uses a timer FD instead. We store a timestamp from when the
title was last updated. When the application wants to update the
title, we first check if we already have a timer running, and if so,
does nothing.
If no timer is running, check the timestamp. If enough time has
passed, update the title immediately.
If not, instantiate a timer and wait for it to trigger.
Set the minimum time between two updates to ~8ms (twice per frame, for
a 60Hz output, and ~once per frame on a 120Hz output).
Closes #591
2021-06-15 17:27:50 +02:00
|
|
|
* Window title not being updated while window is hidden
|
2022-04-22 20:02:15 +02:00
|
|
|
([#591](https://codeberg.org/dnkl/foot/issues/591)).
|
2021-06-19 15:56:39 +02:00
|
|
|
* Crash on badly formatted URIs in e.g. OSC-8 URLs.
|
2021-06-22 18:58:38 +02:00
|
|
|
* Window being incorrectly resized on CSD/SSD run-time changes.
|
2021-04-22 11:26:59 +02:00
|
|
|
|
|
|
|
|
|
2021-04-18 20:16:48 +02:00
|
|
|
### Contributors
|
2021-05-07 04:49:34 -05:00
|
|
|
* [r\_c\_f](https://codeberg.org/r_c_f)
|
2021-05-30 03:29:31 +01:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2021-04-18 20:16:48 +02:00
|
|
|
|
|
|
|
|
|
2021-04-18 20:12:26 +02:00
|
|
|
## 1.7.2
|
|
|
|
|
|
2021-03-28 14:29:55 +02:00
|
|
|
### Added
|
2021-04-05 22:05:50 +02:00
|
|
|
|
2021-04-07 08:01:55 +02:00
|
|
|
* URxvt OSC-11 extension to set background alpha
|
2022-04-22 20:02:15 +02:00
|
|
|
([#436](https://codeberg.org/dnkl/foot/issues/436)).
|
2021-04-08 13:50:02 +02:00
|
|
|
* OSC 17/117/19/119 - change/reset selection background/foreground
|
|
|
|
|
color.
|
2021-04-09 23:19:20 +02:00
|
|
|
* `box-drawings-uses-font-glyphs=yes|no` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#430](https://codeberg.org/dnkl/foot/issues/430)).
|
2021-04-05 22:05:50 +02:00
|
|
|
|
|
|
|
|
|
2021-03-28 14:29:55 +02:00
|
|
|
### Changed
|
2021-04-09 21:47:57 +02:00
|
|
|
|
|
|
|
|
* Underline cursor is now rendered below text underline
|
2022-04-22 20:02:15 +02:00
|
|
|
([#415](https://codeberg.org/dnkl/foot/issues/415)).
|
render: don’t let URL jump label sub-surfaces extend outside window geometry
We have no guarantee that sub-surfaces extending outside the window
geometry are rendered correctly (if at all).
For example, both Sway and River will render the window border on top
of the sub-surface.
Future versions of Sway may clip the sub-surface.
Since jump-labels are positioned slightly above, and to the left of
the URLs first character, having a label on either the top row, or on
the first column, will likely position it outside the window. This is
handled by simply setting x/y to 0 (or, to -margin, since the label
coordinate is later offsetted with the window margins).
Second, if the label is very long, it may extend outside the
window. This is very unusual for labels only showing the key, and not
the URL itself, but could happen in this case too, if e.g. the user
has configured double-width key characters.
This is handled by calculating its maximum width, and then truncating
the label.
Although very unlikely, it is possible for a label to also extend
outside the window’s vertical size. This could happen for very small
font sizes, where the label’s own margins are large, relative to the
font size. This case is currently not handled.
Closes #443
2021-04-10 13:16:39 +02:00
|
|
|
* Foot now tries much harder to keep URL jump labels inside the window
|
2022-04-22 20:02:15 +02:00
|
|
|
geometry ([#443](https://codeberg.org/dnkl/foot/issues/443)).
|
2021-04-17 21:57:08 +02:00
|
|
|
* `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
|
2022-04-22 20:02:15 +02:00
|
|
|
([#449](https://codeberg.org/dnkl/foot/issues/449)).
|
2021-04-09 21:47:57 +02:00
|
|
|
|
|
|
|
|
|
2021-03-28 14:29:55 +02:00
|
|
|
### Fixed
|
2021-03-29 20:11:32 +02:00
|
|
|
|
|
|
|
|
* Reverted _"Consumed modifiers are no longer sent to the client
|
2022-04-22 20:02:15 +02:00
|
|
|
application"_ ([#425](https://codeberg.org/dnkl/foot/issues/425)).
|
sixel: fix double free caused by bad free() in sixel_colors_set()
sixel_color_set() is called when the number of (sixel) color registers
is changed.
It frees the current palette, and changes the “palette size” variable.
Originally, we only had a single palette. This is the one free:d by
sixel_color_set().
Later, we added support for private vs. shared palettes. With this
change, we now have one palette that is “never” free:d (the shared
one), and a private palette that is always free:d after a sixel has
been emitted.
‘sixel.palette’ is a pointer to the palette currently in use, and
should only be accessed **while emitting a sixel**.
This is the pointer sixel_color_set() free:d. So for example, if
‘sixel.palette’ pointed to the shared palette, we’d free the shared
palette. But, we didn’t reset ‘sixel.shared_palette’, causing a double
free later on.
Closes #427
2021-03-30 11:08:03 +02:00
|
|
|
* Crash caused by a double free originating in `XTSMGRAPHICS` - set
|
|
|
|
|
number of color registers
|
2022-04-22 20:02:15 +02:00
|
|
|
([#427](https://codeberg.org/dnkl/foot/issues/427)).
|
2021-04-05 14:33:44 +02:00
|
|
|
* Wrong action referenced in error message for key binding collisions
|
2022-04-22 20:02:15 +02:00
|
|
|
([#432](https://codeberg.org/dnkl/foot/issues/432)).
|
2021-04-07 08:02:21 +02:00
|
|
|
* OSC 4/104 out-of-bounds accesses to the color table. This was the
|
2021-04-05 22:07:58 +02:00
|
|
|
reason pywal turned foot windows transparent
|
2022-04-22 20:02:15 +02:00
|
|
|
([#434](https://codeberg.org/dnkl/foot/issues/434)).
|
2021-04-07 19:09:31 +02:00
|
|
|
* PTY not being drained when the client application terminates.
|
2021-04-08 13:11:37 +02:00
|
|
|
* `auto_left_margin` not being limited to `cub1`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#441](https://codeberg.org/dnkl/foot/issues/441)).
|
2021-03-28 20:59:35 +02:00
|
|
|
* Crash in scrollback search mode when searching beyond the last output.
|
2021-03-29 20:11:32 +02:00
|
|
|
|
|
|
|
|
|
2021-03-28 14:29:55 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-04-18 20:11:27 +02:00
|
|
|
* [cglogic](https://codeberg.org/cglogic)
|
|
|
|
|
|
2021-03-28 14:29:55 +02:00
|
|
|
|
2021-03-28 14:25:09 +02:00
|
|
|
## 1.7.1
|
|
|
|
|
|
2021-03-20 14:14:58 +01:00
|
|
|
### Changed
|
2021-03-26 21:00:41 +01:00
|
|
|
|
|
|
|
|
* Update PGO build instructions in `INSTALL.md`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#418](https://codeberg.org/dnkl/foot/issues/418)).
|
2021-03-27 23:02:56 +01:00
|
|
|
* In scrollback search mode, empty cells can now be matched by spaces.
|
2021-03-26 21:00:41 +01:00
|
|
|
|
|
|
|
|
|
2021-03-20 14:14:58 +01:00
|
|
|
### Fixed
|
input: must have all required modifiers to un-shift a symbol
When detecting, and repairing, “broken” key bindings (where the key
binding itself explicitly lists a modifier that is consumed by the
final symbol - e.g “Shift+W”), don’t just look for an intersection
between the set of modifiers needed to produce the final symbol, and
the modifiers listed in the key combo. Instead, check if the key combo
has *all* the required modifiers.
Example: Shift+AltGr+w produces Page_Down. I.e. Page_Down is the
_shifted_ symbol, ‘w’ is the un-shifted symbol, and Shift+AltGr are
the modifiers required to shift ‘w’ to Page_Down.
If we have the key combo Shift+Page_Down, foot would, correctly,
determine that Page_Down is a shifted symbol. It would find the
Shift+AltGr modifier set, and since the intersection of “Shift+AltGr”
and “Shift” (from our key combo) is non-empty, foot
would (incorrectly) determine that we can, and should, replace
Page_Down with its un-shifted symbol ‘w’.
This is completely wrong, since Shift+w does _not_ produce Page_Down.
Closes #407
2021-03-21 11:55:03 +01:00
|
|
|
|
|
|
|
|
* Logic that repairs invalid key bindings ended up breaking valid key
|
2022-04-22 20:02:15 +02:00
|
|
|
bindings instead ([#407](https://codeberg.org/dnkl/foot/issues/407)).
|
2021-03-20 15:32:31 +01:00
|
|
|
* Custom `line-height` settings now scale when increasing or
|
|
|
|
|
decreasing the font size at run-time.
|
2021-03-23 14:18:04 +01:00
|
|
|
* Newlines sometimes incorrectly inserted into copied text
|
2022-04-22 20:02:15 +02:00
|
|
|
([#410](https://codeberg.org/dnkl/foot/issues/410)).
|
2021-03-23 14:06:10 +01:00
|
|
|
* Crash when compositor send `text-input-v3::enter` events without
|
|
|
|
|
first having sent a `keyboard::enter` event
|
2022-04-22 20:02:15 +02:00
|
|
|
([#411](https://codeberg.org/dnkl/foot/issues/411)).
|
2021-03-24 20:46:51 +01:00
|
|
|
* Deadlock when rendering sixel images.
|
2021-03-25 09:42:15 +01:00
|
|
|
* URL labels, scrollback search box or scrollback position indicator
|
|
|
|
|
sometimes not showing up, caused by invalidly sized surface buffers
|
|
|
|
|
when output scaling was enabled
|
2022-04-22 20:02:15 +02:00
|
|
|
([#409](https://codeberg.org/dnkl/foot/issues/409)).
|
2021-03-28 13:04:15 +02:00
|
|
|
* Empty sixels resulted in non-empty images.
|
input: must have all required modifiers to un-shift a symbol
When detecting, and repairing, “broken” key bindings (where the key
binding itself explicitly lists a modifier that is consumed by the
final symbol - e.g “Shift+W”), don’t just look for an intersection
between the set of modifiers needed to produce the final symbol, and
the modifiers listed in the key combo. Instead, check if the key combo
has *all* the required modifiers.
Example: Shift+AltGr+w produces Page_Down. I.e. Page_Down is the
_shifted_ symbol, ‘w’ is the un-shifted symbol, and Shift+AltGr are
the modifiers required to shift ‘w’ to Page_Down.
If we have the key combo Shift+Page_Down, foot would, correctly,
determine that Page_Down is a shifted symbol. It would find the
Shift+AltGr modifier set, and since the intersection of “Shift+AltGr”
and “Shift” (from our key combo) is non-empty, foot
would (incorrectly) determine that we can, and should, replace
Page_Down with its un-shifted symbol ‘w’.
This is completely wrong, since Shift+w does _not_ produce Page_Down.
Closes #407
2021-03-21 11:55:03 +01:00
|
|
|
|
|
|
|
|
|
2021-03-20 14:02:12 +01:00
|
|
|
## 1.7.0
|
|
|
|
|
|
2020-12-18 15:02:08 +01:00
|
|
|
### Added
|
2021-01-06 11:17:29 +01:00
|
|
|
|
|
|
|
|
* 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
|
2022-04-22 20:02:15 +02:00
|
|
|
top/bottom side ([#273](https://codeberg.org/dnkl/foot/issues/273)).
|
2021-01-11 09:30:08 +01:00
|
|
|
* `line-height`, `letter-spacing`, `horizontal-letter-offset` and
|
|
|
|
|
`vertical-letter-offset` to `foot.ini`. These options let you tweak
|
|
|
|
|
cell size and glyph positioning
|
2022-04-22 20:02:15 +02:00
|
|
|
([#244](https://codeberg.org/dnkl/foot/issues/244)).
|
2021-01-06 11:11:46 +01:00
|
|
|
* Key/mouse binding `select-extend-character-wise`, which forces the
|
|
|
|
|
selection mode to 'character-wise' when extending a selection.
|
2021-01-16 13:34:40 +01:00
|
|
|
* `DECSET` `47`, `1047` and `1048`.
|
2021-02-21 20:16:25 +01:00
|
|
|
* URL detection and OSC-8 support. URLs are highlighted and activated
|
|
|
|
|
using the keyboard (**no** mouse support). See **foot**(1)::URLs, or
|
2021-02-07 11:42:41 +01:00
|
|
|
[README.md](README.md#urls) for details
|
2022-04-22 20:02:15 +02:00
|
|
|
([#14](https://codeberg.org/dnkl/foot/issues/14)).
|
2021-02-09 21:20:18 +01:00
|
|
|
* `-d,--log-level={info|warning|error}` to both `foot` and
|
2022-04-22 20:02:15 +02:00
|
|
|
`footclient` ([#337](https://codeberg.org/dnkl/foot/issues/337)).
|
2021-02-12 09:48:32 +01:00
|
|
|
* `-D,--working-directory=DIR` to both `foot` and `footclient`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#347](https://codeberg.org/dnkl/foot/issues/347))
|
sixel: implement private mode 80 - sixel scrolling
When enabled (the default), sixels behave much like normal output; the
start where the cursor is, and the cursor moves with the
sixel. I.e. after emitting a sixel the cursor is left after the image;
either to the right, if private mode 8452 is enabled, or otherwise on
the next line. Terminal content is scrolled up if the sixel is larger
than the screen.
When disabled, sixels *always* start at (0,0), the cursor never moves,
and the terminal content never scrolls.
In other words, the ‘disabled’ mode is a much simpler mode.
All we need to do to support both modes is re-write the sixel-emitting
loop to:
* break early if we’re “out of rows”, i.e. we’ve reached the bottom of
the screen.
* not linefeed, or move the cursor when scrolling is disabled
This patch also fixes a bug in the (new) implementation of private
mode 8452.
When emitting a sixel, we may break it up into smaller pieces, to
ensure a single sixel (as tracked internally) does not cross the
scrollback wrap-around.
The code that checked if we should do a linefeed or not, would skip
the linefeed on the last row of *each* such sixel piece. The correct
thing to do is to skip it only on the last row of the *last* piece.
I chose not to fix this bug in a separate patch since doing so would
have meant re-writing it again when implementing private mode 80.
2021-02-26 09:28:03 +01:00
|
|
|
* `DECSET 80` - sixel scrolling
|
2022-04-22 20:02:15 +02:00
|
|
|
([#361](https://codeberg.org/dnkl/foot/issues/361)).
|
2021-02-16 19:37:49 +01:00
|
|
|
* `DECSET 1070` - sixel private color palette
|
2022-04-22 20:02:15 +02:00
|
|
|
([#362](https://codeberg.org/dnkl/foot/issues/362)).
|
2021-02-16 19:11:38 +01:00
|
|
|
* `DECSET 8452` - position cursor to the right of sixels
|
2022-04-22 20:02:15 +02:00
|
|
|
([#363](https://codeberg.org/dnkl/foot/issues/363)).
|
2021-02-23 19:58:26 +00:00
|
|
|
* Man page **foot-ctlseqs**(7), documenting all supported escape
|
2022-04-22 20:02:15 +02:00
|
|
|
sequences ([#235](https://codeberg.org/dnkl/foot/issues/235)).
|
2021-03-11 17:37:56 +01:00
|
|
|
* Support for transparent sixels (DCS parameter `P2=1`)
|
2022-04-22 20:02:15 +02:00
|
|
|
([#391](https://codeberg.org/dnkl/foot/issues/391)).
|
2021-03-13 07:49:57 -03:00
|
|
|
* `-N,--no-wait` to `footclient`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#395](https://codeberg.org/dnkl/foot/issues/395)).
|
2021-03-13 19:04:33 +01:00
|
|
|
* Completions for Bash shell
|
2022-04-22 20:02:15 +02:00
|
|
|
([#10](https://codeberg.org/dnkl/foot/issues/10)).
|
2021-02-16 12:00:58 +01:00
|
|
|
* Implement `XTVERSION` (`CSI > 0q`). Foot will reply with
|
|
|
|
|
`DCS>|foot(<major>.<minor>.<patch>)ST`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#359](https://codeberg.org/dnkl/foot/issues/359)).
|
2021-01-29 20:12:32 +01:00
|
|
|
|
2021-01-06 11:17:29 +01:00
|
|
|
|
2020-12-18 15:02:08 +01:00
|
|
|
### Changed
|
2020-12-19 22:43:09 +00:00
|
|
|
|
|
|
|
|
* 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.
|
2021-01-01 21:08:57 +01:00
|
|
|
* Box drawing characters are now rendered by foot, instead of using
|
2022-04-22 20:02:15 +02:00
|
|
|
font glyphs ([#198](https://codeberg.org/dnkl/foot/issues/198))
|
2021-01-02 21:28:55 +01:00
|
|
|
* Double- or triple clicking then dragging now extends the selection
|
2022-04-22 20:02:15 +02:00
|
|
|
word- or line-wise ([#267](https://codeberg.org/dnkl/foot/issues/267)).
|
2021-01-12 17:38:12 +01:00
|
|
|
* The line thickness of box drawing characters now depend on the font
|
2022-04-22 20:02:15 +02:00
|
|
|
size ([#281](https://codeberg.org/dnkl/foot/issues/281)).
|
2021-01-06 11:11:46 +01:00
|
|
|
* Extending a word/line-wise selection now uses the original selection
|
|
|
|
|
mode instead of switching to character-wise.
|
2021-01-20 18:10:24 +01:00
|
|
|
* 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
|
2022-04-22 20:02:15 +02:00
|
|
|
`resize-delay-ms` ([#301](https://codeberg.org/dnkl/foot/issues/301)).
|
2021-02-16 14:31:46 +01:00
|
|
|
* `CSI 13 ; 2 t` now reports (0,0).
|
2021-03-04 10:12:39 +01:00
|
|
|
* 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
|
2022-04-22 20:02:15 +02:00
|
|
|
variant. ([#376](https://codeberg.org/dnkl/foot/issues/376))
|
2021-02-26 20:54:42 +01:00
|
|
|
* Consumed modifiers are no longer sent to the client application
|
2022-04-22 20:02:15 +02:00
|
|
|
([#376](https://codeberg.org/dnkl/foot/issues/376)).
|
2021-03-07 19:28:17 +00:00
|
|
|
* The minimum version requirement for the libxkbcommon dependency is
|
|
|
|
|
now 1.0.0.
|
2021-03-11 17:32:38 +01:00
|
|
|
* Empty pixel rows at the bottom of a sixel is now trimmed.
|
2021-03-11 17:37:56 +01:00
|
|
|
* Sixels with DCS parameter `P2=0|2` now use the _current_ ANSI
|
|
|
|
|
background color for empty pixels instead of the default background
|
2022-04-22 20:02:15 +02:00
|
|
|
color ([#391](https://codeberg.org/dnkl/foot/issues/391)).
|
2021-03-12 21:43:35 +01:00
|
|
|
* Sixel decoding optimized; up to 100% faster in some cases.
|
2024-02-06 12:36:45 +01:00
|
|
|
* Reported sixel "max geometry" from current window size, to the
|
2021-03-14 10:58:13 +01:00
|
|
|
configured maximum size (defaulting to 10000x10000).
|
2021-02-16 14:31:46 +01:00
|
|
|
|
2020-12-20 15:42:32 +01:00
|
|
|
|
2020-12-20 15:51:04 +01:00
|
|
|
### Removed
|
2021-01-13 19:59:54 +00:00
|
|
|
|
2021-02-11 19:54:55 +01:00
|
|
|
* The `-g,--geometry` command-line option (which had been deprecated
|
|
|
|
|
and superseded by `-w,--window-size-pixels` since 1.5.0).
|
2021-01-13 19:59:54 +00:00
|
|
|
|
|
|
|
|
|
2021-01-29 20:12:32 +01:00
|
|
|
### Fixed
|
2021-02-02 09:53:24 +01:00
|
|
|
|
|
|
|
|
* 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.
|
2021-02-21 11:57:38 +01:00
|
|
|
* Terminals spawned with `ctrl`+`shift`+`n` not terminating when
|
2022-04-22 20:02:15 +02:00
|
|
|
exiting shell ([#366](https://codeberg.org/dnkl/foot/issues/366)).
|
2021-02-26 15:16:42 +01:00
|
|
|
* Default value of `-t,--term` in `--help` output when foot was built
|
|
|
|
|
without terminfo support.
|
2021-03-12 22:06:50 +01:00
|
|
|
* Drain PTY when the client application terminates.
|
2021-02-02 09:53:24 +01:00
|
|
|
|
|
|
|
|
|
2021-01-29 20:12:32 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
|
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2021-02-26 15:16:42 +01:00
|
|
|
* toast
|
2021-03-01 20:26:56 +01:00
|
|
|
* [l3mon4d3](https://codeberg.org/l3mon4d3)
|
2021-03-13 19:04:33 +01:00
|
|
|
* [Simon Schricker](mailto:s.schricker@sillage.at)
|
2021-02-12 21:41:53 +01:00
|
|
|
|
|
|
|
|
|
2021-02-12 10:44:42 +01:00
|
|
|
## 1.6.4
|
2021-02-12 21:27:15 +01:00
|
|
|
|
2021-02-12 10:44:42 +01:00
|
|
|
### Added
|
2021-01-16 15:44:51 +01:00
|
|
|
|
|
|
|
|
* `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
|
2022-04-22 20:02:15 +02:00
|
|
|
([#288](https://codeberg.org/dnkl/foot/issues/288)).
|
2021-01-16 15:44:51 +01:00
|
|
|
|
|
|
|
|
|
2021-02-12 10:44:42 +01:00
|
|
|
### Changed
|
2021-01-29 12:57:03 -07:00
|
|
|
|
|
|
|
|
* The IME state no longer stays stuck in the terminal if the IME goes
|
|
|
|
|
away during preedit.
|
2021-02-09 19:44:57 +01:00
|
|
|
* `-Dterminfo` changed from a `boolean` to a `feature` option.
|
2021-02-11 19:54:55 +01:00
|
|
|
* 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.
|
2021-01-29 12:57:03 -07:00
|
|
|
|
|
|
|
|
|
2021-02-12 10:44:42 +01:00
|
|
|
### Fixed
|
2021-02-12 10:03:01 +01:00
|
|
|
|
|
|
|
|
* `BS`, `HT` and `DEL` from being stripped in bracketed paste mode.
|
|
|
|
|
|
|
|
|
|
|
2021-02-12 10:44:42 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-01-29 12:57:03 -07:00
|
|
|
* [tdeo](https://codeberg.org/tdeo)
|
2021-02-09 19:44:57 +01:00
|
|
|
* jbeich
|
2021-01-29 20:12:32 +01:00
|
|
|
|
|
|
|
|
|
2021-01-21 11:43:22 +01:00
|
|
|
## 1.6.3
|
2021-01-29 19:52:27 +01:00
|
|
|
|
2021-01-21 11:43:22 +01:00
|
|
|
### Added
|
2021-01-07 22:21:07 +03:00
|
|
|
|
|
|
|
|
* Completions for fish shell
|
2022-04-22 20:02:15 +02:00
|
|
|
([#11](https://codeberg.org/dnkl/foot/issues/11))
|
|
|
|
|
* FreeBSD support ([#238](https://codeberg.org/dnkl/foot/issues/238)).
|
2020-12-20 15:01:21 -07:00
|
|
|
* 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.
|
2021-01-07 22:21:07 +03:00
|
|
|
|
|
|
|
|
|
2021-01-21 11:43:22 +01:00
|
|
|
### Changed
|
2021-01-03 14:08:25 -05:00
|
|
|
|
|
|
|
|
* Trailing comments in `foot.ini` must now be preceded by a space or tab
|
2022-04-22 20:02:15 +02:00
|
|
|
([#270](https://codeberg.org/dnkl/foot/issues/270))
|
2021-01-24 11:33:59 +01:00
|
|
|
* The scrollback search box no longer accepts non-printable characters.
|
2021-01-23 11:22:22 +01:00
|
|
|
* Non-formatting C0 control characters, `BS`, `HT` and `DEL` are now
|
|
|
|
|
stripped from pasted text.
|
2021-01-03 14:08:25 -05:00
|
|
|
|
|
|
|
|
|
2020-12-20 15:51:04 +01:00
|
|
|
### Fixed
|
2020-12-26 01:29:40 +01:00
|
|
|
|
|
|
|
|
* Exit when the client application terminates, not when the TTY file
|
|
|
|
|
descriptor is closed.
|
2020-12-25 22:04:19 +01:00
|
|
|
* Crash on compositors not implementing the _text input_ interface
|
2022-04-22 20:02:15 +02:00
|
|
|
([#259](https://codeberg.org/dnkl/foot/issues/259)).
|
2021-01-02 22:24:49 +01:00
|
|
|
* Erased, overflowing glyphs (when
|
|
|
|
|
`tweak.allow-overflowing-double-width-glyphs=yes` - the default) not
|
|
|
|
|
properly erasing the cell overflowed **into**.
|
2021-01-03 14:08:25 -05:00
|
|
|
* `word-delimiters` option ignores `#` and subsequent characters
|
2022-04-22 20:02:15 +02:00
|
|
|
([#270](https://codeberg.org/dnkl/foot/issues/270))
|
2021-01-04 18:32:55 +01:00
|
|
|
* Combining characters not being rendered when composed with colored
|
2021-01-11 09:35:01 +01:00
|
|
|
bitmap glyphs (i.e. colored emojis).
|
2021-01-12 14:55:21 +01:00
|
|
|
* Pasting URIs from the clipboard when the source has not
|
|
|
|
|
newline-terminated the last URI
|
2022-04-22 20:02:15 +02:00
|
|
|
([#291](https://codeberg.org/dnkl/foot/issues/291)).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Sixel "current geometry" query response not being bounded by the
|
2021-01-14 14:41:34 +01:00
|
|
|
current window dimensions (fixes `lsix` output)
|
2021-01-16 12:27:58 +01:00
|
|
|
* Crash on keyboard input when repeat rate was zero (i.e. no repeat).
|
2021-01-22 17:03:43 +01:00
|
|
|
* Wrong button encoding of mouse buttons 6 and 7 in mouse events.
|
2021-01-24 12:02:20 +01:00
|
|
|
* Scrollback search not matching composed characters.
|
2021-01-25 10:05:51 +01:00
|
|
|
* High CPU usage when holding down e.g. arrow keys while in scrollback
|
|
|
|
|
search mode.
|
2021-01-25 10:00:43 +01:00
|
|
|
* Rendering of composed characters in the scrollback search box.
|
2021-01-25 21:57:42 +01:00
|
|
|
* IME pre-edit cursor when positioned at the end of the pre-edit
|
|
|
|
|
string.
|
2021-01-26 20:05:14 +01:00
|
|
|
* Scrollback search not matching multi-column characters.
|
2020-12-26 01:29:40 +01:00
|
|
|
|
|
|
|
|
|
2020-12-20 15:51:04 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2021-01-03 15:49:24 -05:00
|
|
|
* [pc](https://codeberg.org/pc)
|
2021-01-07 22:21:07 +03:00
|
|
|
* [FollieHiyuki](https://codeberg.org/FollieHiyuki)
|
2021-01-23 10:12:39 +01:00
|
|
|
* jbeich
|
2020-12-20 15:01:21 -07:00
|
|
|
* [tdeo](https://codeberg.org/tdeo)
|
2020-12-20 15:51:04 +01:00
|
|
|
|
|
|
|
|
|
2020-12-21 15:58:25 +01:00
|
|
|
## 1.6.2
|
|
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
|
|
* Version number in `meson.build`.
|
|
|
|
|
|
|
|
|
|
|
2020-12-20 15:51:04 +01:00
|
|
|
## 1.6.1
|
2020-12-20 15:46:05 +01:00
|
|
|
### Added
|
2020-12-21 13:47:45 +01:00
|
|
|
|
|
|
|
|
* `--seed` to `generate-alt-random.py`, enabling deterministic PGO
|
|
|
|
|
builds.
|
|
|
|
|
|
|
|
|
|
|
2020-12-20 15:46:05 +01:00
|
|
|
### Changed
|
2020-12-21 12:20:08 +01:00
|
|
|
|
2020-12-21 13:55:19 +01:00
|
|
|
|
2020-12-21 12:20:08 +01:00
|
|
|
* Use `-std=c11` instead of `-std=c18`.
|
2020-12-21 13:50:06 +01:00
|
|
|
* 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))
|
2020-12-21 12:20:08 +01:00
|
|
|
|
|
|
|
|
|
2020-12-18 15:02:08 +01:00
|
|
|
### Fixed
|
2020-12-20 11:56:18 +01:00
|
|
|
|
|
|
|
|
* Missing dependencies in meson, causing heavily parallelized builds
|
|
|
|
|
to fail.
|
2020-12-20 12:25:12 +01:00
|
|
|
* Background color when alpha < 1.0 being wrong
|
2022-04-22 20:02:15 +02:00
|
|
|
([#249](https://codeberg.org/dnkl/foot/issues/249)).
|
2020-12-21 13:40:53 +01:00
|
|
|
* `generate-alt-random.py` failing in containers.
|
2020-12-20 11:56:18 +01:00
|
|
|
|
|
|
|
|
|
2020-12-18 15:02:08 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
2020-12-19 22:43:09 +00:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2020-12-20 15:42:32 +01:00
|
|
|
* [sterni](https://codeberg.org/sterni)
|
2020-12-19 22:43:09 +00:00
|
|
|
|
2020-12-18 15:02:08 +01:00
|
|
|
|
2020-12-18 14:51:34 +01:00
|
|
|
## 1.6.0
|
2020-11-22 12:18:22 +01:00
|
|
|
|
|
|
|
|
### 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
|
2020-11-22 19:03:41 +01:00
|
|
|
[INSTALL.md](INSTALL.md#user-content-performance-optimized-pgo).
|
2020-11-22 12:18:22 +01:00
|
|
|
|
|
|
|
|
|
2020-09-18 21:29:39 +02:00
|
|
|
### Added
|
2020-10-02 21:44:03 +02:00
|
|
|
|
2020-12-05 11:09:05 +01:00
|
|
|
* IME support. This is compile-time optional, see
|
|
|
|
|
[INSTALL.md](INSTALL.md#user-content-options)
|
2022-04-22 20:02:15 +02:00
|
|
|
([#134](https://codeberg.org/dnkl/foot/issues/134)).
|
2020-12-08 20:31:22 +01:00
|
|
|
* `DECSET` escape to enable/disable IME: `CSI ? 737769 h` enables IME
|
2020-12-08 20:31:48 +01:00
|
|
|
and `CSI ? 737769 l` disables it. This can be used to
|
2020-12-08 20:29:44 +01:00
|
|
|
e.g. enable/disable IME when entering/leaving insert mode in vim.
|
2020-12-18 14:46:56 +01:00
|
|
|
* `dpi-aware` option to `foot.ini`. The default, `auto`, sizes fonts
|
2024-02-06 12:36:45 +01:00
|
|
|
using the monitor's DPI when output scaling has been
|
2020-12-18 14:46:56 +01:00
|
|
|
**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.
|
2022-04-22 20:02:15 +02:00
|
|
|
([#206](https://codeberg.org/dnkl/foot/issues/206)).
|
2020-10-06 18:42:26 +02:00
|
|
|
* Implement reverse auto-wrap (_auto\_left\_margin_, _bw_, in
|
|
|
|
|
terminfo). This mode can be enabled/disabled with `CSI ? 45 h` and
|
2020-10-08 19:52:10 +02:00
|
|
|
`CSI ? 45 l`. It is **enabled** by default
|
2022-04-22 20:02:15 +02:00
|
|
|
([#150](https://codeberg.org/dnkl/foot/issues/150)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `bell` option to `foot.ini`. Can be set to `set-urgency` to make
|
2020-10-08 19:55:32 +02:00
|
|
|
foot render the margins in red when receiving `BEL` while **not**
|
2020-10-11 17:44:29 +02:00
|
|
|
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
|
2020-10-08 19:55:32 +02:00
|
|
|
[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
|
2022-04-22 20:02:15 +02:00
|
|
|
([#157](https://codeberg.org/dnkl/foot/issues/157)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `bell` option can also be set to `notify`, in which case a desktop
|
2020-12-16 10:32:21 +01:00
|
|
|
notification is emitted when foot receives `BEL` in an unfocused
|
|
|
|
|
window.
|
2020-12-18 14:46:16 +01:00
|
|
|
* `word-delimiters` option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#156](https://codeberg.org/dnkl/foot/issues/156)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `csd.preferred` can now be set to `none` to disable window
|
2020-10-11 19:04:21 +02:00
|
|
|
decorations. Note that some compositors will render SSDs despite
|
2022-04-22 20:02:15 +02:00
|
|
|
this option being used ([#163](https://codeberg.org/dnkl/foot/issues/163)).
|
2020-10-11 18:19:38 +02:00
|
|
|
* Terminal content is now auto-scrolled when moving the mouse above or
|
|
|
|
|
below the window while selecting
|
2022-04-22 20:02:15 +02:00
|
|
|
([#149](https://codeberg.org/dnkl/foot/issues/149)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `font-bold`, `font-italic` `font-bold-italic` options to
|
2020-10-20 21:04:47 +02:00
|
|
|
`foot.ini`. These options allow custom bold/italic fonts. They are
|
|
|
|
|
unset by default, meaning the bold/italic version of the regular
|
2022-04-22 20:02:15 +02:00
|
|
|
font is used ([#169](https://codeberg.org/dnkl/foot/issues/169)).
|
selection: implement support for drag-and-drop
We accept COPY and MOVE actions, for text/plain;charset=utf-8
mime-types.
To implement DnD, we need to track the current DnD data offer *and*
the terminal instance it is (currently) targeting.
To do this, a seat has a new member, ‘dnd_term’. On a DnD enter event,
we lookup the corresponding terminal instance and point ‘dnd_term’ to
it.
On a DnD leave event, ‘dnd_term’ is reset.
The DnD data offer is tracked in the terminal’s wayland window
instance. It is reset, along with the seat’s ‘dnd_term’ on a DnD leave
event.
On a drop event, we immediately clear the seat’s ‘dnd_term’, to ensure
we don’t reset it, or destroy the offer before the drop has been
completed.
The drop’s ‘done()’ callback takes care of destroying and resetting
the DnD offer in the terminal’s wayland window instance.
Closes #175
2020-10-26 21:02:53 +01:00
|
|
|
* Drag & drop support; text, files and URLs can now be dropped in a
|
2022-04-22 20:02:15 +02:00
|
|
|
foot terminal window ([#175](https://codeberg.org/dnkl/foot/issues/175)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `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
|
2020-11-13 23:26:03 +01:00
|
|
|
not possible to add a command to these actions when used in mouse
|
|
|
|
|
bindings, making them useless
|
2022-04-22 20:02:15 +02:00
|
|
|
([#183](https://codeberg.org/dnkl/foot/issues/183)).
|
2020-12-18 14:46:16 +01:00
|
|
|
* `bold-text-in-bright` option to `foot.ini`. When enabled, bold text
|
|
|
|
|
is rendered in a brighter color
|
2022-04-22 20:02:15 +02:00
|
|
|
([#199](https://codeberg.org/dnkl/foot/issues/199)).
|
2020-11-22 18:36:37 +00:00
|
|
|
* `-w,--window-size-pixels` and `-W,--window-size-chars` command line
|
2022-04-22 20:02:15 +02:00
|
|
|
options to `footclient` ([#189](https://codeberg.org/dnkl/foot/issues/189)).
|
2020-11-23 19:19:19 +01:00
|
|
|
* Short command line options for `--title`, `--maximized`,
|
|
|
|
|
`--fullscreen`, `--login-shell`, `--hold` and `--check-config`.
|
2020-12-07 20:43:32 +01:00
|
|
|
* `DECSET` escape to modify the `escape` key to send `\E[27;1;27~`
|
2020-12-08 20:29:44 +01:00
|
|
|
instead of `\E`: `CSI ? 27127 h` enables the new behavior, `CSI ?
|
|
|
|
|
27127 l` disables it (the default).
|
2020-12-08 19:19:55 +01:00
|
|
|
* OSC 777;notify: desktop notifications. Use in combination with the
|
2020-12-18 14:46:16 +01:00
|
|
|
new `notify` option in `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#224](https://codeberg.org/dnkl/foot/issues/224)).
|
2020-12-18 13:46:57 +01:00
|
|
|
* Status line terminfo capabilities `hs`, `tsl`, `fsl` and `dsl`. This
|
|
|
|
|
enables e.g. vim to set the window title
|
2022-04-22 20:02:15 +02:00
|
|
|
([#242](https://codeberg.org/dnkl/foot/issues/242)).
|
2020-10-02 21:44:03 +02:00
|
|
|
|
|
|
|
|
|
2020-10-11 19:36:00 +02:00
|
|
|
### Changed
|
2020-10-22 18:41:47 +02:00
|
|
|
|
|
|
|
|
* Blinking text now uses the foreground color, but dimmed down in its
|
|
|
|
|
off state, instead of the background color.
|
2020-11-23 20:10:55 +01:00
|
|
|
* Sixel default maximum size is now 10000x10000 instead of the current
|
|
|
|
|
window size.
|
resize: don’t reflow text on alt screen
Alt screen applications normally reflow/readjust themselves on a
window resize.
When we do it too, the result is graphical glitches/flashes since our
re-flowed text is rendered in one frame, and the application re-flowed
text soon thereafter.
We can’t avoid rendering some kind of re-flowed frame, since we don’t
know when, or even if, the application will update itself. To avoid
glitches, we need to render, as closely as possible, what the
application itself will render shortly.
This is actually pretty simple; we just need to copy the visible
content over from the old grid to the new grid. We don’t bother with
text re-flow, but simply truncate long lines.
To simplify things, we simply cancel any active selection (since often
times, it will be corrupted anyway when the application redraws
itself).
Since we’re not reflowing text, there’s no need to translate e.g. the
cursor position - we just keep the current position (but bounded to
the new dimensions).
Fun thing: ‘less’ gets corrupted if we don’t leave the cursor at
the (new) bottom row. To handle this, we check if the cursor (before
resize) is at the bottom row, and if so, we move it to the new bottom
row.
Closes #221
2020-11-24 19:00:57 +01:00
|
|
|
* Graphical glitches/flashes when resizing the window while running a
|
|
|
|
|
fullscreen application, i.e. the 'alt' screen
|
2022-04-22 20:02:15 +02:00
|
|
|
([#221](https://codeberg.org/dnkl/foot/issues/221)).
|
term: split cursor blink state into two
There are two different escape sequences that can be used to set the
cursor blink state: ‘CSI ? 12 h/l’ and ‘CSI Ps SP q’.
Up until now, they both modified the same internal state in foot. This
meant you could enable a blinking cursor with e.g. ‘CSI ? 12 h’ and
then disable it with ‘CSI 2 SP q’.
Since the ‘CSI ? 12’ escapes are used in the civis/cnorm/cvvis
terminfo entries, applications often ended up disabling the blink
state on exit (typically be emitting ‘cnorm’), requiring users to
manually re-enable blinking.
By splitting the internal state into two separate states, we can
improve the situation.
The cursor will blink if at least one of the two have been enabled.
The setting in foot.ini sets the default state of the ‘CSI Ps SP q’
escape.
This means if the user has enabled blinking in the configuration, the
cursor will blink regardless of civis/cnorm/cvvis. Which probably is
what the user wants.
If the user has NOT enabled blinking, civis/cnorm/cvvis act as
intended: cvvis blink, civis and cnorm do not.
If an application overrides the cursor blink/style with ‘CSI Ps SP q’,
that will override the user’s setting in foot.ini. But most likely
that too is intended (for example, the user may have configured the
application to use a different cursor style). And, a well written
application will emit the ‘Se’ terminfo sequence on exit, which in
foot is defined to ‘CSI SP q’, which will reset both the style and
blink state to the user configured style/state.
Closes #218
2020-11-26 18:09:32 +01:00
|
|
|
* 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`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#218](https://codeberg.org/dnkl/foot/issues/218)).
|
2020-12-12 20:50:43 +01:00
|
|
|
* 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.
|
2020-12-16 10:33:04 +01:00
|
|
|
* SGR 21 no longer disables **bold**. According to ECMA-48, SGR 21 is
|
2024-02-06 12:36:45 +01:00
|
|
|
_"double underline_". Foot does not (yet) implement that, but that's
|
2020-12-14 19:10:30 +01:00
|
|
|
no reason to implement a non-standard behavior.
|
2020-12-16 13:57:40 +01:00
|
|
|
* `DECRQM` now returns actual state of the requested mode, instead of
|
|
|
|
|
always returning `2`.
|
2020-12-12 20:50:43 +01:00
|
|
|
|
2020-10-22 18:41:47 +02:00
|
|
|
|
2020-10-11 19:36:00 +02:00
|
|
|
### Removed
|
2020-12-08 19:49:43 +01:00
|
|
|
|
|
|
|
|
* Support for loading configuration from `$XDG_CONFIG_HOME/footrc`.
|
2020-12-18 14:46:16 +01:00
|
|
|
* `scrollback` option from `foot.ini`.
|
|
|
|
|
* `geometry` from `foot.ini`.
|
|
|
|
|
* Key binding action `scrollback-up` and `scrollback-down`.
|
2020-12-08 19:49:43 +01:00
|
|
|
|
|
|
|
|
|
2020-10-11 19:36:00 +02:00
|
|
|
### Fixed
|
2020-12-05 11:21:17 +01:00
|
|
|
|
|
|
|
|
* Error when re-assigning a default key binding
|
2022-04-22 20:02:15 +02:00
|
|
|
([#233](https://codeberg.org/dnkl/foot/issues/233)).
|
2020-12-11 20:01:19 +01:00
|
|
|
* `\E[s`+`\E[u` (save/restore cursor) now saves and restores
|
|
|
|
|
attributes and charset configuration, just like `\E7`+`\E8`.
|
input: report mouse drag events also when the pointer is outside the grid
As long as the mouse button was *pressed* while the pointer was inside
the grid, we want to keep reporting motion events until the button is
released.
Even when the pointer moves outside the grid (but in this case, the
reported coordinates are bounded by the grid size).
This patch also tries to improve multi-button handling (i.e. multiple
buttons pressed at the same time), and the events we report to the
client for these, in the following ways:
* Motion events now report the *initial* button. That is, if you start
a drag operation with the LEFT button, then press RIGHT (before
releasing LEFT), keep reporting LEFT in the motion events.
* Mouse release events are reported for *any* button, as long as the
pointer is *inside* the grid, *or*, the button released was the
button used to start a drag operation.
The last point is important; if we have reported a button press
followed by motion events (i.e. a drag operation), we need to report
the button release, *even* if the pointer is outside the grid.
Note that the client may receive unbalanced button press/release
events in the following ways if the user pressed one, and then a
second button *inside* the grid, then releases the *first*
button (possibly outside the grid), and finally releases the *second*
button *outside* the grid.
In this case, both buttons will report press events. The first button
will report a release event since it is the initial button in the drag
operation.
However, we don’t track the fact that the second button is being
pressed, and thus if it is released outside the grid, it wont generate
a release event.
2020-12-11 20:48:43 +01:00
|
|
|
* Report mouse motion events to the client application also while
|
|
|
|
|
dragging the cursor outside the grid.
|
2020-12-12 20:50:43 +01:00
|
|
|
* Parsing of the sub-parameter versions of indexed SGR color escapes
|
|
|
|
|
(e.g. `\E[38:5...m`)
|
2020-12-14 19:05:03 +01:00
|
|
|
* Frames occasionally being rendered while application synchronized
|
|
|
|
|
updates is in effect.
|
2020-12-15 18:55:27 +01:00
|
|
|
* Handling of failures to parse the font specification string.
|
vt: don’t ignore extra private/intermediate characters
Take ‘\E(#0’ for example - this is *not* the same as ‘\E(0’.
Up until now, foot has however treated them as the same escape,
because the handler for ‘\E(0’ didn’t verify there weren’t any _other_
private characters present.
Fix this by turning the ‘private’ array into a single 4-byte
integer. This allows us to match *all* privates with a single
comparison.
Private characters are added to the LSB first, and MSB last. This
means we can check for single privates in pretty much the same way as
before:
switch (term->vt.private) {
case ‘?’:
...
break;
}
Checking for two (or more) is much uglier, but foot only supports
a *single* escape with two privates, and no escapes with three or
more:
switch (term->vt.private) {
case 0x243f: /* ‘?$’ */
...
break;
}
The ‘clear’ action remains simple (and fast), with a single write
operation.
Collecting privates is potentially _slightly_ more complex than
before; we now need mask and compare, instead of simply comparing,
when checking how many privates we already have.
We _could_ add a counter, which would make collecting privates easier,
but this would add an additional write to the ‘clean’ action which is
really bad since it’s in the hot path.
2020-12-16 14:30:49 +01:00
|
|
|
* Extra private/intermediate characters in escape sequences not being
|
|
|
|
|
ignored.
|
2020-12-05 11:21:17 +01:00
|
|
|
|
|
|
|
|
|
2020-12-01 20:02:58 +01:00
|
|
|
### Contributors
|
|
|
|
|
|
|
|
|
|
* [kennylevinsen](https://codeberg.org/kennylevinsen)
|
|
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
|
|
|
|
|
|
|
|
|
|
2020-12-01 19:33:22 +01:00
|
|
|
## 1.5.4
|
|
|
|
|
|
2020-11-11 18:37:28 +01:00
|
|
|
### Changed
|
|
|
|
|
|
2020-12-01 20:02:58 +01:00
|
|
|
|
2020-11-11 18:37:28 +01:00
|
|
|
* Num Lock by default overrides the keypad mode. See
|
2020-11-12 18:20:54 +01:00
|
|
|
**foot.ini**(5)::KEYPAD, or
|
|
|
|
|
[README.md](README.md#user-content-keypad) for details
|
2022-04-22 20:02:15 +02:00
|
|
|
([#194](https://codeberg.org/dnkl/foot/issues/194)).
|
2020-11-13 17:49:23 +01:00
|
|
|
* Single-width characters with double-width glyphs are now allowed to
|
|
|
|
|
overflow into neighboring cells by default. Set
|
2024-02-06 12:36:45 +01:00
|
|
|
**tweak.allow-overflowing-double-width-glyphs** to 'no' to disable
|
2020-11-13 17:49:23 +01:00
|
|
|
this.
|
2020-11-11 18:37:28 +01:00
|
|
|
|
2020-12-01 19:33:22 +01:00
|
|
|
### Fixed
|
|
|
|
|
|
2020-11-10 19:20:35 +01:00
|
|
|
* Resize very slow when window is hidden
|
2022-04-22 20:02:15 +02:00
|
|
|
([#190](https://codeberg.org/dnkl/foot/issues/190)).
|
2020-11-19 19:15:13 +01:00
|
|
|
* Key mappings for key combinations with `shift`+`tab`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#210](https://codeberg.org/dnkl/foot/issues/210)).
|
2020-11-19 19:20:15 +01:00
|
|
|
* Key mappings for key combinations with `alt`+`return`.
|
2020-11-22 16:40:15 +00:00
|
|
|
* `footclient` `-m` (`--maximized`) flag being ignored.
|
2020-11-23 19:22:40 +01:00
|
|
|
* Crash with explicitly sized sixels with a height less than 6 pixels.
|
2020-11-28 11:50:32 +01:00
|
|
|
* Key mappings for `esc` with modifiers.
|
2020-11-06 20:21:33 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
### Contributors
|
|
|
|
|
|
2020-11-21 22:05:24 +01:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
|
|
|
|
|
2020-11-06 20:21:33 +01:00
|
|
|
|
2020-11-06 20:06:31 +01:00
|
|
|
## 1.5.3
|
|
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
2020-10-19 18:30:19 +02:00
|
|
|
* Crash when libxkbcommon cannot find a suitable libX11 _compose_
|
|
|
|
|
file. Note that foot will run, but without support for dead keys.
|
2022-04-22 20:02:15 +02:00
|
|
|
([#170](https://codeberg.org/dnkl/foot/issues/170)).
|
2020-10-20 20:58:03 +02:00
|
|
|
* Restored window size when window is un-tiled.
|
2020-10-20 21:00:19 +02:00
|
|
|
* XCursor shape in CSD corners when window is tiled.
|
2020-10-20 21:01:33 +02:00
|
|
|
* Error handling when processing keyboard input (maybe
|
2022-04-22 20:02:15 +02:00
|
|
|
[#171](https://codeberg.org/dnkl/foot/issues/171)).
|
2020-10-29 18:06:04 +01:00
|
|
|
* 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).
|
2020-11-03 19:44:51 +01:00
|
|
|
* Crash when using the mouse in alternate scroll mode in an unfocused
|
2022-04-22 20:02:15 +02:00
|
|
|
window ([#179](https://codeberg.org/dnkl/foot/issues/179)).
|
2020-11-04 19:01:59 +01:00
|
|
|
* Character dropped from selection when "right-click-hold"-extending a
|
2022-04-22 20:02:15 +02:00
|
|
|
selection ([#180](https://codeberg.org/dnkl/foot/issues/180)).
|
2020-10-11 19:36:00 +02:00
|
|
|
|
|
|
|
|
|
2020-10-13 08:02:09 +02:00
|
|
|
## 1.5.2
|
|
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
|
|
|
|
|
* Regression: middle clicking double pastes in e.g. vim
|
2022-04-22 20:02:15 +02:00
|
|
|
([#168](https://codeberg.org/dnkl/foot/issues/168))
|
2020-10-13 08:02:09 +02:00
|
|
|
|
|
|
|
|
|
2020-10-11 19:31:01 +02:00
|
|
|
## 1.5.1
|
2020-10-02 21:44:03 +02:00
|
|
|
|
2020-09-18 21:29:39 +02:00
|
|
|
### Changed
|
2020-09-29 19:41:53 +02:00
|
|
|
|
2020-09-29 19:43:39 +02:00
|
|
|
* Default value of the **scrollback.multiplier** option in `foot.ini`
|
|
|
|
|
from `1.0` to `3.0`.
|
2020-10-10 10:27:42 +02:00
|
|
|
* `shift`+`insert` now pastes from the primary selection by
|
|
|
|
|
default. This is in addition to middle-clicking with the mouse.
|
2020-09-29 19:41:53 +02:00
|
|
|
|
|
|
|
|
|
2020-09-18 21:29:39 +02:00
|
|
|
### Fixed
|
2020-09-27 14:31:39 +02:00
|
|
|
|
|
|
|
|
* 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
|
2022-04-22 20:02:15 +02:00
|
|
|
([#146](https://codeberg.org/dnkl/foot/issues/146)).
|
2020-09-29 10:11:03 +02:00
|
|
|
* Color flashes when changing the color palette with OSC 4,10,11
|
2022-04-22 20:02:15 +02:00
|
|
|
([#141](https://codeberg.org/dnkl/foot/issues/141)).
|
2020-09-24 18:35:40 +02:00
|
|
|
* Scrollback position is now retained when resizing the window
|
2022-04-22 20:02:15 +02:00
|
|
|
([#142](https://codeberg.org/dnkl/foot/issues/142)).
|
2020-09-29 09:49:21 +02:00
|
|
|
* 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
|
2020-09-29 19:47:29 +02:00
|
|
|
**scrollback.multiplier** option in `foot.ini` if you find the new
|
2022-04-22 20:02:15 +02:00
|
|
|
speed too slow ([#144](https://codeberg.org/dnkl/foot/issues/144)).
|
2020-10-07 18:34:48 +02:00
|
|
|
* Crash when `foot.ini` contains an invalid section name
|
2022-04-22 20:02:15 +02:00
|
|
|
([#159](https://codeberg.org/dnkl/foot/issues/159)).
|
2020-10-08 19:53:11 +02:00
|
|
|
* Background opacity when in _reverse video_ mode.
|
2020-10-02 20:55:10 +02:00
|
|
|
* Crash when writing a sixel image that extends outside the terminal's
|
2022-04-22 20:02:15 +02:00
|
|
|
right margin ([#151](https://codeberg.org/dnkl/foot/issues/151)).
|
2020-10-02 20:56:44 +02:00
|
|
|
* Sixel image at non-zero column positions getting sheared at
|
|
|
|
|
seemingly random occasions
|
2022-04-22 20:02:15 +02:00
|
|
|
([#151](https://codeberg.org/dnkl/foot/issues/151)).
|
2020-10-07 18:46:11 +02:00
|
|
|
* Crash after either resizing a window or changing the font size if
|
|
|
|
|
there were sixels present in the scrollback while doing so.
|
2020-10-09 18:53:00 +02:00
|
|
|
* _Send Device Attributes_ to only send a response if `Ps == 0`.
|
2020-10-10 21:13:08 +03:00
|
|
|
* Paste from primary when clipboard is empty.
|
2020-09-27 14:31:39 +02:00
|
|
|
|
|
|
|
|
|
2020-09-18 21:29:39 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2020-10-09 19:19:40 +02:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2020-10-10 23:34:21 +02:00
|
|
|
* [zar](https://codeberg.org/zar)
|
2020-10-09 19:19:40 +02:00
|
|
|
|
2020-09-18 21:29:39 +02:00
|
|
|
|
2020-09-18 21:22:59 +02:00
|
|
|
## 1.5.0
|
2020-07-29 07:08:14 +02:00
|
|
|
|
2020-09-08 19:37:59 +02:00
|
|
|
### Deprecated
|
|
|
|
|
|
|
|
|
|
* `$XDG_CONFIG_HOME/footrc`/`~/.config/footrc`. Use
|
|
|
|
|
`$XDG_CONFIG_HOME/foot/foot.ini`/`~/.config/foot/foot.ini` instead.
|
2020-09-10 18:17:47 +02:00
|
|
|
* **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.
|
2020-09-08 19:37:59 +02:00
|
|
|
|
|
|
|
|
|
2020-07-23 18:56:47 +02:00
|
|
|
### Added
|
2020-07-27 19:08:28 +02:00
|
|
|
|
|
|
|
|
* Scrollback position indicator. This feature is optional and
|
2020-07-29 17:50:19 +02:00
|
|
|
controlled by the **scrollback.indicator-position** and
|
2020-09-08 19:37:59 +02:00
|
|
|
**scrollback.indicator-format** options in `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#42](https://codeberg.org/dnkl/foot/issues/42)).
|
2020-08-15 23:29:38 +02:00
|
|
|
* Key bindings in _scrollback search_ mode are now configurable.
|
2020-07-29 17:48:22 +02:00
|
|
|
* `--check-config` command line option.
|
2020-07-31 17:02:53 +02:00
|
|
|
* **pipe-selected** key binding. Works like **pipe-visible** and
|
|
|
|
|
**pipe-scrollback**, but only pipes the currently selected text, if
|
2022-04-22 20:02:15 +02:00
|
|
|
any ([#51](https://codeberg.org/dnkl/foot/issues/51)).
|
2020-09-08 19:37:59 +02:00
|
|
|
* **mouse.hide-when-typing** option to `foot.ini`.
|
|
|
|
|
* **scrollback.multiplier** option to `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#54](https://codeberg.org/dnkl/foot/issues/54)).
|
2020-08-12 18:53:32 +02:00
|
|
|
* **colors.selection-foreground** and **colors.selection-background**
|
2020-09-08 19:37:59 +02:00
|
|
|
options to `foot.ini`.
|
|
|
|
|
* **tweak.render-timer** option to `foot.ini`.
|
2020-08-10 19:16:26 +02:00
|
|
|
* Modifier support in mouse bindings
|
2022-04-22 20:02:15 +02:00
|
|
|
([#77](https://codeberg.org/dnkl/foot/issues/77)).
|
2020-08-10 20:59:05 +02:00
|
|
|
* Click count support in mouse bindings, i.e double- and triple-click
|
2022-04-22 20:02:15 +02:00
|
|
|
([#78](https://codeberg.org/dnkl/foot/issues/78)).
|
2020-08-11 10:26:31 +02:00
|
|
|
* 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
|
2020-09-08 19:37:59 +02:00
|
|
|
**mouse-bindings** section in `foot.ini`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#79](https://codeberg.org/dnkl/foot/issues/79)).
|
2020-08-16 17:03:58 +02:00
|
|
|
* Implement XTSAVE/XTRESTORE escape sequences, `CSI ? Ps s` and `CSI ?
|
2022-04-22 20:02:15 +02:00
|
|
|
Ps r` ([#91](https://codeberg.org/dnkl/foot/issues/91)).
|
2020-08-23 05:31:34 +01:00
|
|
|
* `$COLORTERM` is now set to `truecolor` at startup, to indicate
|
|
|
|
|
support for 24-bit RGB colors.
|
2020-09-03 17:37:44 +02:00
|
|
|
* Experimental support for rendering double-width glyphs with a
|
|
|
|
|
character width of 1. Must be explicitly enabled with
|
|
|
|
|
`tweak.allow-overflowing-double-width-glyphs`
|
2022-04-22 20:02:15 +02:00
|
|
|
([#116](https://codeberg.org/dnkl/foot/issues/116)).
|
2020-09-08 19:17:29 +02:00
|
|
|
* **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**.
|
2020-09-10 18:17:47 +02:00
|
|
|
* **scrollback-up-half-page** and **scrollback-down-half-page** key
|
2020-09-09 19:40:48 +02:00
|
|
|
bindings. They scroll up/down half of a page in the scrollback
|
2022-04-22 20:02:15 +02:00
|
|
|
([#128](https://codeberg.org/dnkl/foot/issues/128)).
|
2020-09-10 18:17:47 +02:00
|
|
|
* **scrollback-up-line** and **scrollback-down-line** key
|
|
|
|
|
bindings. They scroll up/down a single line in the scrollback.
|
2020-09-15 19:09:00 +02:00
|
|
|
* **mouse.alternate-scroll-mode** option to `foot.ini`. This option
|
|
|
|
|
controls the initial state of the _Alternate Scroll Mode_, and
|
2020-09-15 19:29:38 +02:00
|
|
|
defaults to `yes`. When enabled, mouse scroll events are translated
|
|
|
|
|
to up/down key events in the alternate screen, letting you scroll in
|
2020-09-15 19:09:00 +02:00
|
|
|
e.g. `less` and other applications without enabling native mouse
|
2022-04-22 20:02:15 +02:00
|
|
|
support in them ([#135](https://codeberg.org/dnkl/foot/issues/135)).
|
2020-07-27 19:08:28 +02:00
|
|
|
|
2020-07-29 17:41:24 +02:00
|
|
|
|
2020-07-29 07:08:14 +02:00
|
|
|
### Changed
|
|
|
|
|
|
2020-09-08 19:37:59 +02:00
|
|
|
* Renamed man page for `foot.ini` from **foot**(5) to **foot.ini**(5).
|
2020-07-31 17:07:14 +02:00
|
|
|
* Configuration errors are no longer fatal; foot will start and print
|
|
|
|
|
an error inside the terminal (and of course still log errors on
|
|
|
|
|
stderr).
|
2020-08-02 13:10:31 +02:00
|
|
|
* Default `--server` socket path to use `$WAYLAND_DISPLAY` instead of
|
2022-04-22 20:02:15 +02:00
|
|
|
`$XDG_SESSION_ID` ([#55](https://codeberg.org/dnkl/foot/issues/55)).
|
2020-08-18 18:03:41 +02:00
|
|
|
* Trailing empty cells are no longer highlighted in mouse selections.
|
2020-08-27 20:02:43 +02:00
|
|
|
* 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`.
|
2020-09-07 19:34:06 +02:00
|
|
|
* Minimum window size changed from four rows and 20 columns, to 1 row
|
|
|
|
|
and 2 columns.
|
2020-09-10 18:17:47 +02:00
|
|
|
* **scrollback-up/down** renamed to **scrollback-up/down-page**.
|
2020-09-13 17:59:56 +02:00
|
|
|
* fcft >= 2.3.0 is now required.
|
2020-07-29 07:08:14 +02:00
|
|
|
|
|
|
|
|
|
2020-07-30 18:53:51 +02:00
|
|
|
### 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.
|
2020-08-04 18:07:54 +02:00
|
|
|
* Incorrect multi-column character spacer insertion when reflowing
|
|
|
|
|
text.
|
2020-08-06 23:20:46 +02:00
|
|
|
* Compilation errors in 32-bit builds.
|
2020-08-07 20:08:30 +02:00
|
|
|
* Mouse cursor style in top and left margins.
|
2020-08-07 19:55:02 +02:00
|
|
|
* Selection is now **updated** when the cursor moves outside the grid
|
2022-04-22 20:02:15 +02:00
|
|
|
([#70](https://codeberg.org/dnkl/foot/issues/70)).
|
2020-08-12 18:45:35 +02:00
|
|
|
* Viewport sometimes not moving when doing a scrollback search.
|
2020-08-13 06:33:10 +02:00
|
|
|
* Crash when canceling a scrollback search and the window had been
|
2020-08-12 18:45:35 +02:00
|
|
|
resized while searching.
|
2020-08-12 18:50:49 +02:00
|
|
|
* Selection start point not moving when the selection changes
|
|
|
|
|
direction.
|
2020-08-18 07:20:57 +02:00
|
|
|
* OSC 10/11/104/110/111 (modify colors) did not update existing screen
|
2022-04-22 20:02:15 +02:00
|
|
|
content ([#94](https://codeberg.org/dnkl/foot/issues/94)).
|
2020-08-20 19:21:25 +02:00
|
|
|
* Extra newlines when copying empty cells
|
2022-04-22 20:02:15 +02:00
|
|
|
([#97](https://codeberg.org/dnkl/foot/issues/97)).
|
2020-08-22 13:35:36 +02:00
|
|
|
* Mouse events from being sent to client application when a mouse
|
|
|
|
|
binding has consumed it.
|
2020-08-22 09:16:51 +02:00
|
|
|
* Input events from getting mixed with paste data
|
2022-04-22 20:02:15 +02:00
|
|
|
([#101](https://codeberg.org/dnkl/foot/issues/101)).
|
2024-02-06 12:36:45 +01:00
|
|
|
* Missing DPI values for "some" monitors on Gnome
|
2022-04-22 20:02:15 +02:00
|
|
|
([#118](https://codeberg.org/dnkl/foot/issues/118)).
|
2020-09-06 19:14:46 +02:00
|
|
|
* Handling of multi-column composed characters while reflowing.
|
2020-09-07 22:03:58 +02:00
|
|
|
* Escape sequences sent for key combinations with `Return`, that did
|
|
|
|
|
**not** include `Alt`.
|
2020-09-09 18:46:39 +02:00
|
|
|
* Clipboard (or primary selection) is now cleared when receiving an
|
|
|
|
|
OSC-52 command with an invalid base64 encoded payload.
|
2020-09-09 18:40:06 +02:00
|
|
|
* Cursor position being set outside the grid when reflowing text.
|
2020-09-09 18:43:23 +02:00
|
|
|
* CSD buttons to be hidden when window size becomes so small that they
|
|
|
|
|
no longer fit.
|
2020-07-30 18:53:51 +02:00
|
|
|
|
|
|
|
|
|
2020-07-29 07:07:46 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
2020-08-03 08:17:26 +02:00
|
|
|
* [craigbarnes](https://codeberg.org/craigbarnes)
|
2020-08-08 10:23:26 +02:00
|
|
|
* [birger](https://codeberg.org/birger)
|
2020-08-16 09:14:15 +02:00
|
|
|
* [Ordoviz](https://codeberg.org/Ordoviz)
|
2020-09-18 21:22:27 +02:00
|
|
|
* [cherti](https://codeberg.org/cherti)
|
2020-08-03 08:17:26 +02:00
|
|
|
|
2020-07-29 07:01:44 +02:00
|
|
|
|
2020-07-29 06:55:23 +02:00
|
|
|
## 1.4.4
|
2020-07-26 12:31:13 +02:00
|
|
|
### Changed
|
|
|
|
|
|
|
|
|
|
* Mouse cursor is now always a `left_ptr` when inside the margins, to
|
|
|
|
|
indicate it is not possible to start a selection.
|
|
|
|
|
|
|
|
|
|
|
2020-07-27 19:00:25 +02:00
|
|
|
### Fixed
|
2020-07-27 19:08:28 +02:00
|
|
|
|
|
|
|
|
* Crash when starting a selection inside the margins.
|
2020-07-28 20:07:53 +02:00
|
|
|
* Improved font size consistency across multiple monitors with
|
2022-04-22 20:02:15 +02:00
|
|
|
different DPI ([#47](https://codeberg.org/dnkl/foot/issues/47)).
|
2020-07-28 19:55:09 +02:00
|
|
|
* Handle trailing comments in `footrc`
|
2020-07-27 19:00:25 +02:00
|
|
|
|
|
|
|
|
|
2020-07-27 18:55:12 +02:00
|
|
|
## 1.4.3
|
2020-07-23 18:56:47 +02:00
|
|
|
### Added
|
2020-07-24 17:50:48 +02:00
|
|
|
|
|
|
|
|
* Section to [README.md](README.md) describing how to programmatically
|
|
|
|
|
identify foot.
|
2020-07-25 09:05:11 +02:00
|
|
|
* [LICENSE](LICENSE), [README.md](README.md) and
|
|
|
|
|
[CHANGELOG.md](CHANGELOG.md) are now installed to
|
|
|
|
|
`${datadir}/doc/foot`.
|
2020-07-27 16:43:41 +02:00
|
|
|
* Support for escaping quotes in **pipe-visible** and
|
|
|
|
|
**pipe-scrollback** commands.
|
2020-07-24 17:50:48 +02:00
|
|
|
|
|
|
|
|
|
2020-07-23 18:56:47 +02:00
|
|
|
### Changed
|
2020-07-24 17:46:18 +02:00
|
|
|
|
|
|
|
|
* Primary DA to no longer indicate support for _Selective Erase_,
|
|
|
|
|
_Technical Characters_ and _Terminal State Interrogation_.
|
2020-07-24 17:47:47 +02:00
|
|
|
* 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`).
|
2020-07-24 17:49:50 +02:00
|
|
|
* 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.
|
2020-07-27 16:44:41 +02:00
|
|
|
* Extending a selection with the right mouse button now works while
|
|
|
|
|
dragging the mouse.
|
2020-07-24 17:49:50 +02:00
|
|
|
|
|
|
|
|
|
2020-07-23 18:56:47 +02:00
|
|
|
### Fixed
|
2020-07-25 11:23:54 +02:00
|
|
|
|
2020-07-27 16:44:41 +02:00
|
|
|
* Crash in scrollback search.
|
2020-07-27 16:41:35 +02:00
|
|
|
* Crash when a **pipe-visible** or **pipe-scrollback** command
|
|
|
|
|
contained an unclosed quote
|
2022-04-22 20:02:15 +02:00
|
|
|
([#49](https://codeberg.org/dnkl/foot/issues/49)).
|
2020-07-25 11:23:54 +02:00
|
|
|
|
|
|
|
|
|
2020-07-25 13:55:05 +02:00
|
|
|
### Contributors
|
|
|
|
|
|
|
|
|
|
* [birger](https://codeberg.org/birger)
|
|
|
|
|
* [cherti](https://codeberg.org/cherti)
|
2020-07-23 18:56:47 +02:00
|
|
|
|
2020-03-15 11:39:11 +01:00
|
|
|
|
2020-07-23 18:51:33 +02:00
|
|
|
## 1.4.2
|
|
|
|
|
|
2020-07-22 21:07:57 +02:00
|
|
|
### Changed
|
|
|
|
|
|
|
|
|
|
* Maximum window title length from 100 to 2048.
|
|
|
|
|
|
|
|
|
|
|
2020-07-22 20:06:07 +02:00
|
|
|
### Fixed
|
2020-07-23 18:13:54 +02:00
|
|
|
|
|
|
|
|
* Crash when overwriting a sixel and the row being overwritten did not
|
|
|
|
|
cover an entire cell.
|
2020-07-23 18:15:29 +02:00
|
|
|
* Assertion failure in debug builds when overwriting a sixel image.
|
|
|
|
|
|
2020-07-23 18:13:54 +02:00
|
|
|
|
2020-07-22 20:03:28 +02:00
|
|
|
## 1.4.1
|
|
|
|
|
|
2020-07-22 19:11:57 +02:00
|
|
|
### Fixed
|
2020-07-22 20:03:28 +02:00
|
|
|
|
|
|
|
|
* Compilation errors in release builds with some combinations of
|
|
|
|
|
compilers and compiler flags.
|
2020-07-22 19:11:57 +02:00
|
|
|
|
|
|
|
|
|
2020-07-22 18:59:19 +02:00
|
|
|
## 1.4.0
|
2020-05-13 13:22:19 +02:00
|
|
|
|
|
|
|
|
### Added
|
2020-05-16 14:13:45 +02:00
|
|
|
|
|
|
|
|
* `Sync` to terminfo. This is a tmux extension that indicates
|
|
|
|
|
_"Synchronized Updates"_ are supported.
|
2020-05-26 20:12:53 +02:00
|
|
|
* `--hold` command line option to `footclient`.
|
2020-06-27 20:03:41 +02:00
|
|
|
* Key mapping for `KP_Decimal`.
|
2020-06-27 20:05:50 +02:00
|
|
|
* Terminfo entries for keypad keys: `ka1`, `ka2`, `ka3`, `kb1`, `kb3`,
|
|
|
|
|
`kc1`, `kc2`, `kc3`, `kp5`, `kpADD`, `kpCMA`, `kpDIV`, `kpDOT`,
|
|
|
|
|
`kpMUL`, `kpSUB` and `kpZRO`.
|
2020-06-30 17:45:34 +02:00
|
|
|
* **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.
|
2020-07-09 09:17:42 +02:00
|
|
|
* Multi-seat support
|
2020-07-14 09:18:52 +02:00
|
|
|
* Implemented `C0::FF` (form feed)
|
2020-07-15 17:53:36 +02:00
|
|
|
* **pipe-visible** and **pipe-scrollback** key bindings. These let you
|
|
|
|
|
pipe either the currently visible text, or the entire scrollback to
|
2022-04-22 20:02:15 +02:00
|
|
|
external tools ([#29](https://codeberg.org/dnkl/foot/issues/29)). Example:
|
2020-07-15 18:22:40 +02:00
|
|
|
`pipe-visible=[sh -c "xurls | bemenu | xargs -r firefox] Control+Print`
|
2020-05-16 14:13:45 +02:00
|
|
|
|
2020-05-16 16:26:52 +02:00
|
|
|
|
2020-05-13 13:22:19 +02:00
|
|
|
### Changed
|
2020-05-16 16:26:52 +02:00
|
|
|
|
|
|
|
|
* Background transparency to only be used with the default background
|
|
|
|
|
color.
|
2020-06-29 21:52:32 +02:00
|
|
|
* Copy-to-clipboard/primary-selection to insert a line break if either
|
2020-05-16 22:29:53 +02:00
|
|
|
the last cell on the previous line or the first cell on the next
|
|
|
|
|
line is empty.
|
2020-05-16 23:44:54 +02:00
|
|
|
* Number of lines to scroll is now always clamped to the number of
|
|
|
|
|
lines in the scrolling region..
|
2020-05-21 20:28:26 +02:00
|
|
|
* New terminal windows spawned with `ctrl`+`shift`+`n` are no longer
|
2020-05-21 20:17:29 +02:00
|
|
|
double forked.
|
2020-06-14 09:14:04 +02:00
|
|
|
* Unicode combining character overflow errors are only logged when
|
2020-06-09 17:31:58 +02:00
|
|
|
debug logging has been enabled.
|
2020-06-14 09:34:46 +02:00
|
|
|
* OSC 4 (_Set Color_) now updates already rendered cells, excluding
|
|
|
|
|
scrollback.
|
2020-06-29 21:51:53 +02:00
|
|
|
* Mouse cursor from `hand2` to `left_ptr` when client is capturing the
|
|
|
|
|
mouse.
|
2020-06-29 21:53:29 +02:00
|
|
|
* Sixel images are now removed when the font size is **decreased**.
|
2020-06-30 17:43:43 +02:00
|
|
|
* `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`.
|
2020-07-11 18:43:50 +02:00
|
|
|
* Hollow cursor to be drawn when window has lost _keyboard_ focus
|
|
|
|
|
rather than _visual_ focus.
|
2020-05-16 16:26:52 +02:00
|
|
|
|
2020-05-19 18:51:56 +02:00
|
|
|
|
2020-05-13 13:22:19 +02:00
|
|
|
### Fixed
|
2020-05-16 21:09:59 +02:00
|
|
|
|
|
|
|
|
* Do not stop an ongoing selection when `shift` is released. When the
|
2020-06-29 21:52:50 +02:00
|
|
|
client application is capturing the mouse, one must hold down
|
2020-05-16 21:09:59 +02:00
|
|
|
`shift` to start a selection. This selection is now finalized only
|
|
|
|
|
when the mouse button is released - not as soon as `shift` is
|
|
|
|
|
released.
|
2020-06-14 09:14:04 +02:00
|
|
|
* Selected cells did not appear selected if programmatically modified.
|
2020-05-19 18:51:56 +02:00
|
|
|
* Rare crash when scrolling and the new viewport ended up **exactly**
|
|
|
|
|
on the wrap around.
|
2020-05-19 18:49:42 +02:00
|
|
|
* Selection handling when viewport wrapped around.
|
2020-06-29 21:53:07 +02:00
|
|
|
* Restore signal mask in the client process.
|
2020-05-26 18:18:11 +02:00
|
|
|
* Set `IUTF8`.
|
2020-06-02 18:21:39 +02:00
|
|
|
* Selection of double-width characters. It is no longer possible to
|
|
|
|
|
select half of a double-width character.
|
2020-06-02 18:22:55 +02:00
|
|
|
* Draw hollow block cursor on top of character.
|
2020-06-29 21:53:07 +02:00
|
|
|
* Set an initial `TIOCSWINSZ`. This ensures clients never read a
|
2022-04-22 20:02:15 +02:00
|
|
|
`0x0` terminal size ([#20](https://codeberg.org/dnkl/foot/issues/20)).
|
2020-06-03 17:40:55 +02:00
|
|
|
* Glyphs overflowing into surrounding cells
|
2022-04-22 20:02:15 +02:00
|
|
|
([#21](https://codeberg.org/dnkl/foot/issues/21)).
|
2020-06-09 17:32:34 +02:00
|
|
|
* Crash when last rendered cursor cell had scrolled off screen and
|
|
|
|
|
`\E[J3` was executed.
|
2020-06-09 17:33:26 +02:00
|
|
|
* Assert (debug builds) when an `\e]4` OSC escape was not followed by
|
|
|
|
|
a `;`.
|
2020-06-29 21:57:01 +02:00
|
|
|
* 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`.
|
2023-10-03 14:11:55 +02:00
|
|
|
* Palette reuse in sixel images. Previously, the palette was reset
|
2020-06-10 18:36:54 +02:00
|
|
|
after each image.
|
2020-08-15 23:29:38 +02:00
|
|
|
* Do not auto-resize a sixel image for which the client has specified
|
2020-06-11 18:40:52 +02:00
|
|
|
a size. This fixes an issue where an image would incorrectly
|
|
|
|
|
overflow into the cell row beneath.
|
2020-06-27 14:27:49 +02:00
|
|
|
* 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.
|
2020-06-29 21:57:01 +02:00
|
|
|
* Sixel images being erased when printing text next to them.
|
2020-06-29 21:59:40 +02:00
|
|
|
* Sixel handling when resizing window.
|
2020-06-29 22:01:02 +02:00
|
|
|
* Sixel handling when scrollback wraps around.
|
2020-07-13 15:10:03 +02:00
|
|
|
* Foot now issues much fewer `wl_surface_damage_buffer()` calls
|
2022-04-22 20:02:15 +02:00
|
|
|
([#35](https://codeberg.org/dnkl/foot/issues/35)).
|
2020-07-14 09:15:15 +02:00
|
|
|
* `C0::VT` to be processed as `C0::LF`. Previously, `C0::VT` would
|
|
|
|
|
only move the cursor down, but never scroll.
|
2020-07-14 11:33:30 +02:00
|
|
|
* `C0::HT` (_Horizontal Tab_, or `\t`) no longer clears `LCF` (_Last
|
2020-07-14 10:49:44 +02:00
|
|
|
Column Flag_).
|
2020-07-14 11:33:30 +02:00
|
|
|
* `C0::LF` now always clears `LCF`. Previously, it only cleared it
|
|
|
|
|
when the cursor was **not** at the bottom of the scrolling region.
|
2020-07-14 10:52:15 +02:00
|
|
|
* `IND` and `RI` now clears `LCF`.
|
2020-07-14 12:48:16 +02:00
|
|
|
* `DECAWM` now clears `LCF`.
|
2020-07-14 10:58:57 +02:00
|
|
|
* 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.
|
2020-07-15 11:05:22 +02:00
|
|
|
* Font size can no longer be reduced to negative values
|
2022-04-22 20:02:15 +02:00
|
|
|
([#38](https://codeberg.org/dnkl/foot/issues/38)).
|
2020-06-27 14:27:49 +02:00
|
|
|
|
2020-06-14 09:14:04 +02:00
|
|
|
|
2020-05-13 13:09:12 +02:00
|
|
|
## 1.3.0
|
|
|
|
|
|
2020-03-06 20:11:50 +01:00
|
|
|
### Added
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-12 10:23:59 +01:00
|
|
|
* User configurable key- and mouse bindings. See `man 5 foot` and the
|
2022-04-22 20:02:15 +02:00
|
|
|
example `footrc` ([#1](https://codeberg.org/dnkl/foot/issues/1))
|
2020-03-28 12:04:00 +01:00
|
|
|
* **initial-window-mode** option to `footrc`, that lets you control
|
|
|
|
|
the initial mode for each newly spawned window: _windowed_,
|
|
|
|
|
_maximized_ or _fullscreen_.
|
2020-04-24 20:40:33 +02:00
|
|
|
* **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.
|
2020-04-04 12:08:46 +02:00
|
|
|
* Right mouse button extends the current selection.
|
2020-04-25 23:07:47 +02:00
|
|
|
* `CSI Ps ; Ps ; Ps t` escape sequences for the following parameters:
|
2020-04-25 23:09:10 +02:00
|
|
|
`11t`, `13t`, `13;2t`, `14t`, `14;2t`, `15t`, `19t`.
|
2020-05-10 17:10:33 +02:00
|
|
|
* Unicode combining characters.
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-06-30 17:45:34 +02:00
|
|
|
|
2020-03-14 23:21:56 +01:00
|
|
|
### Changed
|
2020-03-15 12:31:42 +01:00
|
|
|
|
|
|
|
|
* Spaces no longer removed from zsh font name completions.
|
2020-03-17 21:12:37 +01:00
|
|
|
* Default key binding for _spawn-terminal_ to ctrl+shift+n.
|
2020-03-29 11:32:38 +02:00
|
|
|
* Renderer is now much faster with interactive scrolling
|
2022-04-22 20:02:15 +02:00
|
|
|
([#4](https://codeberg.org/dnkl/foot/issues/4))
|
2020-04-03 20:17:47 +02:00
|
|
|
* memfd sealing failures are no longer fatal errors.
|
2020-04-17 22:43:28 +02:00
|
|
|
* Selection to no longer be cleared on resize.
|
2020-04-22 19:52:28 +02:00
|
|
|
* 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.
|
2020-04-28 22:07:02 +02:00
|
|
|
* The four primary font variants (normal, bold, italic, bold italic)
|
|
|
|
|
are now loaded in parallel. This speeds up both the initial startup
|
2020-06-30 17:46:25 +02:00
|
|
|
time, as well as DPI changes.
|
2020-05-08 18:43:03 +02:00
|
|
|
* 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`.
|
2020-03-15 12:31:42 +01:00
|
|
|
|
|
|
|
|
|
2020-03-14 23:21:56 +01:00
|
|
|
### Removed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-14 23:21:56 +01:00
|
|
|
* Keyboard/pointer handler workarounds for Sway 1.2.
|
|
|
|
|
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-14 23:21:56 +01:00
|
|
|
### Fixed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-14 23:21:56 +01:00
|
|
|
* Sixel images moved or deleted on window resize.
|
2020-03-16 12:00:25 +01:00
|
|
|
* Cursor sometimes incorrectly restored on exit from alternate screen.
|
2020-03-17 11:47:47 +01:00
|
|
|
* 'Underline' cursor being invisible on underlined text.
|
2020-03-22 11:14:56 +01:00
|
|
|
* Restored cursor position in 'normal' screen when window was resized
|
|
|
|
|
while in 'alt' screen.
|
2020-04-03 20:16:56 +02:00
|
|
|
* Hostname in OSC 7 URI not being validated.
|
2020-04-04 14:31:46 +02:00
|
|
|
* OSC 4 with multiple `c;spec` pairs.
|
2020-04-08 17:39:54 +02:00
|
|
|
* Alt+Return to emit "ESC \r".
|
2020-04-10 18:43:29 +02:00
|
|
|
* Trackpad sloooow scrolling to eventually scroll a line.
|
2020-04-13 11:42:10 +02:00
|
|
|
* Memory leak in terminal reset.
|
2020-04-17 20:49:09 +02:00
|
|
|
* Translation of cursor coordinates on resize
|
2020-05-02 23:07:26 +02:00
|
|
|
* Scaling color specifiers in OSC sequences.
|
2020-05-02 22:58:30 +02:00
|
|
|
* `OSC 12 ?` to return the cursor color, not the cursor's text color.
|
2020-05-02 22:58:50 +02:00
|
|
|
* `OSC 12;#000000` to configure the cursor to use inverted
|
|
|
|
|
foreground/background colors.
|
2020-05-13 13:04:52 +02:00
|
|
|
* Call `ioctl(TIOCSCTTY)` on the pts fd in the slave process.
|
2020-05-09 12:04:55 +02:00
|
|
|
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-15 11:28:01 +01:00
|
|
|
## 1.2.3
|
|
|
|
|
|
|
|
|
|
### Fixed
|
|
|
|
|
* Forgot to version bump 1.2.2
|
|
|
|
|
|
|
|
|
|
|
2020-03-09 21:11:41 +01:00
|
|
|
## 1.2.2
|
|
|
|
|
|
2020-03-06 20:11:50 +01:00
|
|
|
### Changed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-09 21:11:41 +01:00
|
|
|
* 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.
|
|
|
|
|
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 20:11:50 +01:00
|
|
|
### Fixed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-10 18:17:14 +01:00
|
|
|
* Window size doubling when moving window between outputs with
|
2022-04-22 20:02:15 +02:00
|
|
|
different scaling factors ([#3](https://codeberg.org/dnkl/foot/issues/3)).
|
2020-03-11 20:18:47 +01:00
|
|
|
* Font being too small on monitors with fractional scaling
|
2022-04-22 20:02:15 +02:00
|
|
|
([#5](https://codeberg.org/dnkl/foot/issues/5)).
|
2020-03-10 18:17:14 +01:00
|
|
|
|
2020-03-06 20:11:50 +01:00
|
|
|
|
2020-03-06 21:21:34 +01:00
|
|
|
## 1.2.1
|
|
|
|
|
|
|
|
|
|
### Fixed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 21:21:34 +01:00
|
|
|
* Building AUR package
|
|
|
|
|
|
2020-03-06 20:11:50 +01:00
|
|
|
|
|
|
|
|
## 1.2.0
|
2020-03-06 20:10:27 +01:00
|
|
|
|
2020-03-06 19:45:04 +01:00
|
|
|
### Added
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 20:10:27 +01:00
|
|
|
* 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
|
|
|
|
|
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 19:45:04 +01:00
|
|
|
### Changed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 20:10:27 +01:00
|
|
|
* 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)
|
|
|
|
|
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 19:45:04 +01:00
|
|
|
### Removed
|
2020-03-14 23:28:21 +01:00
|
|
|
|
2020-03-06 20:10:27 +01:00
|
|
|
* '28' from DA response
|