This makes use of the new rectangle rendering methods used to display
the colored visual bell to add proper underline and strikeout support to
Alacritty.
This adds the option to specify the color of the visual bell using the
`visual_bell.color` configuration setting.
This is done by rendering a big quad over the entire screen, which also
opens up options to draw other arbitrary rectangles on the screen in the
future.
This resolves issues with copy-pasting tabs by including them in the
pasted string.
Selection of tabs is still inconsistent with what might be expected
based on other terminal emulators, however the behavior hasn't
regressed.
This fixes https://github.com/jwilm/alacritty/issues/219.
Certain programs like `htop` have problems with the number
of color pairs which are specified by the Alacritty terminfo
file.
By reducing the maximum number of color pairs to the value
which is specified by xterm-256color, these issues are
resolved.
This fixes#1862.
Instead of rendering zero-width characters as full characters, they are
now properly rendered without advancing the cursor.
Because of performance limitations, this implementation only supports up
to 5 zero-width characters per cell. However, as a result of this
limitation there should not be any performance impact.
This fixes#1317, fixes#696 and closes#1318.
This includes some changes to the scripts `README.md` to provide
some more information on the different Alacritty scripts.
A new script for testing the 24 bit support of Alacritty has been
added with the `24-bit-color.sh` name. This should help with
troubleshooting truecolor support issues.
Since `perf` is a standard tool which is available in the official
repositories for most distributions, it doesn't make much sense to
provide an installation script specifically for Ubuntu. As a result of
this, the script has been removed.
Due to the lazy initialization of lines in the Alacritty history, the
recording of ref tests was broken. Because a WM would often resize the
ref test window after it was spawned, some additional lines were
initialized in the stored ref test.
To make sure lazy initialization does not play any role in the recording
and replaying of reftests, before recording and replaying the tests, the
complete grid is initialized and then truncated. This should make sure
that only the relevant lines are kept.
Since running `clear` inside of tmux doesn't actually clear any part of
the screen, but just resets the scrolling region, the warning and error
notices can't be removed without quitting tmux or Alacritty.
As a solution, a new action `ClearLogNotice` has been added which has
been bound to Ctrl+L by default. As a result, Ctrl+L can be used inside
of tmux to remove the messages, even though tmux doesn't clear the
screen.
This fixes#1811.
Since the `scale_with_dpi` setting has been deprecated, but it hasn't
been removed from the config, Alacritty would print an error every time
it is started.
To resolve this problem, the option is removed from the default
configuration file.
Since ansi.rs is mostly about control sequences sent by applications,
displaying all issues during parsing to the user can be annoying since
Alacritty might not actually do anything wrong.
To resolve this problem, all `warn!` logs in `src/ansi.rs` have been
decreased to the `debug!` level.
This fixes#1809.
To make sure that all error and information reporting to the user is
unified, all instances of `print!`, `eprint!`, `println!` and
`eprintln!` have been removed and replaced by logging.
When `RUST_LOG` is not specified, the default Alacritty logger now also
prints to both the stderr and a log file. The log file is only created
when a message is written to it and its name is printed to stdout the
first time it is used.
Whenever a warning or an error has been written to the log file/stderr,
a message is now displayed in Alacritty which points to the log file
where the full error is documented.
The message is cleared whenever the screen is cleared using either the
`clear` command or the `Ctrl+L` key binding.
To make sure that log files created by root don't prevent normal users
from interacting with them, the Alacritty log file is `/tmp/Alacritty-$PID.log`.
Since it's still possible that the log file can't be created, the UI
error/warning message now informs the user if the message was only
written to stderr. The reason why it couldn't be created is then printed
to stderr.
To make sure the deletion of the log file at runtime doesn't create any
issues, the file is re-created if a write is attempted without the file
being present.
To help with debugging Alacritty issues, a timestamp and the error
level are printed in all log messages.
All log messages now follow this format:
[YYYY-MM-DD HH:MM] [LEVEL] Message
Since it's not unusual to spawn a lot of different terminal emulators
without restarting, Alacritty can create a ton of different log files.
To combat this problem, logfiles are removed by default after
Alacritty has been closed. If the user wants to persist the log of a
single session, the `--persistent_logging` option can be used. For
persisting all log files, the `persistent_logging` option can be set in
the configuration file
There were some minor rounding issues in the padding codepath without
dynamic padding. These have been fixed, which should resolve issues with
blurry fonts on monitors with a fractional DPR.
This fixes https://github.com/jwilm/alacritty/issues/1806.
This adds the `window.dynamic_padding` option which allows disabling the
dynamic spread of additional padding around the grid's content.
Based on the feedback I've gotten so far and the fact that most other
terminal emulators do not seem to center the content inside themselves,
I've changed the default configuration option to disable centering of the grid.
This fixes#1778.
The i386 CI releases were still using x86_64 platforms for building the
output binaries, as a result the produced binaries did not work properly
on i386 systems.
The maximum time of 50 minutes was exceeded when Alacritty tries to build
for all Linux platforms, this was because it was effectively compiling
Alacritty from scratch four times.
By making use of the previous build artifacts, it's possible to cut this
down to two compiles using the `--no-build` option of `cargo-deb`.
Since the version 0.2.2 had some significant breakage which affects a
large number of users, this 0.2.3 release aims at providing a stable
release which works for everyone without any major regressions.
The logic during the initial spawning of the window was a bit twisted
up. This has been resolved and it should all work properly now, even
without a resize event at startup.
This fixes#1781.
The extra window padding was calculated in the renderer which lead to
problems with the paddings calculated in the `src/display.rs` and
`src/term/mod.rs`.
As a solution, every instance of `config.padding().x/y` has been removed
from the renderer (`src/renderer/mod.rs`), instead the padding is always
passed through from the `src/display.rs`.
The initial calculations during display creation and after resize then
are scaled appropriately and then the extra padding is calculated. As a
result every other location can just make use of the correctly
calculated `size_info.padding_x` and `size_info.padding_y`.
The documentation has been changed to clearly state that the padding is
scaled by DPI now.
This fixes#1773.
The manpage was incorrectly zipped up with the `-z` option, which
doesn't exist and created a 0-size file. Since Github does not accept
0-size files, this lead to the complete release deployment failing.
Changing this to use the `-c` option should fix this problem by creating
a proper non-zero size gzip file.