When the erase in line escape sequence with a parameter of 0 (right) is
passed while the wrapline flag is already set, it will no longer clear
the last column and instead ignore the operation.
The behavior of `\e[1K` and `\e[2K` is unchanged and both will clear the
entire first line without clearing the wrapline flag.
Closes#6159.
This patch reduces the active GPU memory consumption by disabling the
depth and stencil buffers. During original testing it reduced GPU memory
usage on Linux by almost a third.
This is a reintroduction of previously reverted patch 3475e44.
Closes#2881.
This fixes a bug where semantic selection for bracket characters wasn't
working properly over multiple lines since start and end of the
selection were swapped.
Closes#6567.
Debian-based distributions provide a standard interface to launch a
terminal via the x-terminal-emulator name. In order for a terminal
emualtor to satisfy that interface, it must
* Be VT100 compatiable
* Support the "-e <command> <args>" CLI option
* Support the "-T <title>" CLI option
Adjust the short form of --title accordingly, providing -t as an alias
to avoid breaking any existing usage.
This fixes an issue where it was possible to update the padding of the
terminal without actually queueing an update for the renderer
projection, leading to a blurry projection.
Closes#6502.
The glutin 0.30.0 update decouples glutin from winit which
provides us with basis for a multithreaded renderer. This
also improves robustness of our configuration picking,
context creation, and surface handling.
As an example we're now able to start on systems without a vsync,
we don't try to build lots of contexts to check if some config works,
and so on.
That also brings us possibility to handle context losses, but that's
a future work.
Fixes#1268.
Some old hardware doesn't like universal shader approach for all the
rectangle kinds leading to ALU instruction limits. This commit fixes
it by splitting the shader per rectangle kind.
Fixes#6417.
This commit swaps the order of `general` and `instance` arguments
and also sets `instance` to `general` when only one argument was
provided. This should make this option behave like in other terminals
on X11, since they set either both or general by default, but
not instance like Alacritty.
Fixes#6279.
Unless the `shell` config is specified, launch the user's shell with:
```sh
login -flp $USER /bin/sh -c "exec -a -shell /path/to/shell"
```
On macOS, just running a shell prefixed by `-` is not sufficient to be
registered as a login session for things like `w` and `logname`.
However, using the `login` command changes the directory to `$HOME`
before running the program by default, which is not desired. The `-l`
flag disables this behavior, but also skips prepending `-` to the
executed program, so shells will not run as login shells. Instead we
just do this part ourselves with `exec -a`. The result is login shells
that run in the intended directory and are registered as tty sessions.
Fixes#3420.
Remove the `font.use_thin_strokes` config, which only did anything on
macOS and only prior to Big Sur. Instead, we will enable or disable
"font smoothing" on macOS based on the `AppleFontSmoothing` user
default.
These changes let users get the "thin strokes" behavior by setting
`AppleFontSmoothing` to 0 with:
```sh
$ defaults write -g AppleFontSmoothing -int 0
```
(Or replace `-g` with `org.alacritty` to apply this setting only to
Alacritty.app, rather than the whole system.)
Add a `removed` config attribute to show helpful warnings to users
who are using config options that don't do anything anymore, and apply
this attribute to `font.use_thin_strokes`.
Bump `crossfont` to 0.5.0 to pick up the new font smoothing behavior.
This release also includes a fix for a crash when trying to load a
disabled font.
Fixes#4616.
Fixes#6108.
The common naming is reverse DNS, and given that alacritty is using
alacritty.org it makes more sense to use org.alacritty instead of
old io.alacritty.
This commit adds support for hyperlink escape sequence
`OSC 8 ; params ; URI ST`. The configuration option responsible for
those is `hints.enabled.hyperlinks`.
Fixes#922.
When using `--config-file /dev/null` with `live_config_reload`, each
write to `/dev/null` was forcing alacritty to reload its configuration.
This commit makes alacritty ignore special files for live config reload.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
This patch resolves some mapping issues with the line drawing character
set where characters like linefeed were incorrectly mapped to their
proper character representation rather than the codepoint of their
identification glpyh.
Co-authored-by: Christian Duerr <contact@christianduerr.com>
Builtin box drawing glyphs in range from '\u{2580}' to `\u{2587}`
could have gap due to missing rounding. Previously height was rounded,
however not the `y` offset. This commit fixes it.
To prevent the current selection clipboard from being overwritten right
before pasting, text is no longer copied solely because the user
scrolled the scrollback buffer.
The selection also isn't copied when a mouse button other than LMB/RMB
are released, since these are the only ones capable of modifying the
selection range.
This should prevent issues where the selection of the user gets
unexpectedly overwritten, especially in scenarios where the user is
currently in the process of pasting something into Alacritty.
Signed-off-by: Julian Orth <ju.orth@gmail.com>
This leads to issues on macOS, since if we store clipboard at the same
time it could error out. Also, on e.g. Wayland the clipboard store for
unfocused window won't work anyway.
This commit persists OpenGL context creation flags from previous window
build attempts saving time in multiwindow context.
It also creates window as srgb by default, since it's what Alacritty is
rendering in. For reference [1] and [2]. Moreover the fallback for 10
bit colors is also added.
[1] - https://github.com/alacritty/alacritty/issues/4939 and
[2] - https://github.com/alacritty/alacritty/issues/3756.
Fixes#4703.
This commit adds support for colored underline and refines the dynamic
extra storage. The extra storage now is using `Arc` making cloning it way
faster compared to `Box` approach which scales really well when it comes
to cloning in `Term::write_at_cursor`, since cloning `Arc` is constant
time.
Fixes#4142.
This fixes a crash which occurs when the terminal is reset while
searching, due to the vi mode cursor being outside of the visible area.
This also fixes an issue where the search state reset would incorrectly
clamp the vi mode cursor to the grid, rather than the absolute viewport
position.
While this fix does resolve all crashes when searching while running
`cat /dev/urandom`, it does raise the question if manually clamping the
vi mode cursor in every location where it is modified is the right
choice.
A follow-up to provide a safer API which guarantees correct modification
of the vi mode cursor location is probably a good idea.
Fixes#5942.
Currently Alacritty only works on hardware which supports OpenGL 3.3 or
more, which can become problematic with older devices. This patch adds a
new GLES2 renderer, since it is much more widely supported, especially
on weaker hardware like phones or a Raspberry Pi.
While the GLES2 renderer is slower than the OpenGL 3.3+ version, it is
still significantly faster than software rendering. However because of
this performance difference it is only used when necessary and there
should be no difference for machines supporting OpenGL 3.3+.
The two renderers are largely independent and separated in the
`renderer/text/glsl3` and `renderer/text/gles2` modules. Separate
shaders are also required for text rendering. The rectangle rendering
for underlines and the visual bell works identically for both versions,
but does have some version-specific shader code.
Fixes#128.
Co-authored-by: Christian Duerr <contact@christianduerr.com>