1
0
Fork 0
mirror of https://github.com/alacritty/alacritty.git synced 2024-11-25 14:05:41 -05:00
A cross-platform, OpenGL terminal emulator.
Find a file
Christian Duerr 3bd5ac221a
Unify the grid line indexing types
Previously Alacritty was using two different ways to reference lines in
the terminal. Either a `usize`, or a `Line(usize)`. These indexing
systems both served different purposes, but made it difficult to reason
about logic involving these systems because of its inconsistency.

To resolve this issue, a single new `Line(i32)` type has been
introduced.  All existing references to lines and points now rely on
this definition of a line.

The indexing starts at the top of the terminal region with the line 0,
which matches the line 1 used by escape sequences. Each line in the
history becomes increasingly negative and the bottommost line is equal
to the number of visible lines minus one.

Having a system which goes into the negatives allows following the
escape sequence's indexing system closely, while at the same time making
it trivial to implement `Ord` for points.

The Alacritty UI crate is the only place which has a different indexing
system, since rendering and input puts the zero line at the top of the
viewport, rather than the top of the terminal region.

All instances which refer to a number of lines/columns instead of just a
single Line/Column have also been changed to use a `usize` instead. This
way a Line/Column will always refer to a specific place in the grid and
no confusion is created by having a count of lines as a possible index
into the grid storage.
2021-03-30 23:25:38 +00:00
.builds Run clippy on MSRV 2021-02-27 15:06:22 +00:00
.github Run clippy on MSRV 2021-02-27 15:06:22 +00:00
alacritty Unify the grid line indexing types 2021-03-30 23:25:38 +00:00
alacritty_config_derive Unify the grid line indexing types 2021-03-30 23:25:38 +00:00
alacritty_terminal Unify the grid line indexing types 2021-03-30 23:25:38 +00:00
docs Add regex terminal hints 2021-03-01 19:50:39 +00:00
extra Add sync update terminfo and docs 2021-02-24 18:20:47 +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
.editorconfig Fix typo in .editorconfig 2020-12-14 06:46:28 +00:00
.gitattributes Add custom merge strategy for CHANGELOG.md 2020-02-15 13:25:02 +03:00
.gitignore Add editorconfig 2020-11-06 05:12:29 +03:00
alacritty.yml Fix URLs opening in explorer on Windows 2021-03-15 14:27:57 +00:00
Cargo.lock Run clippy on MSRV 2021-02-27 15:06:22 +00:00
Cargo.toml Replace serde's derive with custom proc macro 2020-12-21 02:44:38 +00:00
CHANGELOG.md Fix cursor thickness on wide cells 2021-03-28 18:02:12 +00:00
CONTRIBUTING.md Bump development version to 0.8.0-dev 2021-01-04 09:55:13 +00:00
INSTALL.md Remove Windows WinPTY backend 2021-01-01 05:07:39 +00:00
LICENSE-APACHE Remove copyright notice from files 2020-06-06 21:49:14 +03:00
Makefile Add editorconfig 2020-11-06 05:12:29 +03:00
README.md Add Windows version requirements to readme 2021-02-28 17:12:24 +00:00
rustfmt.toml Fix clippy issues 2019-08-16 01:33:49 +02:00

Alacritty Logo

Alacritty - A fast, cross-platform, OpenGL terminal emulator

Alacritty - A fast, cross-platform, OpenGL terminal emulator

About

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.

Features

You can find an overview over the features available in Alacritty here.

Further information

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.

For everyone else, the detailed instructions to install Alacritty can be found here.

Requirements

  • OpenGL 3.3 or higher
  • [Windows] ConPTY support (Windows 10 version 1809 or higher)

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 guideline about contributing to Alacritty can be found in the CONTRIBUTING.md file.

FAQ

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.

IRC

Alacritty discussions can be found in #alacritty on freenode.

License

Alacritty is released under the Apache License, Version 2.0.