ec42b42ce6
The zerowidth characters were conventionally stored in a [char; 5]. This creates problems both by limiting the maximum number of zerowidth characters and by increasing the cell size beyond what is necessary even when no zerowidth characters are used. Instead of storing zerowidth characters as a slice, a new CellExtra struct is introduced which can store arbitrary optional cell data that is rarely required. Since this is stored behind an optional pointer (Option<Box<CellExtra>>), the initialization and dropping in the case of no extra data are extremely cheap and the size penalty to cells without this extra data is limited to 8 instead of 20 bytes. The most noticible difference with this PR should be a reduction in memory size of up to at least 30% (1.06G -> 733M, 100k scrollback, 72 lines, 280 columns). Since the zerowidth characters are now stored dynamically, the limit of 5 per cell is also no longer present. |
||
---|---|---|
.builds | ||
.copr | ||
.github | ||
alacritty | ||
alacritty_terminal | ||
ci | ||
docs | ||
extra | ||
scripts | ||
.agignore | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
alacritty.yml | ||
Cargo.lock | ||
Cargo.toml | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
INSTALL.md | ||
LICENSE-APACHE | ||
Makefile | ||
README.md | ||
rustfmt.toml |
Alacritty
Alacritty is the fastest terminal emulator in existence. Using the GPU for rendering enables optimizations that simply aren't possible without it. Alacritty currently supports macOS, Linux, BSD, and Windows.
About
Alacritty is a terminal emulator with a strong focus on simplicity and performance. With such a strong focus on performance, included features are carefully considered and you can always expect Alacritty to be blazingly fast. By making sane choices for defaults, Alacritty requires no additional setup. However, it does allow configuration of many aspects of the terminal.
The software is considered to be at a beta level of readiness -- there are a few missing features and bugs to be fixed, but it is already used by many as a daily driver.
Precompiled binaries are available from the GitHub releases page.
Features
You can find an overview over the features available in Alacritty here.
Further information
- Announcing Alacritty, a GPU-Accelerated Terminal Emulator January 6, 2017
- A short talk about Alacritty at the Rust Meetup January 2017 (starts at 57:00)
- Alacritty Lands Scrollback, Publishes Benchmarks September 17, 2018
- Version 0.3.0 Release Announcement April 07, 2019
- Version 0.5.0 Release Announcement July 31, 2020
Installation
Alacritty can be installed by using various package managers on Linux, BSD, macOS and Windows.
Prebuilt binaries for macOS and Windows can also be downloaded from the GitHub releases page.
On Windows, Alacritty requires winpty to emulate UNIX's PTY API for versions
older than Windows 10 (October 2018 Update) and Microsoft's VC++
redistributable. The winpty agent (winpty-agent.exe
) must be in the same
directory as the Alacritty executable and is available through the
GitHub releases page.
For everyone else, the detailed instructions to install Alacritty can be found here.
Configuration
You can find the default configuration file with documentation for all available fields on the GitHub releases page for each release.
Alacritty doesn't create the config file for you, but it looks for one in the following locations:
$XDG_CONFIG_HOME/alacritty/alacritty.yml
$XDG_CONFIG_HOME/alacritty.yml
$HOME/.config/alacritty/alacritty.yml
$HOME/.alacritty.yml
Windows
On Windows, the config file should be located at:
%APPDATA%\alacritty\alacritty.yml
Contributing
A full guideline about contributing to Alacritty can be found in the
CONTRIBUTING.md
file.
Issues (known, unknown, feature requests, etc.)
If you run into a problem with Alacritty, please file an issue. If you've got a feature request, feel free to ask about it. Please just keep in mind Alacritty is focused on simplicity and performance, and not all features are in line with that goal.
Before opening a new issue, please check if it has already been reported. There's a chance someone else has already reported it, and you can subscribe to that issue to keep up on the latest developments.
FAQ
Is it really the fastest terminal emulator?
In the terminals we've benchmarked, Alacritty is either faster or way faster than the others. If you've found a case where this isn't true, please report a bug.
Why isn't feature X implemented?
Alacritty has many great features, but not every feature from every other terminal. This could be for a number of reasons, but sometimes it's just not a good fit for Alacritty. This means you won't find things like tabs or splits (which are best left to a window manager or terminal multiplexer) nor niceties like a GUI config editor.
macOS + tmux + vim is slow! I thought this was supposed to be fast!
This appears to be an issue outside of terminal emulators; either macOS has an
IPC performance issue, or either tmux or vim (or both) have a bug. This same
issue can be seen in iTerm2
and Terminal.app
. I've found that if tmux is
running on another machine which is connected to Alacritty via SSH, this issue
disappears. Actual throughput and rendering performance are still better in
Alacritty.
IRC
Alacritty discussion can be found in #alacritty
on freenode.
Wayland
Wayland is used by default on systems that support it. Using XWayland may circumvent Wayland specific issues and can be enabled through:
env WINIT_UNIX_BACKEND=x11 alacritty
License
Alacritty is released under the Apache License, Version 2.0.