2016-11-20 00:51:48 -05:00
Alacritty
=========
[![Build Status ](https://travis-ci.org/jwilm/alacritty.svg?branch=master )](https://travis-ci.org/jwilm/alacritty)
2017-01-02 12:07:50 -05:00
2017-01-04 15:14:32 -05:00
Alacritty is the fastest terminal emulator in existence. Using the GPU for
2017-01-02 12:07:50 -05:00
rendering enables optimizations that simply aren't possible in other emulators.
2018-04-03 02:52:41 -04:00
Alacritty currently supports FreeBSD, Linux, macOS, and OpenBSD. Windows
support is planned before the 1.0 release.
2017-01-02 12:07:50 -05:00
< p align = "center" >
< img width = "600" alt = "Alacritty running vim inside tmux" src = "https://cloud.githubusercontent.com/assets/4285147/21585004/2ebd0288-d06c-11e6-95d3-4a2889dbbd6f.png" >
< / p >
## About
Alacritty is focused on simplicity and performance. The performance goal means
it should be faster than any other terminal emulator available. The simplicity
2017-06-27 11:59:18 -04:00
goal means that it doesn't have features such as tabs or splits (which can be
better provided by a window manager or [terminal multiplexer][tmux]) nor
niceties like a GUI config editor.
2017-01-02 12:07:50 -05:00
2017-06-27 11:59:18 -04:00
The software is considered to be at an **alpha** level of readiness--there are
missing features and bugs to be fixed, but it is already used by many as a daily
driver.
Precompiled binaries will eventually be made available on supported platforms.
This is minimally blocked on a stable config format. For now, Alacritty must be
built from source.
2017-01-06 12:30:01 -05:00
2017-01-21 13:00:07 -05:00
## Further information
2017-01-04 12:17:56 -05:00
2017-01-06 18:44:14 -05:00
- [Announcing Alacritty, a GPU-Accelerated Terminal Emulator ](http://blog.jwilm.io/announcing-alacritty/ ) January 6, 2017
2017-01-21 13:00:07 -05:00
- [A short talk about Alacritty at the Rust Meetup January 2017 ](https://air.mozilla.org/rust-meetup-january-2017/ ) (starts at 57:00)
2017-01-04 12:17:56 -05:00
2017-06-27 11:59:18 -04:00
## Installation
Instructions are provided for macOS and many Linux variants to compile Alacritty
2017-12-09 22:36:09 -05:00
from source. With the exception of Arch (which has a package in the AUR), Void Linux (in main repository) and
2018-07-03 12:35:13 -04:00
[NixOS ](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/misc/alacritty/default.nix ), please first read the
2017-07-28 12:00:04 -04:00
[prerequisites ](#prerequisites ) section, then find the section for your OS, and
finally go to [building ](#building ) and [configuration ](#configuration ).
2017-01-02 12:07:50 -05:00
2017-01-14 15:43:29 -05:00
### Arch Linux
```sh
git clone https://aur.archlinux.org/alacritty-git.git
cd alacritty-git
makepkg -isr
```
2018-07-15 09:00:58 -04:00
### Debian/Ubuntu
Using `cargo deb` , you can create and install a deb file.
```sh
2018-07-16 12:39:49 -04:00
git clone https://github.com/jwilm/alacritty.git
2018-07-15 09:00:58 -04:00
cd alacritty
2018-07-29 09:11:19 -04:00
cargo install cargo-deb
2018-07-15 09:00:58 -04:00
cargo deb --install
```
2018-07-01 10:22:57 -04:00
### openSUSE Tumbleweed Linux
```sh
zypper in alacritty
```
2017-12-09 22:36:09 -05:00
### Void Linux
```sh
xbps-install alacritty
```
2017-01-14 15:43:29 -05:00
## Manual Installation
2017-01-02 12:07:50 -05:00
### Prerequisites
2017-09-05 11:56:32 -04:00
1. Alacritty requires the most recent stable Rust compiler; it can be installed with
2017-08-29 12:39:43 -04:00
`rustup` .
2017-08-12 15:49:57 -04:00
#### Installing Rust compiler with `rustup`
2017-08-29 12:39:43 -04:00
1. Install [`rustup.rs` ](https://rustup.rs/ ).
2017-01-02 12:07:50 -05:00
2. Clone the source code:
```sh
2017-01-14 15:43:29 -05:00
git clone https://github.com/jwilm/alacritty.git
2017-01-02 12:07:50 -05:00
cd alacritty
```
2017-08-12 15:49:57 -04:00
3. Make sure you have the right Rust compiler installed. Run
2017-01-02 12:07:50 -05:00
2017-01-07 10:41:21 -05:00
```sh
2017-02-02 23:50:48 -05:00
rustup override set stable
rustup update stable
2017-01-02 12:07:50 -05:00
```
2018-07-15 09:00:58 -04:00
#### Debian/Ubuntu
2017-01-02 12:07:50 -05:00
2018-07-15 09:00:58 -04:00
You can build alacritty using `cargo deb` and use your system's package manager
to maintain the application using the instructions [above ](#debianubuntu ).
If you'd still like to build a local version manually, you need a few extra
libraries to build Alacritty. Here's an apt command that should install all of
them. If something is still found to be missing, please open an issue.
2017-01-02 12:07:50 -05:00
```sh
apt-get install cmake libfreetype6-dev libfontconfig1-dev xclip
```
2017-01-28 20:54:19 -05:00
#### Arch Linux
2017-01-05 15:52:11 -05:00
On Arch Linux, you need a few extra libraries to build Alacritty. Here's a
`pacman` command that should install all of them. If something is still found
to be missing, please open an issue.
2017-01-07 16:25:53 -05:00
2017-01-05 15:52:11 -05:00
```sh
2017-08-12 15:49:57 -04:00
pacman -S cmake freetype2 fontconfig pkg-config make xclip
2017-01-05 15:52:11 -05:00
```
2017-01-28 20:54:19 -05:00
#### Fedora
2017-01-06 14:34:24 -05:00
On Fedora, you need a few extra libraries to build Alacritty. Here's a `dnf`
command that should install all of them. If something is still found to be
missing, please open an issue.
```sh
2017-01-10 08:18:02 -05:00
dnf install cmake freetype-devel fontconfig-devel xclip
2017-10-04 11:49:34 -04:00
```
#### CentOS/RHEL 7
On CentOS/RHEL 7, you need a few extra libraries to build Alacritty. Here's a `yum`
command that should install all of them. If something is still found to be
missing, please open an issue.
```sh
yum install cmake freetype-devel fontconfig-devel xclip
2018-03-12 21:20:45 -04:00
yum group install "Development Tools"
2017-01-06 14:34:24 -05:00
```
2017-01-28 20:54:19 -05:00
#### openSUSE
2017-01-06 18:32:54 -05:00
On openSUSE, you need a few extra libraries to build Alacritty. Here's
a `zypper` command that should install all of them. If something is
still found to be missing, please open an issue.
```sh
2017-01-10 08:18:02 -05:00
zypper install cmake freetype-devel fontconfig-devel xclip
2017-01-06 18:32:54 -05:00
```
2017-01-28 20:54:19 -05:00
#### Slackware
2017-01-10 10:16:07 -05:00
Compiles out of the box for 14.2
For copy & paste support (middle mouse button) you need to install xclip
https://slackbuilds.org/repository/14.2/misc/xclip/?search=xclip
2017-01-28 20:54:19 -05:00
#### Void Linux
2017-01-06 14:32:01 -05:00
2017-05-03 13:42:17 -04:00
On [Void Linux ](https://voidlinux.eu ), install following packages before
compiling Alacritty:
2017-01-06 14:32:01 -05:00
```sh
xbps-install cmake freetype-devel freetype expat-devel fontconfig xclip
```
2017-01-28 20:54:19 -05:00
#### FreeBSD
2017-01-12 16:16:09 -05:00
On FreeBSD, you need a few extra libraries to build Alacritty. Here's a `pkg`
command that should install all of them. If something is still found to be
missing, please open an issue.
```sh
2017-06-14 15:25:22 -04:00
pkg install cmake freetype2 fontconfig xclip pkgconf
2017-01-12 16:16:09 -05:00
```
2018-04-03 02:52:41 -04:00
#### OpenBSD
Alacritty builds on OpenBSD 6.3 almost out-of-the-box if Rust and
[Xenocara ](https://xenocara.org ) are installed. If something is still found to
be missing, please open an issue.
```sh
pkg_add rust
```
2017-06-30 21:45:53 -04:00
#### Solus
2017-08-29 12:39:43 -04:00
On [Solus ](https://solus-project.com/ ), you need a few extra libraries to build
Alacritty. Here's a `eopkg` command that should install all of them. If
something is still found to be missing, please open an issue.
2017-06-30 21:45:53 -04:00
```sh
2017-10-07 11:02:55 -04:00
sudo eopkg install fontconfig-devel
2017-06-30 21:45:53 -04:00
```
2018-02-27 08:33:20 -05:00
#### NixOS/Nixpkgs
2017-07-28 12:00:04 -04:00
2017-08-29 12:39:43 -04:00
The following command can be used to get a shell with all development
dependencies on [NixOS ](https://nixos.org ).
2017-07-28 12:00:04 -04:00
2017-08-29 12:39:43 -04:00
```sh
2017-07-28 12:00:04 -04:00
nix-shell -A alacritty '< nixpkgs > '
```
2017-08-29 11:40:51 -04:00
#### Gentoo
On Gentoo, there's a portage overlay available. Make sure `layman` is installed
and run:
2017-08-29 12:39:43 -04:00
```sh
2017-08-29 11:40:51 -04:00
sudo layman -a slyfox
```
2017-08-29 12:39:43 -04:00
Then, add `x11-terms/alacritty **` to `/etc/portage/package.accept_keywords` and
emerge alacritty:
```sh
2017-08-29 11:40:51 -04:00
sudo emerge alacritty
```
2017-08-29 12:39:43 -04:00
2017-08-29 11:40:51 -04:00
It might be handy to mask all other packages provided in the `slyfox` overlay by
adding `*/*::slyfox` to `/etc/portage/package.mask` and adding
`x11-terms/alacritty::slyfox` to `/etc/portage/package.unmask` .
2018-02-13 11:36:25 -05:00
### Cargo
If you have a rust toolchain setup you can install Alacritty via cargo:
```sh
cargo install --git https://github.com/jwilm/alacritty
```
2018-02-27 22:48:37 -05:00
Note that you still need to download system build dependencies via your package
manager as mentioned above. The binary `alacritty` will be placed into `$HOME/.cargo/bin` .
Make sure it is in your path (default if you use `rustup` ).
2018-02-13 11:36:25 -05:00
2017-01-28 20:54:19 -05:00
#### Other
2017-01-02 12:07:50 -05:00
2017-01-28 20:54:19 -05:00
If you build Alacritty on another distribution, we would love some help
2017-01-02 12:07:50 -05:00
filling in this section of the README.
### Building
2018-03-07 16:34:05 -05:00
**BEFORE YOU RUN IT:** Install the config file as described below; otherwise,
many things (such as arrow keys) will not work.
#### Linux
2017-01-02 12:07:50 -05:00
Once all the prerequisites are installed, compiling Alacritty should be easy:
```sh
cargo build --release
```
If all goes well, this should place a binary at `target/release/alacritty` .
2018-07-15 09:00:58 -04:00
2018-03-07 16:34:05 -05:00
##### Desktop Entry
2017-01-06 15:05:55 -05:00
Many linux distributions support desktop entries for adding applications to
system menus. To install the desktop entry for Alacritty, run
```sh
sudo cp target/release/alacritty /usr/local/bin # or anywhere else in $PATH
2018-05-14 23:21:06 -04:00
sudo desktop-file-install alacritty.desktop
sudo update-desktop-database
2017-01-06 15:05:55 -05:00
```
2018-03-07 16:34:05 -05:00
#### MacOS
2017-07-28 12:02:05 -04:00
To build an application for macOS, run
```sh
make app
2018-01-10 11:54:34 -05:00
cp -r target/release/osx/Alacritty.app /Applications/
2017-07-28 12:02:05 -04:00
```
2018-03-07 16:34:05 -05:00
## Manual Page
Installing the manual page requires the additional dependency `gzip` .
To install the manual page, run
```sh
sudo mkdir -p /usr/local/share/man/man1
gzip -c alacritty.man | sudo tee /usr/local/share/man/man1/alacritty.1.gz > /dev/null
```
## Shell completions
To get automatic completions for alacritty's flags and arguments you can install the provided shell completions.
### Zsh
To install the completions for zsh, run
```
sudo cp alacritty-completions.zsh /usr/share/zsh/functions/Completion/X/_alacritty
```
### Bash
To install the completions for bash, you can `source` the `alacritty-completions.bash` in your `~/.bashrc` file.
If you do not plan to delete the source folder of alacritty, you can run
```sh
echo "source $(pwd)/alacritty-completions.bash" >> ~/.bashrc
```
Otherwise you can copy it to the `~/.bash_completion` folder and source it from there:
```sh
mkdir -p ~/.bash_completion
cp alacritty-completions.bash ~/.bash_completion/alacritty
echo "source ~/.bash_completion/alacritty" >> ~/.bashrc
```
2018-03-12 21:20:45 -04:00
### Fish
To install the completions for fish, run
```
2018-04-29 09:47:02 -04:00
sudo cp alacritty-completions.fish $__fish_datadir/vendor_completions.d/alacritty.fish
2018-03-12 21:20:45 -04:00
```
2017-01-14 15:43:29 -05:00
## Configuration
2017-01-02 12:07:50 -05:00
Although it's possible the default configuration would work on your system,
2017-01-07 16:19:30 -05:00
you'll probably end up wanting to customize it anyhow. There is a default
2018-02-13 11:20:57 -05:00
`alacritty.yml` and `alacritty_macos.yml` at the git repository root for
2018-02-27 22:48:37 -05:00
Linux and macOS respectively.
2018-02-13 11:20:57 -05:00
Alacritty looks for the configuration file at the following paths:
2017-01-07 16:19:30 -05:00
1. `$XDG_CONFIG_HOME/alacritty/alacritty.yml`
2017-01-07 19:12:28 -05:00
2. `$XDG_CONFIG_HOME/alacritty.yml`
3. `$HOME/.config/alacritty/alacritty.yml`
2017-01-09 01:40:47 -05:00
4. `$HOME/.alacritty.yml`
2017-01-07 16:19:30 -05:00
2017-11-11 11:24:08 -05:00
If none of these paths are found then
2017-08-29 12:39:43 -04:00
`$XDG_CONFIG_HOME/alacritty/alacritty.yml` is created once alacritty is first
run. On most systems this often defaults to
`$HOME/.config/alacritty/alacritty.yml` .
2017-01-02 12:07:50 -05:00
Many configuration options will take effect immediately upon saving changes to
2017-10-08 21:10:29 -04:00
the config file. The only exception is the `font` and `dimensions` sections
which requires Alacritty to be restarted. For further explanation of the config
file, please consult the comments in the default config file.
2017-01-02 12:07:50 -05:00
2018-02-13 11:20:57 -05:00
## Issues (known, unknown, feature requests, etc.)
2017-01-02 12:07:50 -05:00
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. Keep in mind that Alacritty is very
much not looking to be a feature-rich terminal emulator with all sorts of bells
and widgets. It's primarily a cross-platform, blazing fast `tmux` renderer that
Just Works.
## FAQ
2018-02-27 22:48:37 -05:00
- **_Is it really the fastest terminal emulator?_**
In the terminals I've benchmarked against, alacritty is either faster, WAY
faster, or at least neutral. There are no benchmarks in which I've found
Alacritty to be slower.
- **_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
2017-01-02 12:07:50 -05:00
disappears. Actual throughput and rendering performance are still better in
Alacritty.
2018-02-27 22:48:37 -05:00
- **_When will Windows support be available?_**
When someone has time to work on it. Contributors would be welcomed :).
- **_My arrow keys don't work._**
It sounds like you deleted some key bindings from your config file. Please
reference the default config file to restore them.
- **_Why doesn't it support scrollback?_**
Alacritty's original purpose was to provide a better experience when using
[tmux] which already handled scrollback. The scope of this project has since
expanded, and [scrollback will eventually be added ](https://github.com/jwilm/alacritty/issues/124 ).
2017-01-02 12:07:50 -05:00
2017-01-19 02:02:53 -05:00
## IRC
Alacritty discussion can be found in `#alacritty` on freenode.
2017-01-02 12:07:50 -05:00
2017-10-21 20:06:47 -04:00
## Wayland
Wayland support is available, but not everything works as expected. Many people
have found a better experience using XWayland which can be achieved launching
Alacritty with the `WAYLAND_DISPLAY` environment variable cleared:
```sh
env WAYLAND_DISPLAY= alacritty
```
If you're interested in seeing our Wayland support improve, please head over to
the [Wayland meta issue] on the _winit_ project to see how you may contribute.
2017-01-02 12:07:50 -05:00
## License
Alacritty is released under the [Apache License, Version 2.0].
2017-12-17 01:04:10 -05:00
[Apache License, Version 2.0]: https://github.com/jwilm/alacritty/blob/master/LICENSE-APACHE
2017-10-31 11:54:30 -04:00
[faq]: https://github.com/jwilm/alacritty#faq
2017-06-27 11:59:18 -04:00
[tmux]: https://github.com/tmux/tmux
2017-10-21 20:06:47 -04:00
[Wayland meta issue]: https://github.com/tomaka/winit/issues/306