I use symlinks quite a lot to quickly get to topics I'm working on.
Thereby, I usually symlink dirs to my home directory.
This has the additional advantage, that the working directory is pretty short.
When spawning a new terminal instance from Alacritty (SpawnNewInstance), the information about the symlink is lost because the kernel does not know about the symlink.
The information in the procfs
that is used by default only contains the canonical working directory, not the one your shell shows you.
We can fix that by logging the working directory from our shell and then instructing alacritty to use that information.
Alacritty by default exports the Xorg window id in the environment variable WINDOW_ID
.
That makes it possible to log the current pwd for each alacritty window with help from your shell.
For alacritty this can be achieved with the following code in your zshrc
:
# log pwd without symlinks stripped so that we can spawn new terminals
# with this information
mkdir -p "/tmp/pwds/$WINDOW_ID"
function chpwd {
echo "$PWD" > "/tmp/pwds/$WINDOW_ID/pwd"
}
# store initial pwd
chpwd
function zshexit {
rm -rf "/tmp/pwds/$WINDOW_ID"
}
On shell launch you can then further use the PREV_WINDOW_ID
environment variable that this fork adds to change the shell directory:
if [ -n "$PREV_WINDOW_ID" ] && [ -f "/tmp/pwds/$PREV_WINDOW_ID/pwd" ]; then
cd "$(cat "/tmp/pwds/$PREV_WINDOW_ID/pwd")"
fi
This fork further adds RAND_WINDOW_ID
and PREV_RAND_WINDOW_ID
since Xorg window ids are reused when you kill and spawn a new window.
Then compile Alacritty and copy the binary:
cargo build --release
sudo cp target/release/alacritty `which alacritty`
Alacritty is a modern terminal emulator that comes with sensible defaults, but allows for extensive configuration. By integrating with other applications, rather than reimplementing their functionality, it manages to provide a flexible set of features with high performance. The supported platforms currently consist of BSD, Linux, macOS and Windows.
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.
Join #alacritty
on libera.chat if you have questions or looking for a quick help.
You can find an overview over the features available in Alacritty here.
- Announcing Alacritty, a GPU-Accelerated Terminal Emulator January 6, 2017
- A talk about Alacritty at the Rust Meetup January 2017 January 19, 2017
- Alacritty Lands Scrollback, Publishes Benchmarks September 17, 2018
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.
For everyone else, the detailed instructions to install Alacritty can be found here.
- At least OpenGL ES 2.0
- [Windows] ConPTY support (Windows 10 version 1809 or higher)
You can find the documentation for Alacritty's configuration in man 5 alacritty
, or by looking at the website if you do not have the manpages
installed.
Alacritty doesn't create the config file for you, but it looks for one in the following locations:
$XDG_CONFIG_HOME/alacritty/alacritty.toml
$XDG_CONFIG_HOME/alacritty.toml
$HOME/.config/alacritty/alacritty.toml
$HOME/.alacritty.toml
On Windows, the config file should be located at:
%APPDATA%\alacritty\alacritty.toml
A guideline about contributing to Alacritty can be found in the
CONTRIBUTING.md
file.
Is it really the fastest terminal emulator?
Benchmarking terminal emulators is complicated. Alacritty uses vtebench to quantify terminal emulator throughput and manages to consistently score better than the competition using it. If you have found an example where this is not the case, please report a bug.
Other aspects like latency or framerate and frame consistency are more difficult to quantify. Some terminal emulators also intentionally slow down to save resources, which might be preferred by some users.
If you have doubts about Alacritty's performance or usability, the best way to quantify terminal emulators is always to test them with your specific usecases.
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.
Alacritty is released under the Apache License, Version 2.0.