Skip to content

Commit

Permalink
Merge upstream: v0.13.2 → v0.14.0 (#6)
Browse files Browse the repository at this point in the history
* Add support for loading conpty.dll

Co-Authored-By: @fredizzimo
Co-Authored-By: @Grueslayer

* Update wix on the release CI

Fixes alacritty#6939.

* Add TOML migration recommendation to warning

This adds a little recommendation to use `alacritty migrate` to
automatically transition configuration files from YAML to TOML.

* Remove mouse double_click/triple_click options

Fixes alacritty#6962.

* Change the default colorscheme

The new colorscheme is base16 classic dark with the bright colors
generated with oklab toolkits. The base16 classic dark is less washed
out and represents the current maintainers preference. The motivation
to change it was subjective, though it does look like generic dark
theme.

On a side note, this colorscheme was used for alacritty.org web page for
a long time, however it used different foreground color.

* Add manpage links to "see also" section

* Add version 0.12.2 to CHANGELOG

This is only an update to the development version and does not represent
a stable release.

* Add a note in README about older versions

Unfortunately it's not clear to everyone that they are looking at the
development documentation.

* Fix legacy bindings taking precedence over new ones

They were compared by len, but it's was wrong from the start, since
a user provided binding could remove more than one builtin binding,
so it was impossible for users to use their own bindings.

The most reliable way to do so is to use `Option`, given that we fill
default during deserialization.

Fixes alacritty#7050.

* Update binding sections in config manpage

* Create man5 directory along with man1

* Update to the new winit keyboard API

The main highlight of this update is that alacritty will now use new
keyboard API from the winit, which resolves a lot of issues around
key bindings, such as ability to bind dead keys. It also fixes long
standing issues with the virtual key code bindings and make bindings
in general more predictable. It also makes our default Vi key bindings
fully working.

Given that alacritty was using `VirtualKey` directly in the bindings
from the winit, and winit simply removed the enum, we've added internal
conversions to minimize the fallout, but new way to specify the bindings
should be more intuitive.

Other part of this update fixes some forward compatibility bugs with the
Wayland backend, given that wayland-rs 0.30 is fully forward compatible.
The update also fixes weird Maximized startup issues on GNOME Wayland,
however they were present on any sane compositor.

Fixes alacritty#6842.
Fixes alacritty#6455.
Fixes alacritty#6184.
Fixes alacritty#5684.
Fixes alacritty#3574.
Fixes alacritty#3460.
Fixes alacritty#1336.
Fixes alacritty#892.
Fixes alacritty#458.
Fixes alacritty#55.

* Fix configuration link typo

Co-authored-by: Christian Duerr <[email protected]>

* Fix `window.option_as_alt=Both`

Fixes alacritty#7077.

* Unset `XDG_ACTIVATION_TOKEN` in alacritty_terminal

This variable is what being used for Wayland's activation stuff.

* Raise double click threshold to 400ms

This should improve the situation with some touchpads. GTK4 is also
using the same value.

* Prefer logical key for named keys

Some keyboard layouts have named logical keys via shift combinations
of some sorts. So prefer them.

Fixes alacritty#7076.

* Mention all the actions in the man page

A lot of actions were left without a notice, so the only way to figure
out some of them was to browse source code. An example of such
actions were `Maximize` and `Minimize`, since we don't have a binding
for them, so they were left even in alacritty-bindings(5).

Explicitly list all the bindings we have. The search bindings were
also not accurately restricted, since we allow them to be executed
inside regardless of mode.

* Use lowercase latters in bindings for h/m/l

They were using uppercase latters, however our config expects everything
as lowercase, because we're using `key_without_modifiers` +
`ModifiersState`.

* Remove unnecessary mutable references

* Fix license syntax

This patch updates the license field to follow the SPDX 2.1 license
expression standard.

* Use bracketed paste only for multi-char IME input

Some IME setups do only `commit` single char input, like fcitx5 when
doing ru input.

* Fix manpage docs for shell section

Closes alacritty#7087.

Co-authored-by: Kirill Chibisov <[email protected]>

* Fix keys like `+` not working on neo layouts

The key_without_modifier removes all the modifiers including the
multiple shift levels, which is not desired. In alacritty we
just wanted to treat uppercase and lowercase latters the same,
which we can with the help of builtin functions.

* Mention `Forward`/`Back` mouse buttons in man page

They were mentioned only in the changelog, but forgotten in the man
page.

* Add `terminal` config section to control OSCs 

Some environments demand certain OSC sequences to be disabled or
some escape sequence could require handling which is out of scope
of alacritty, but could be done by external script (OSC 777).

Added section for now just handles the `OSC 52` sequence and changes
its default to be `OnlyCopy`, which is handy for remote copy, but
`Paste` is redundant because normal `Paste` hotkey could be used as
well.

Fixes alacritty#3386.

Co-authored-by: Christian Duerr <[email protected]>

* Skip whitespaces for wide chars in preedit

While we skip the spacers for the wide characters in the grid due to
them having a proper flags, the draw_string method was generating the
cells with incorrect flags leading to wide chars being cut off.

* Make URL_REGEX more strict

* Use ahash instead of fnv and regular hash function

After evaluation of the ahash with the data alacritty uses it was
discovered that it's 1.5-2x times faster when getting the already
hashed values, which is the primary cases for alacritty's renderer.

Given that ahash is generally faster, all the HashSet and HashMap's
inside the alacritty were changed to use it as a hasher function.

* Ignore scrolling multiplier on touchscreens

* Apply transparent background colors to "UI" cells

* Copy global IPC options for new windows

This patch stores all options set for the Window ID `-1` and
automatically applies them to new windows after their creation.

This in theory makes it possible to have a fully dynamic "default
config" without having to reapply it for every new window.

Closes alacritty#7128.

* Fix decorations_theme_variant spelling in manpage

* Remove winit dependency from alacritty_config

* Update regex-automata to v0.3.6

This seems like a sensible first step before looking into alacritty#7097.

* Fix crash with anchored searches

While this does **not** enable the use of anchors (`^`) in user regexes,
it does prevent Alacritty from crashing when attempting to do so.

* Change `window.padding` from u8 to u16

Fixes alacritty#6900.

* Quote `None` consistently inside the man page

`None` must be inside the `"`, since it's a string value.

* Add examples to more sections

Some sections were provided without a default, so provide an example for
them.

* Update winit to 0.29.1-beta

Make use of new winit frame throttling mechanism used in RedrawRequested,
which removes the need for having Wayland queue to ask for the frame
callbacks.

Fixes alacritty#7011.

* Add bindings for macOS tabs

This doesn't represnet the movement to add tabs on any other platform,
unless winit could add a similar API for them.

* Support startup notify on Wayland/X11

Activate a window to indicate that we want initial focus when the
system uses startup notifications.

Fixes alacritty#6931.

* Add `prefer_egl` debug option

Some systems have rendering issues when using GLX rather than EGL. While this is
usually due to a driver bug, it is helpful to provide a workaround for this by
allowing people to prefer EGL over GLX.

This patch adds the new `debug.prefer_egl` option to provide this workaround.

Closes alacritty#7056.

* Remove obsolete ansicode.txt file

The wiki contains a list of links to ANSI references:
https://github.com/alacritty/alacritty/wiki/ANSI-References

* Test man-pages compilation on the CI

* Add missing position config docs

* Fix regex memory usage

This fixes an issue where regexes with a large number of possible states
would consume excessive memory, since the entire DFA was compiled ahead
of time.

To solve this, the DFA is now built at runtime using `regex-automata`'s
hybrid DFA.

There are however still some checks performed ahead of time, causing
errors with obscenely large regexes (`[0-9A-Za-z]{999999999}`), which
shouldn't cause any issues.

A regex which is large, but not large enough to fail the NFA
construction (like `[0-9A-Za-z]{999999}`) will cause a long search of
the entire grid, but will complete and show the match.

Closes alacritty#7097.

* Underline hint matches during selection

This patch underlines the full regex hint match while the keyboard hint
selection is in process.

While it would be possible to color the entire match, this would only
introduce unnecessary configuration options and be too noisy. The
underline matches the mouse highlighting and has a less drastic visual
impact.

Closes alacritty#6178.

* Bump VTE to 0.12.0

Fixes alacritty#6845.

* Update the escape_support.md for sync updates

Remove the DCS sync updates escape sequence since it's no longer
supported.

Fixes: 47d5007 (Bump VTE to 0.12.0)

* Port from mio to polling

This patch replaces the mio crate with the polling. Now that
smol-rs/polling#96 has been merged, we should be at full feature parity
with mio v0.6 now.

Fixes alacritty#7104.
Fixes alacritty#6486.

* Update dependencies

This patch applies all breaking and non-breaking dependency updates
and bumps MSRV to 1.70.0.

* Fix PTY being closed on creation

The PTY got closed because `OwnedFd` automatically closed it.

Fixes: 59c63d3 (Update dependencies)

* Fix regex matches ending on multiline

This fixes an issue where the reverse search for the regex start would
truncate a character when ending on a newline, since it was omitting the
EOI check in that case.

This also fixes a separate issue which caused regexes which capture
empty strings (e.g.: `.*`) to always report a match.

This is a regression introduced in 73276b6.

* Fix regex patterns allowing for empty strings

This patch changes the mode we search for patterns which allow an empty
string, by anchoring all searches. As a result we will match the longest
possible match when multiple patterns are present (like `;*|rust`),
instead of using the leftmost pattern only.

This is only possible with empty matches since our parser is reset on
every byte anyway, so anchoring the search makes no difference.

Fixes alacritty#7276.

* Use openpty-rustix instead of nix

Follow upstream libraries and use rustix to reduce the amount of
dependencies in the future.

Co-authored-by: Christian Duerr <[email protected]>

* Fix `window.decorations_theme_variant` reload

The live reload handling wasn't introduced when the option got added.

Fixes alacritty#7295.

* Add inline vi mode search

This patch adds inline search to vi mode using `f`/`F` and `t`/`T` as
default bindings. The behavior matches that of vim.

Fixes alacritty#7203.

* Bump rustix to 0.38.20

* Update winit to 0.29.2 and copypasta to 0.10.0

Fixes alacritty#7236.
Fixes alacritty#7201.
Fixes alacritty#7146.
Fixes alacritty#6848.
Fixes alacritty#3601.
Fixes alacritty#3108.
Fixes alacritty#2453.

* Fix crash due to wrong drop order of clipboard

Fixes alacritty#7309.

* Prefer exact matches for bindings in mouse mode

Only consider bindings without Shift if there are no actions defined for the
actual mouse event.

Closes alacritty#7292.

* Fix typos

* Add version 0.12.3 to CHANGELOG

This is only an update to the development version and does not represent
a stable release.

* Avoid maximizing window when creating new tab

This patch ignores the startup mode when creating a new tab on macOS to
avoid maximizing an existing window.

Co-authored-by: Christian Duerr <[email protected]>

* Fix clippy warnings

* Add `window.blur` config option

Fixes alacritty#972.

* Add man 5 pages to upload_asset.sh

They are compiled, but not being uploaded.

* Bump glutin to 0.31.1

This fixes a crash on startup with macOS Sonoma.

* Fix crash when leaving search after resize

This fixes a crash which could occur when leaving search with a visible
match after shrinking the terminal height to be lower than the original
line the focused match was in.

Closes alacritty#7054.

* Bump ahash to 0.8.6

* Remove `alacritty_config` from alacritty_terminal

There's no need to force alacritty's user configuration on
other users of the crate, thus provide the options actually used
by alacritty_terminal itself.

* Fix cursor being hidden after reaching timeout

The timeout and blink events could be delivered at the same time,
so canceling blinking won't work and we'll still have an event.

* Use builtin font to draw powerline symbols

In addition to box drawing it was decided to also draw powerline
symbols, since those are quite common and rather simple to draw with
present box drawing infra.

* Unify CLI config override mechanisms

This patch changes the way the `-o` config option works when specified
at startup to function the same way as the IPC mechanism.

While this should technically perform the exact same way, it should
hopefully make it a little easier to understand how CLI config
replacement works.

* Add `--option` argument to `create-window`

This patch adds a new CLI parameter to the `create-window` subcommand,
matching the existing `--option` parameter when creating a new Alacritty
instance.

This parameter allows setting up the initial window configuration from
the CLI without having to call `alacritty msg config`, making sure that
all options are set appropriately right from the start.

Closes alacritty#6238.

* Change default `bell.animation` to `Linear`

The default animation feels really choppy, but it's just how its
function looks.

* Fix visual bell getting stuck on macOS

Fixes alacritty#7325.

* Fix message bar damage

Fixes alacritty#7224.

* Fix Sync capability in terminfo

Alacritty has supported mode 2026 for synchornized updates for a few
months, but the terminfo entry still used the old DCS sequence
originally supported by iTerm2. Since many other terminal emulators and
applications seem to be standardizing around 2026, change the terminfo
entry to use SM instead of DCS.

* Fix Vi cursor not being dirty when scrolling

* Simplify powerline drawing algorithm

Iterate over points in line instead of drawing it right away
and then finding it in the buffer.

Fixes: 4a26667 (Use builtin font to draw powerline symbols)

* Add error handling for OpenGL connection details

* Update VTE to 0.13.0

* Add support for DECRPM/DECRQM

* Damage only terminal inside `alacritty_terminal`

The damage tracking was including selection and vi_cursor which were
rendering viewport related, however all the damage tracking inside
the `alacritty_terminal` was _terminal viewport_ related, meaning that
it should be affected by `display_offset`.

Refactor the damage tracking so `alacritty_terminal` is only tracking
actual terminal updates and properly applying display offset to them,
while `alacritty` pulls this damage into its own UI damage state.

Fixes alacritty#7111.

* Create only one branch per major release

Having a separate branch for each release makes it harder to maintain
without an actual benefit, since every release from the major version
is linear, so creating branches doesn't make any sense.

They also collapse with the tag names leading to ambiguous refs.

* Make sections the same case in man pages

* Fix SelectLastTab in alacritty-bindings(5)

* Make man pages look consistent

Part of the man pages were using _value_, other part were using just
value, thus make everything as _value_.

Also properly dot terminate and add spacing through out the man pages.

* Explicitly use `=` in alacritty(5)

This should help with understanding how to write TOML
without reading too much into specification.

* Improve section to TOML section refs

This should give more hints where to put things.

* Add example for [window] section in alacritty(5)

This should give a hint on how to generally tweak things.

* Drop repo link in *SEE ALSO* man sections

The alacritty documentation is fully present inside the man pages, the
repo provides nothing extra other than a way to report issues, which
lives in its own section anyway.

* Fix default for [[hints.enabled]] in man pages

The default was incomplete, since `command` was missing.

* Add migrate to alacritty(1)

* Damage entire window on font size change

Font size could change without changing the cell dimensions, like
becoming slightly higher/wider.

Fixes: 40160c5 (Damage only terminal inside `alacritty_terminal`)

* Fix IME popup positioning

When setting cursor area, the popup will be placed either above or
below not obscuring the supplied region, however we were still
offsetting line with `+1` putting the cursor at the bottom of the line,
and given that area is from the top-left corner, the wrong area
was marked for not being obscured.

It was also discovered that some compositors, like GNOME, position
IME in the bottom right corner of the supplied region, which is wrong,
but it renders IME popup not very useful, since it's far away from
the place it should be, thus try to not obscure just a few characters
near the cursor.

Given that X11 doesn't support area setting, it uses the old logic
with offsetting.

Co-developed-by: lilydjwg <[email protected]>
Signed-off-by: lilydjwg <[email protected]>

* Bump dependencies

Update dependencies with `cargo update` as well as do explicit update
of winit, crossfont, and regex-automata.

* Make AA stronger for undercurl

This improves undercurl rendering preserving its original thickness.
This also makes it look not out-of place when places next to other
lines.

* Document macOS shortcuts for search

* Adjust default Vi's SearchBackwards binding

We have the same policy with Shift for numbers.

* Fix DECRPM reporting

The DECRQM uses `p` to query, but the reply uses `y`.

Fixes alacritty#7397.

* Optimize undercurl shader

This removes the if and lowers amount of operations.

* Fallback to underline shader when dotted fails

Some hardware is just bad.

Fixes alacritty#7404.

* Don't use `::*` for enum variants in bindings

* Fix chars usage inside the mouse bindings

Fixes alacritty#7413.

* Implement kitty's keyboard protocol

The protocol enables robust key reporting for the applications, so
they could bind more keys and the user won't have collisions with
the normal control keys.

Links: https://sw.kovidgoyal.net/kitty/keyboard-protocol
Fixes alacritty#6378.

* Update to crossfont 0.6.0

* Fix trigger of normal bindings in mouse mode

We should ensure that the `Shift` is actually pressed when trying to
prefer regular bindings instead of the ones if we had Shift applied.

Fixes: 500b696 (Prefer exact matches for bindings in mouse mode)
Fixes alacritty#7415.

* Don't emit text for NamedKey without text repr

When the key doesn't have textual representation we shouldn't emit
the text for them, since they are processed via bindings.

Also, fix the logic to handle named keys with disambiguate without
special modes/modifiers.

Fixes alacritty#7423.

* Fix message bar not damaged when the same size

The regression was added due to `y` coordinate in OpenGL differs to
`y` inside the damage rectangles.

Fixes: 40160c5 (Damage only terminal inside `alacritty_terminal`)

* Bump crossfont to 0.7.0

* Update alacritty versions

This is only an update to the development versions and does not
represent a stable release.

* Add link to rendered config docs

This adds a link to alacritty.org's rendered configuration file
documentation.

* Fix the order of `ClearSelection` in Vi mode

Fixes alacritty#7438.

* Account for option_as_alt when doing kitty protocol

By default `Alt` is not a real `Alt` on macOS, so we shouldn't treat
it as a modifier.

Fixes alacritty#7443.

* Bump winit to 0.29.5

Fixes alacritty#7449.

* Keep IME always enabled on X11

Fixes alacritty#7195.

* Apply modifiers before presses in kitty protocol

While this doesn't handle releases with multiple identical modifiers
pressed, the release can't work reliable anyway, since one modifier
could be pressed before focusing the window, thus tracking modifiers
based on the keysym values won't work as it was suggested by kitty
author.

Links: kovidgoyal/kitty#6913

* Bump winit to 0.29.7

This also bumps other dependencies along the way.

Fixes alacritty#2886.

* Mark SimpleFullscreen as macOS only startup mode

* Derive `Clone` for `EventLoopSender`

* Fix `alacritty migrate` with nonexistent imports

Fixes alacritty#7473.

* Remove direct dependency on once_cell

With MSRV 1.70, std now contains the necessary parts.

* Use pre-composed key for `Alt` bindings on macOS

Fixes alacritty#7475.

* Fix inability to bind `Alt+Control` on Windows

Fixes alacritty#7506.

* Passthrough potential errors for `EventLoopSender`

* Don't substitute `\n` in char bindings

This broke unintentionally due to routing paste-like input
via paste function.

Fixes alacritty#7476.

* Send associated text for shifted numbers with kitty

Also fix the wrong ordering of base and shifted keys.

Fixes alacritty#7492.

* Powerline glyphs being cut for narrow fonts

Fixes alacritty#7470.

* Remove note about versions pre 0.13.0

* Bump winit to 0.29.8

Fixes alacritty#7514.
Fixes alacritty#7502.
Fixes alacritty#7494.
Fixes alacritty#7474.
Fixes alacritty#7472.

* Fix number-based mouse bindings

The toml migration introduced a regression which stopped numbered key
binding's from working. This patch implements the required number type
to make things work again.

Fixes alacritty#7527.

* Fix replacing optional fields

This fixes an issue with the default `SerdeReplace` implementation where
it would never recurse through options but always replace the entire
option with the new value.

Closes alacritty#7518.

* Add vi search paste bindings

Closes alacritty#7511.

* Ignore null values in `alacritty migrate`

This should help with broken YAML configurations by throwing nulls
away, which are not representable in toml.

* Bump winit to 0.29.9

Fixes alacritty#7559.
Fixes alacritty#7533.

* Fix serde tests without default features

Authored-by: James McCoy <[email protected]>

* Fix manpage string escapes

Co-authored-by: Christian Duerr <[email protected]>

* Add version 0.13.1 to CHANGELOG

This is only an update to the development version and does not represent
a stable release.

* Reduce allocations during keyboard input

* Fixup alacritty_config version and deps

* Fix `debug.renderer="gles2pure"` documentation

Patch 5685ce8 changed the allowed values of the `debug.renderer` enum,
prohibiting the usage of `_` in the `Gles2Pure` variant. This patch
updates the documentation to correct for that.

Co-authored-by: Kirill Chibisov <[email protected]>

* Fix inline search expanding across newlines

Closes alacritty#7587.

* Fix env variable overrides through CLI

This fixes an issue where all CLI environment variables would replace
existing configuration file variables instead of merging the two maps
together.

Fixes alacritty#7618.

* Fix typo in config docs

Closes alacritty#7647.

* Allow specifying all config keys on all platforms

Closes alacritty#7592.

* Use builtin font to draw sextants

Sextants are similar to quadrants and should align with them and
other box drawing, thus use builtin font to align them properly.

Part-of: alacritty#7422.

* Fix invalid bounds in selection range conversion

* Don't report associated text only for C0/C1

This has a side effect that we'll have text reported for Alt+Shift+T
and similar, but only C0/C1 should be excluded and Alt+Shift+T is
emitting neither, thus regular `T` will be reported.

Fixes alacritty#7657.

* Move CHANGELOG entry for sextants to proper section

* Don't use kitty sequences outside protocol

Originally kitty defined that functional keys, which are not encoded
by default, like `Pause` should be encoded with `CSI u`. However
the specification was clarified and now it says that terminal
may ignore that part. Given that Alacritty tries to follow xterm/urxvt
when it comes to bindings, CSI u bindings are not send for consistency
reasons.

This also brings back F13-F20 bindings used by Alacritty in 0.12.3, as
well as explicitly defines `NumpadEnter` like it was before.

Closes alacritty#7623.

* Document `command` field in bindings

Closes alacritty#7594.

* Fix unnecessary explicit panic in PTY 

Closes alacritty#7680.

* Fix hang on startup with some Wayland compositors

Fixes alacritty#7665.

* Fix hang on startup with some Wayland compositors

Fixes alacritty#7665.

* Bump alacritty_terminal to 0.22.1

This is only an update to the development version and does not represent
a stable release.

* Add default `Home`/`End` bindings for Vi mode

* Remove extra TIOCSWINSZ ioctl on startup

The openpty call already performs it, thus no need to call it one more
with the exact same size since it confuses some applications.

* Fix row indexing with inclusive ranges

* Use dynamic MSRV for oldstable CI

Instead of manually specifying the oldstable version in all our CI
scripts, it is now pulled from the `Cargo.toml` which simplifies the
update process.

The contributing guide has also been updated to not include the explicit
version and its wording has been loosened a bit to correctly represent
current maintenance practices.

* Bump MSRV to 1.72.0

* Fix clippy warnings

* Fix regional scrolling leaking into history

This fixes an issue where a scrolling region that does not start at the
top of the screen would still rotate lines into history when scrolling
the content "upwards".

* Fix typo in config docs

* Bump winit to 0.29.11

Fixes alacritty#7633.
Fixes alacritty#7613.
Fixes alacritty#7607.
Fixes alacritty#7571.
Fixes alacritty#7549.

* Fix feature = "cargo-clippy" deprecation

* Check alternative cursor icon names on Wayland

* Add alias support to `SerdeReplace`

* Bump winit to 0.29.12

The 0.29.11 was yanked.

* Fix build failure on NetBSD

x11-clipboard was unconditionally using eventfd which is not present
on NetBSD.

Links: quininer/x11-clipboard#48

* Fix log typos

* Bump winit to 0.29.14

Fixes alacritty#7806.

* Expose more process info on Windows

* Send exit code events on child process exit

Fixes alacritty#7753.

* Set PTY's pixel size on startup

117719b removed the extra call for TIOCSWINSZ, however the initial
`openpty` call itself did not set the pixel size, which caused issues
with some clients.

* Fix hint `Select` action for hyperlink escape

This fixes an issue where the `Select` action for hyperlink escape text
would select the entire line, instead of selecting only the hyperlink
itself.

It also changes the way hyperlinks with the same ID are highlighted,
removing the restriction of being on consecutive lines and instead
highlighting all visible cells that correspond to the matching
hyperlink.

Closes alacritty#7766.

* Bump winit to 0.29.15

* Bump dependencies

This bumps all dependencies that can be updated without introducing a
build failure.

* Drop MSRV to 1.70.0

* Allow setting terminal env vars via PTY options

Closes alacritty#7778.

* Fix kitty encoding used for char input without text

On Windows some key combinations for regular text input, like Ctrl+1
don't have any text attached, so they were generating the kitty escape
sequence even when they shouldn't.

* Fix msi installer build

This works around an issue where wix was pulling pre-release extensions
and thus breaking compatibility with our used wix version.

* Send ESC with Alt for unicode input

Make `Alt` send `ESC` for unicode input the way it's done for ASCII.
Previously it was disabled because of macOS, however on macOS we're
using the `option_as_alt` setting, which solves the original issue.

The `Alt` prefixing is still disabled for the unicode strings, like
when they come from the compose input.

Fixes alacritty#7852.

* Add version 0.13.2 to CHANGELOG

This is only an update to the development version and does not represent
a stable release.

* Fix "Open Alacritty Here" on Windows

* Update homepage and repository in Cargo manifests

* Fix window being focused by default

Winit explicitly states that the window is not focused by default and
the `Focused` event will deliver the state later on.

Also start adding notable changes to alacritty_terminal in its own
CHANGELOG.

Closes alacritty#7866.

* Fix crash when trying to open a new tab on macOS

This fixes an issue where Alacritty would crash when trying to open a
new tab on macOS while having decorations disabled.

Co-authored-by: Christian Duerr <[email protected]>

* Fix missing config import warning

* Fix IME preview overlapping text

Fix incorrect usage of the `flags` when drawing the preedit resulting
in setting the `flags`, but not actually reading the value back.

The logic to skip things was also used incorrectly, because the renderer
does that already based on the `WIDE_CHAR` flag on the cell.

Fixes: 67a433c (Skip whitespaces for wide chars in preedit)

* Fix dynamic title override for multiple windows

This fixes an issue where Windows spawned after the initial one through
IPC or bindings would not update their title due to the initial window
having its title set through the CLI.

Title changes are still inhibited for additional windows when they are
spawned through `alacritty msg create-window` with the `--title` CLI
option added.

Closes alacritty#6836.

* Add `from_file_descriptors()` to `tty::unix`

* Add config file locations into alacritty(5)

* Bump alacritty_terminal to 0.24.1-dev

This is only an update to the development version and does not represent
a stable release.

* Fix shutdown of config monitor

This implements a coordinated shutdown of the config monitor by sending
an event to its thread and waiting for the thread to terminate.

* Bump winit to 0.30.0

* Fix user events for all windows not handled

The user events for all cases were not handled.

Fixes: 48c088a (Bump winit to 0.30.0)
Fixes: alacritty#7957.

* Allow requesting Bluetooth permission on macOS

* Add missing comma to alacritty(5) manpage

* Ignore shell RCs for macOS zsh wrapper

Closes alacritty#7886.

* Fix mouse mode bindings with multiple actions

The following config was broken:
```
[mouse]
bindings = [
    { mouse = "Right", mods = "Shift", action = "Copy"            },
    { mouse = "Right", mods = "Shift", action = "ClearSelection"  },
]
```

Only the first action was applied. Change to allow more than one exact
match in mouse mode with shift held, but keep the logic to not allow
fallback search if any exact match was found.

Regression was introduced in 1a143d1.

* Fix FD leak after closing child windows

This patch fixes an issue with signal handling where Alacritty would
permanently create one signal handling FD for each alacritty window
created by an instance. This FD was never released, causing a leak of
the FD.

Closes alacritty#7983.

* Fix IO safety violation from consequent dropping `OwnedFd`

This was not a _real_ violation and was _expected_, though for rust
to not complain clone FD properly...

* Fix error with missing imports

This fixes a regression, likely introduced in 5d173f6, which changed
the severity of missing imports from `info` back to `error`.

The cause of this issue was a more complicated error handling mechanism,
which explicitly translated IO errors to a separate enum variant without
accounting for it in all scenarios.

While retrospectively this seems completely unnecessary to me, it did
mean shorter error messages in case the main config file was not found.
To preserve the benefits of both approaches, explicit handling for the
`NotFound` IO error has been added when loading the main configuration
file.

* Fix Kitty protocol reporting shifted keycodes

The [kitty keyboard protocol][1] explicitly requires that the
*un-shifted* version of the pressed key is used to report the primary
code point in `CSI code-point;modifiers u` sequences.

> Note that the codepoint used is always the lower-case (or more
> technically, un-shifted) version of the key. If the user presses, for
> example, ctrl+shift+a the escape code would be CSI 97;modifiers u. It
> must not be CSI 65; modifiers u.

Alacritty's current behavior is to report the shifted version when shift
is pressed, and the un-shifted version otherwise:

```console
 # Note that you'll have to kill Alacritty after running this to get
 # control back!
$ echo -ne '\x1b[>1u'; cat
^[[97;5u^[[65;6u
```

The above was generated by pressing `CTRL`+`a` followed by
`CTRL`+`SHIFT`+`a` after running the command. Here `97` and `65` are the
codepoints for `a` and `A` respectively.

This change makes Alacritty match the protocol (and Kitty's) behavior.
With this change applied, `97` is reported for both `CTRL`+`a` and
`CTRL`+`SHIFT`+`a`.

[1]: https://sw.kovidgoyal.net/kitty/keyboard-protocol/#key-codes

* Fix spelling errors

* Bump glutin to 0.32.0

* Bump winit to 0.30.2

Fixes alacritty#7969.

* Bump winit to 0.30.3

Fixes alacritty#8046.

* Use latest macOS image on CI (alacritty#8072)

Old macOS images are deprecated resulting in often failures, thus use 
latest macOS images available.

Also given that macOS is arm64 by default check x86_64 as extra job
and not arm64.

* Support relative imports in config file

Co-authored-by: Christian Duerr <[email protected]>

* Fix search bug with wrapline on first character

This fixes an issue where an inline search in the left direction would
incorrectly assume that the first cell searched would not contain the
`WRAPLINE` flag, causing the second search for the match end to
terminate prematurely.

Fixes alacritty#8060.

* Bump MSRV to 1.74.0

* Bump dependencies

Update winit and clap to latest versions.

* Document options which are not working everywhere yet

This includes `window.position` and `window.resize_increments`.

* Restart config monitor on import change

This patch checks the hash of the import paths on every config change
and restarts the config monitor whenever the current monitor's hash
diverges from the updated config's list of imports.

Closes alacritty#7981.

* Unify string formatting

* Fix description in alacritty-bindings(5)

Man pages use the man page name as the first word in description. This
also aligns with other man pages we have.

* Make `ConPty` creation fallible

* Remove duplicate clip-path from logo

* Update checkout CI action

* Improve TermMode bitflags initialization

* Make alacritty(1) config paths resemble alacritty(5)

This also fixes the escaping in alacritty(5) page.

* Ignore cursor color request with default colors

Currently when the cursor colors are requested for the default cursor
color, Alacritty always responds with #000000. Since this is most likely
incorrect, this response is misleading.

Realistically there's very little reason why any application would need
to know the color of the (often dynamically changing) default cursor. So
instead of always reporting an incorrect black value, this patch just
stops reporting values unless the cursor color was explicitly changed.

Closes alacritty#8169.

* Fix fullwidth semantic escape characters

Semantic escape characters occupying two two grid cells were always
skipped over, making it impossible to have functional fullwidth
characters as part of semantic escape characters.

This patch fixes this by only skipping over fullwidth spacer cells,
rather than skipping those cells entirely.

Closes alacritty#8188.

* Fix app icon in alt+tab view on Windows

* Move root config fields to `[general]` section

Some users struggle with TOML, since root options must always be at the
top of the file, since they're otherwise associated with the last table.

To avoid misunderstandings, all root-level fields have been removed. A
new `general` section was added to allow housing configuration options
that do not fit into any more specific groups.

Closes alacritty#7906.

* Add migration support for TOML config changes

This patch allows running `alacritty migrate` to automatically apply
configuration changes made to the TOML format, like moving `ipc_socket`
to `general.ipc_socket`.

This should reduce the friction of moving around individual options
significantly, while also persisting the format of the existing TOML
file thanks to `toml_edit`.

The YAML migration has been simplified significantly to only switch the
format of the file from YAML to TOML. The new TOML features are used for
everything else.

* Restructure message bar log message

The first line is not really useful for the user, so move it to the
bottom.

* Remove startup notify variables only for shell

This will prevent issues when `setup_env` from `alacritty_terminal` will
remove potentially useful variables for users of the library.

Fixes alacritty#8202.

* Remove unused `Clone` requirements

* Fix highlight invalidation on grid scroll

This fixes an issue where hints highlighted by vi or mouse cursor would
produce an underline on the incorrect line since the highlights only
store the initial match boundaries without accounting for new content
scrolling the terminal.

To accurately invalidate the hint highlights, we use existing damage
information of the current frame. The existing logic to damage hints for
the next frame to account for removal has been changed, since the hints
would otherwise be cleared immediately. Instead we now mark the terminal
as fully damaged for the upcoming frame whenever the hints are cleared.

Closes alacritty#7737.

* Change ctrl+shift+u to ctrl+shift+o

Avoid collisions with IMEs by using ctrl+shift+o. ctrl+shift+u is bound
to open unicode input in a lot of IMEs by default meaning that users
won't ever see the url hints UI.

* Add unicode 16 support

This fixes issues in width calculation for symbols added in Unicode
version 16.

Since the upstream unicode-width crate has not been updated yet, this
makes use of the temporary unicode-width-16 version to support Unicode
16 with Alacritty 0.14.0.

* Fix panic on missing general config section

Fixes alacritty#8230.

* Alacritty version 0.14.0-rc1

* Implement multi-char cursor highlight

Use `end` of the cursor to draw a `HollowBlock` from `start` to `end`.
When cursor covers only a single character, use `Beam` cursor instead
of `HollowBlock`.

Fixes alacritty#8238.
Fixes alacritty#7849.

* Add IME support to inline search

This changes the behavior of inline search from only accepting direct
key inputs, to also accepting IME and paste. The additional characters
are still being discarded, matching the existing behavior.

This also fixes an issue where inline search wouldn't work for
characters requiring modifiers, since the modifier press was interpreted
as the search target instead.

Closes alacritty#8208.

* Add headless mode

This patch adds a daemon mode to Alacritty which allows starting the
Alacritty process without spawning an initial window.

While this does not provide any significant advantage over the existing
behavior of always spawning a window, it does integrate nicer with some
setups and is a pretty trivial addition.

* Remove dbg! in migration command

* Alacritty version 0.14.0-rc2

* Fix pipe FD leak on X11

The pipe was not using O_CLOEXEC, so it was leaked into the child.

Fixes alacritty#8249.

* Revert "Add unicode 16 support"

This reverts commit 5dca7a8.

* Do not pull serde without serde feature

alacritty_terminal was pulling `serde` via vte even though
serde feature was disabled.

* Alacritty version 0.14.0

* Apply patch

* Patch

---------

Signed-off-by: lilydjwg <[email protected]>
Co-authored-by: Pavel Roskin <[email protected]>
Co-authored-by: Kirill Chibisov <[email protected]>
Co-authored-by: Christian Duerr <[email protected]>
Co-authored-by: Sonu Bardai <[email protected]>
Co-authored-by: Yug Shende <[email protected]>
Co-authored-by: Nick Reilingh <[email protected]>
Co-authored-by: Andrea Frigido <[email protected]>
Co-authored-by: Kirill Bulatov <[email protected]>
Co-authored-by: tv <[email protected]>
Co-authored-by: Max Brunsfeld <[email protected]>
Co-authored-by: Arhum Jain <[email protected]>
Co-authored-by: Rolf Sievert <[email protected]>
Co-authored-by: Simone Ragusa <[email protected]>
Co-authored-by: John Nunley <[email protected]>
Co-authored-by: Kyle Willmon <[email protected]>
Co-authored-by: Julian Braha <[email protected]>
Co-authored-by: Gregory Anders <[email protected]>
Co-authored-by: Cédric Van Rompay <[email protected]>
Co-authored-by: Hyper <[email protected]>
Co-authored-by: Philip Dubé <[email protected]>
Co-authored-by: Lars Francke <[email protected]>
Co-authored-by: Omar Magdy <[email protected]>
Co-authored-by: WuerfelDev <[email protected]>
Co-authored-by: Popa Ioan Alexandru <[email protected]>
Co-authored-by: Mohammad AlSaleh <[email protected]>
Co-authored-by: Conrad Irwin <[email protected]>
Co-authored-by: Alexandru Placinta <[email protected]>
Co-authored-by: Yadi Abdalhalim <[email protected]>
Co-authored-by: Dimitris Apostolou <[email protected]>
Co-authored-by: Friz64 <[email protected]>
Co-authored-by: huajin tong <[email protected]>
Co-authored-by: Small White <[email protected]>
Co-authored-by: ZhiZe-ZG <[email protected]>
Co-authored-by: Foorack / Max Faxälv <[email protected]>
Co-authored-by: William Viktorsson <[email protected]>
Co-authored-by: Matt Fellenz <[email protected]>
Co-authored-by: Owen Law <[email protected]>
Co-authored-by: Aarni Koskela <[email protected]>
Co-authored-by: Giacomo Battaglia <[email protected]>
Co-authored-by: Travis Finkenauer <[email protected]>
Co-authored-by: Nathan Lilienthal <[email protected]>
Co-authored-by: EBADBEEF <[email protected]>
Co-authored-by: Jakob Hellermann <[email protected]>
Co-authored-by: jadedpasta <[email protected]>
Co-authored-by: Josh Soref <[email protected]>
Co-authored-by: Joshua Cao <[email protected]>
Co-authored-by: Hamir Mahal <[email protected]>
Co-authored-by: philomathic_life <[email protected]>
Co-authored-by: Dimitri Sabadie <[email protected]>
Co-authored-by: Neil Stewart <[email protected]>
Co-authored-by: YizhePKU <[email protected]>
  • Loading branch information
Show file tree
Hide file tree
Showing 66 changed files with 2,725 additions and 1,849 deletions.
12 changes: 6 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Stable
run: cargo test
- name: Stable (no default features)
Expand All @@ -27,11 +27,11 @@ jobs:
run: |
rustup component add clippy
cargo clippy --all-targets
check-macos-arm:
runs-on: macos-11
check-macos-x86_64:
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install target
run: rustup update && rustup target add aarch64-apple-darwin
run: rustup update && rustup target add x86_64-apple-darwin
- name: Build
run: cargo build --target=aarch64-apple-darwin
run: cargo build --target=x86_64-apple-darwin
12 changes: 6 additions & 6 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ env:

jobs:
macos:
runs-on: macos-11
runs-on: macos-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install dependencies
run: brew install scdoc
- name: Install ARM target
run: rustup update && rustup target add aarch64-apple-darwin
run: rustup update && rustup target add aarch64-apple-darwin && rustup target add x86_64-apple-darwin
- name: Test
run: cargo test --release
run: cargo test --release --target=x86_64-apple-darwin
- name: Build ARM
run: cargo build --release --target=aarch64-apple-darwin
- name: Make DMG
Expand All @@ -37,7 +37,7 @@ jobs:
shell: bash

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Test
run: cargo test --release
- name: Build
Expand All @@ -63,7 +63,7 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install dependencies
run: |
sudo apt-get install cmake pkg-config libfreetype6-dev libfontconfig1-dev \
Expand Down
57 changes: 52 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,53 @@ The sections should follow the order `Packaging`, `Added`, `Changed`, `Fixed` an

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

Notable changes to the `alacritty_terminal` crate are documented in its
[CHANGELOG](./alacritty_terminal/CHANGELOG.md).

## 0.14.0

### Packaging

- Minimum Rust version has been bumped to 1.74.0

### Added

- Support relative path imports from config files
- `alacritty migrate` support for TOML configuration changes
- Headless mode using `alacritty --daemon`

### Changed

- Pressing `Alt` with unicode input will now add `ESC` like for ASCII input
- Decorations use opaque style and system window background on macOS
- No longer source `~/.zshenv` on macOS
- Moved config options `import`, `working_directory`, `live_config_reload`, and `ipc_socket`
to the new `general` section
- Moved config option `shell` to `terminal.shell`
- `ctrl+shift+u` binding to open links to `ctrl+shift+o` to avoid collisions with IMEs
- Use `Beam` cursor for single char cursor inside the IME preview

### Fixed

- Crash when trying to create a new tab without decorations enabled
- New window being treated as focused when it's not on Wayland
- IME preview blending into text below it
- Dynamic title disabled for new windows when initial one has title as CLI option
- While terminal in mouse mode, mouse bindings that used the shift modifier and
had multiple actions only performed the first action
- Leaking FDs when closing windows on Unix systems
- Config emitting errors for nonexistent import paths
- Kitty keyboard protocol reporting shifted key codes
- Broken search with words broken across line boundary on the first character
- Config import changes not being live reloaded
- Cursor color requests with default cursor colors
- Fullwidth semantic escape characters
- Windows app icon now displays properly in old alt+tab on Windows
- Alacritty not being properly activated with startup notify
- Invalid URL highlights after terminal scrolling
- Hollow block cursor not spanning multiple chars being edited inside the IME preview
- Vi inline search only working for direct key input without modifiers

## 0.13.2

### Added
Expand Down Expand Up @@ -295,7 +342,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Terminal not exiting sometimes after closing all windows on macOS
- CPU usage spikes due to mouse movements for unfocused windows on X11/Windows
- First window on macOS not tabbed with system prefer tabs setting
- Window being treaten as focused by default on Wayland
- Window being treated as focused by default on Wayland

### Removed

Expand All @@ -319,7 +366,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- OSC 104 not clearing colors when second parameter is empty
- Builtin font lines not contiguous when `font.offset` is used
- `font.glyph_offset` is no longer applied on builtin font
- Buili-in font arcs alignment
- Built-in font arcs alignment
- Repeated permission prompts on M1 macs
- Colors being slightly off when using `colors.transparent_background_colors`

Expand Down Expand Up @@ -651,7 +698,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Reflow of cursor during resize
- Cursor color escape ignored when its color is set to inverted in the config
- Fontconfig's `autohint` and `hinting` options being ignored
- Ingoring of default FreeType properties
- Ignoring of default FreeType properties
- Alacritty crashing at startup when the configured font does not exist
- Font size rounding error
- Opening URLs while search is active
Expand Down Expand Up @@ -859,7 +906,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- Block URL highlight while a selection is active
- Bindings for Alt + F1-F12
- Discard scrolling region escape with bottom above top
- Opacity always applying to cells with their background color matching the teriminal background
- Opacity always applying to cells with their background color matching the terminal background
- Allow semicolons when setting titles using an OSC
- Background always opaque on X11
- Skipping redraws on PTY update
Expand Down Expand Up @@ -929,7 +976,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).

### Fixed

- Double-width characters in URLs only being highlit on the left half
- Double-width characters in URLs only being highlighted on the left half
- PTY size not getting updated when message bar is shown
- Text Cursor disappearing
- Incorrect positioning of zero-width characters over double-width characters
Expand Down
11 changes: 6 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ introduced the regression helps out a lot.

## Patches / Pull Requests

All patches have to be sent on Github as [pull requests](https://github.com/alacritty/alacritty/pulls).
All patches have to be sent on GitHub as [pull requests](https://github.com/alacritty/alacritty/pulls).

If you are looking for a place to start contributing to Alacritty, take a look at the
[help wanted](https://github.com/alacritty/alacritty/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22)
Expand Down Expand Up @@ -91,10 +91,11 @@ If any change has been made to the `config.rs` file, it should also be documente

Changes compared to the latest Alacritty release which have a direct effect on the user (opposed to
things like code refactorings or documentation/tests) additionally need to be documented in the
`CHANGELOG.md`. The existing entries should be used as a style guideline. The change log should be
used to document changes from a user-perspective, instead of explaining the technical background
(like commit messages). More information about Alacritty's change log format can be found
[here](https://keepachangelog.com).
`CHANGELOG.md`. When a notable change is made to `alacritty_terminal`, it should be documented in
`alacritty_terminal/CHANGELOG.md` as well. The existing entries should be used as a style guideline.
The change log should be used to document changes from a user-perspective, instead of explaining the
technical background (like commit messages) More information about Alacritty's change log format can
be found [here](https://keepachangelog.com).

### Style

Expand Down
Loading

0 comments on commit 88da78c

Please sign in to comment.