1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-11 13:51:01 -05:00
A cross-platform, OpenGL terminal emulator.
Find a file
Joe Wilm 99c34c7ce9
Reduce InstanceData footprint
The InstanceData type in the rendering subsystem was previously 17 f32s
plus one u8 which occupied a total of 72 bytes per instance. This meant
that for every character or background cell drawn, 72 bytes were sent to
the GPU. In the case of a 400x100 cell grid, a total of 2.9MB would be
sent.

This patch reduces InstanceData's size to 36 bytes, a 50% improvement!
Using the above example for comparison, a worst case of 1.44MB would be
transferred.

The motivation for this patch comes from macOS. Once the terminal grid
would reach a certain size, performance experienced a sharp and dramatic
drop (render times would go from ~3ms to ~16ms). I don't want to
speculate too much on the underlying issue, but suffice it to say that
this patch alleviates the problem in my testing.

While the performance impact was most significant on macOS, with
rendering times cut by more than 50% in some cases, this also results in
a measurable performance difference on other systems with high density
grids.

Co-authored-by: Christian Duerr <contact@christianduerr.com>
2020-08-05 00:24:51 +00:00
.builds Bump minimum supported Rust version to 1.43.0 2020-07-28 13:00:55 +03:00
.copr Add RPM spec for building in COPR 2019-06-09 16:30:42 +00:00
.github Bump alacritty_terminal version 2020-07-19 14:14:31 +00:00
alacritty Reduce InstanceData footprint 2020-08-05 00:24:51 +00:00
alacritty_terminal Bump minimum supported Rust version to 1.43.0 2020-07-28 13:00:55 +03:00
ci Run rustfmt on sr.ht 2020-06-23 11:13:14 +00:00
docs Document rejected window ops escapes 2020-07-26 14:51:15 +00:00
extra Remove snap packaging config 2020-07-30 04:02:16 +00:00
scripts Switch to flamegraph-rs script 2020-01-27 02:30:23 +03:00
.agignore Add silver searcher ignore file 2016-12-29 10:49:12 -05:00
.gitattributes Add custom merge strategy for CHANGELOG.md 2020-02-15 13:25:02 +03:00
.gitignore Switch to flamegraph-rs script 2020-01-27 02:30:23 +03:00
.travis.yml Fix travis release deployment 2020-08-02 22:00:05 +00:00
alacritty.yml Fix typo in example config file 2020-08-03 18:28:41 +00:00
Cargo.lock Bump version to 0.6.0-dev 2020-07-19 20:37:59 +00:00
Cargo.toml Rename font crate to crossfont 2020-07-18 01:27:41 +00:00
CHANGELOG.md Reduce InstanceData footprint 2020-08-05 00:24:51 +00:00
CONTRIBUTING.md Bump alacritty_terminal version 2020-07-19 14:14:31 +00:00
INSTALL.md Remove outdated sections from README 2020-07-24 16:29:00 +00:00
LICENSE-APACHE Remove copyright notice from files 2020-06-06 21:49:14 +03:00
Makefile Add auxiliary files to macOS Application bundle 2020-07-04 14:03:48 +00:00
README.md Fix typo in readme 2020-08-02 15:32:08 +00:00
rustfmt.toml Fix clippy issues 2019-08-16 01:33:49 +02:00

Alacritty

Alacritty Logo

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.

Alacritty running vim inside tmux

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

Installation

Some operating systems already provide binaries for Alacritty, for everyone else the instructions to build Alacritty from source can be found here.

Alpine Linux

apk add alacritty

Arch Linux

pacman -S alacritty

Fedora

Unofficial builds of stable tags can be found in Fedora Copr: pschyska/alacritty.

dnf copr enable pschyska/alacritty
dnf install alacritty

If you want to help test pre-releases, you can additionally enable pschyska/alacritty-testing.

Gentoo Linux

emerge x11-terms/alacritty

GNU Guix

guix package -i alacritty

Mageia

urpmi alacritty

NixOS

nix-env -iA nixos.alacritty

openSUSE Tumbleweed

zypper in alacritty

Pop!_OS

apt install alacritty

Solus

eopkg install alacritty

Void Linux

xbps-install alacritty

FreeBSD

pkg install alacritty

macOS

brew cask install alacritty

Once the cask is installed, it is recommended to set up the manual page, shell completions, and terminfo definitions. These are located inside the installed application's Resources directory: Alacritty.app/Contents/Resources.

Windows

Via Chocolatey

choco install alacritty

Via Scoop

scoop bucket add extras
scoop install alacritty

Other

Prebuilt binaries for macOS, and Windows can be downloaded from the GitHub releases page.

On Windows, Alacritty also requires Microsoft's VC++ redistributable.

For Windows versions older than Windows 10 (October 2018 Update), Alacritty requires winpty to emulate UNIX's PTY API. The agent is a single binary (winpty-agent.exe) which must be in the same directory as the Alacritty executable and is available through the GitHub releases page.

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:

  1. $XDG_CONFIG_HOME/alacritty/alacritty.yml
  2. $XDG_CONFIG_HOME/alacritty.yml
  3. $HOME/.config/alacritty/alacritty.yml
  4. $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.