A cross-platform, OpenGL terminal emulator.


Alacritty Logo

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

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


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.


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

Further information


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.


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


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


On Windows, the config file should be located at:



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 discussions can be found in #alacritty on freenode.


Alacritty is released under the Apache License, Version 2.0.

  • Glutin 0.18 upgrade

    Glutin 0.18 upgrade

    Fixes #1756 Fixes #1525 Fixes #1509 Fixes #1428 Fixes #1414 Fixes #1382 Fixes #1358 Fixes #1345 Fixes #1257 Fixes #1146 Fixes #964 Fixes #952 Fixes #210 Fixes #71

    This compiles and after reviewing looks sane enough. However I am running into an issue where the text output of the terminal only shows up on the lower left quadrant of the whole window.

    I figured I could go ahead and open this up as a work in progress to get some feedback and suggestions for what could have gone wrong.

    opened by mkeeler 226
  • Update to winit/glutin EventLoop 2.0

    Update to winit/glutin EventLoop 2.0

    This takes the latest glutin master to port Alacritty to the EventLoop 2.0 rework.

    This changes a big part of the event loop handling by pushing the event loop in a separate thread from the renderer and running both in parallel.


    • [x] Resize issues (https://github.com/jwilm/alacritty/pull/2438#issuecomment-505518232)
    • [x] run_return support for macOS (https://github.com/rust-windowing/winit/issues/1005)
    • [x] Resizing extremely slow
    • [x] Font size change not updating pty size
    • [x] Message bar does not update PTY size properly
    • [x] Incorrect window dimensions when moving Alacritty between different DPI monitors
    • [x] Font size not updating when moving Alacritty between different DPI monitors
    • [x] Clean up code / resolve remaining TODOs
    • [x] Incorrect startup DPI on X11 (https://github.com/rust-windowing/winit/issues/998) -> ~~:zap: Still broken when spawning a floating window in i3~~ -> Workaround implemented
    • [x] Make sure before merging all the linked issues have change log entries
    • [x] Clear errors on message bar reload

    Fixes #2796. Fixes #2694. Fixes #2643. Fixes #2625. Fixes #2618. Fixes #2601. Fixes #2564. Fixes #2456. Fixes #2438. Fixes #2334. Fixes #2254. Fixes #2217. Fixes #1789. Fixes #1750. Fixes #1125.

    C - waiting on author 
    opened by chrisduerr 200
  • Implementation of scrollback

    Implementation of scrollback

    The Grid<T> is now a view into a region (I called it the 'active region') of a VecDeque. When new lines are added, they are pushed onto the back of the queue, and once the scrollback buffer is considered 'full', then old lines are popped off the front of the queue. This seems to work rather well since, unlike a Vec, elements don't need to be reshuffled around very often.

    Of course, as discussed in #124 there are a few things that need to be fixed before I'd consider this 'ready':

    • [x] configurable max scrollback length
    • [ ] write new tests
    • [x] fix existing ref tests
    • [ ] measure performance impact (it seems fine but some numbers would be more reassuring)
    • [x] fix out of bounds errors on resize
    opened by neon64 124
  • Windows Support

    Windows Support

    Support Windows via the Linux subsystem

    enhancement S - render S - font D - hard S - I/O and PTY H - windows 
    opened by jwilm 105
  • no method named `set_urgent` found for type `window::Window` in the current scope

    no method named `set_urgent` found for type `window::Window` in the current scope

    Which operating system does the issue occur on?

    • NetBSD 8.99.48 NetBSD 8.99.48 (GENERIC) amd64
    • Using X11 from base

    While running cargo build in the checkout at commit 84aca672964e29b5b4503b7da7bc34fc395f08ab, I get this error:

       Compiling copypasta v0.6.0 (/home/ng0/code/re-src/rust_crates/alacritty/copypasta)
    error[E0599]: no method named `set_urgent` found for type `window::Window` in the current scope
       --> alacritty_terminal/src/display.rs:493:29
    493 |                 self.window.set_urgent(is_urgent);
        |                             ^^^^^^^^^^
       ::: alacritty_terminal/src/window.rs:59:1
    59  | pub struct Window {
        | ----------------- method `set_urgent` not found for this
        = help: items from traits can only be used if the trait is implemented and in scope
        = note: the following trait defines an item `set_urgent`, perhaps you need to implement it:
                candidate #1: `winit::os::unix::WindowExt`
    error: aborting due to previous error
    For more information about this error, try `rustc --explain E0599`.
    error: Could not compile `alacritty_terminal`.
    To learn more, run the command again with --verbose.
    C - waiting on author B - build failure H - bsd 
    opened by ghost 84
  • Implement scrollback

    Implement scrollback

    Since you got so much pushback on the scrollback support, and mentioned possibly implementing it, I'm opening this as a tracking issue.

    (ps: I also really want scrollback w/o tmux).

    enhancement S - terminal 
    opened by theduke 69
  • Add proper underline and strikethrough support

    Add proper underline and strikethrough support

    Support for strikethrough has been added by inserting and removing a STRIKE_THROUGH flag on the cell.

    Now all strikethrough and underline drawing is also done through the rectangle renderer. So no glyphs are used to render underlines and strikethrough. The position is taken from the font metrics and should be accurate for linux, however is not yet tested on macos.

    It works by checking the underline state for each cell and then drawing from the start until the last position whenever an underline ended. This adds a few checks even if no underline is rendered but I was not able to measure any significant performance impact.

    Fixes jwilm/alacritty#806. Fixes jwilm/alacritty#31.



    • [x] Account for font and glyph offsets
    • [x] Account for window padding
    • [x] Test (and potentially fix) DPI
    • [x] Refactor code and extract it into separate files
    • [x] Add Windows support
    opened by chrisduerr 67
  • Alacritty doesn't display emoji

    Alacritty doesn't display emoji

    I know, I know.

    Anyway, iTerm 2 and Terminal.app are both able to display emoji:


    but alacritty isn't:


    B - bug S - font 
    opened by pikajude 63
  • Add windows font fallbacks

    Add windows font fallbacks

    This is the first step for #3082

    At the moment Alacritty on windows does not use any font fallbacks, so glyphs for emoji cannot be found. I suspect there are many other cases where lack of font fallbacks causes glyphs to be missing.

    By adding font fallbacks, we now can rasterize (downsampled) greyscale emoji. They don't look amazing, but hey, something is better than nothing!

    The remaining step to add full emoji support is to implement color font rasterizing, which will be a much bigger change and might need upstream support in the dwrote crate.

    Perhaps others may have ideas how to improve the render quality of these greyscale emojis too.

    If this PR looks like the right direction to be heading, there's a couple of things for me to finish off:

    • [x] Remove hard-coding of "en-us" locale
    • [x] Try to find fallback font in loaded fonts rather than always creating fresh

    Possible bugs from testing:

    • [x] ~~Figure out how to size emoji correctly - downsample?~~
    • [x] ~~Investigate emoji paste issues?~~ (Upstream bug https://github.com/microsoft/terminal/issues/1503)
    • [x] ~~Investigate occasional missing glyph~~ (Sounds a lot like upstream bug https://github.com/microsoft/terminal/issues/386)





    Fixes #3215.

    opened by davidhewitt 62
  • Tabs support in the terminal

    Tabs support in the terminal

    For bug reports, the following information can help speed up the process. Please describe the bug that you have found and what you would expect to happen instead.


    OS: Linux/BSD/macOS/Windows Version: alacritty --version output Linux/BSD: X11/Wayland, DE or Compositor and WM Windows: WinPTY/ConPTY (see alacritty -v output)


    Crashes: STDERR, STDOUT Font/Terminal size: alacritty -vv Keyboard and bindings: alacritty --print-events

    F - wontfix 
    opened by narain1 61
  • Try running in 30bpp (10-bit color) if default fails

    Try running in 30bpp (10-bit color) if default fails

    Related to #4703. Tries setting the color bits to 30 before failing in case 10-bit color is set.

    Not the biggest fan of that chain of or_else, but it's not that bad. If you have any idea for improvement, let me know.

    opened by abdelq 2
  • Clean up and abstract shader creation code

    Clean up and abstract shader creation code

    Shader creation related codes are moved to a separated file as a lifetime-managed ShaderProgram in order to reduce complexity and redundancy in both rectangle and text renderer.

    This also makes creating new shaders much easier if needed in the future.

    opened by oxalica 1
  • Hint post processing crash

    Hint post processing crash

    Alacritty with the following config crashes when hovering over the ) character.

       - regex: "[^/ ]"
         action: Paste
         post_processing: true
           enabled: true
           mods: None

    It only crashes with post processing enabled and I get no relevant output with -vvv or --print-events.

    alacritty 0.9.0 (fed349aa) on Linux + Wayland (sway)

    B - bug D - easy P - high B - crash 
    opened by johannesneyer 0
  • [Feature request] Special handling of Block Elements (U+2580 - U+259F)

    [Feature request] Special handling of Block Elements (U+2580 - U+259F)


    Block element characters are used for terminal fill and shading. https://unicode-table.com/en/blocks/block-elements/

    The most common characters are:

    • (U+2588) Full Block
    • (U+2584) Lower Half Block
    • (U+2580) Upper Half Block
    • ▗▘▙▚▛▜▝▞▟ (U+2596 - U+259F) Terminal graphic characters

    Currently, they simply use the font's glygh for rendering, which cannot accurately fill a whole cell (or some borders) and instead leave a thin 0.5-1px border. The following code should print a 2x2 full block, but currently it doesn't. There's a thin gap between adjacent cell (both between columns and rows) printf '██\n██\n'


    I tried all installed FreeType fonts including Noto Sans Mono, Free Mono and Sarasa Mono but none of them work. So I think it's not an issue of individual fonts, but some limitations of FreeType itself.


    Specially handle these block-like characters to make them accurately fully fill cell (or borders). There are also many terminals did so, including:

    • GNOME vte: https://github.com/GNOME/vte/commit/154abade902850afb44115cccf8fcac51fc082f0
    • Kitty: https://github.com/kovidgoyal/kitty/commit/e95c789d4bf6e52587b39ff10f419dd4442e92dd
    • Konsole: Enabled special treatment by default. Can be disabled by a setting Use line characters contained in font in Appearance (then it behaves the same as current alacritty).

    Affected programs

    Programs using these characters to print ASCII art, graphics, or indicators. Some users also use them in shell prompts.

    neofetch: nixos


    OS: Linux Version: Current master cf35a2019162c6055e4a4c152976a424ba10869d Linux: X11, KDE

    enhancement help wanted S - font 
    opened by oxalica 2
  • Implement hyperlink terminal escapes

    Implement hyperlink terminal escapes

    Fix #922

    The definition of this escape sequence follows https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

    What are done in this PR:

    • Hyperlink escape handling
    • Customizable inactive and active styles.
      • Default: Underline for inactive links, DoubleUnderline for active (hovered) links.
    • Mouse hover icon and click to open, with customizable launcher commands (just like hints.enabled.command).
    • Optional modifier keys required for activate and click action (just like hints.enabled.mouse.mods)
      • Default: None.
    • Preview for link target URI at the bottom, with customizable fg/bg color.

    Test commands:

    # Simple
    printf '\e]8;;http://example.com\aThis is a link\e]8;;\a\n'
    # Complex (with hyperlink id)
    printf '\e]8;id=ddg;https://ddg.gg\e\\[Go du]\e]8;;\e\\\e]8;;https://example.com\e\\Go example\e]8;;\e\\\e]8;;https://github.com\e\\Go github\e]8;;\e\\\n\e]8;id=ddg;https://ddg.gg\e\\[cking]\e]8;;\e\\\n'

    Screenshot: (outdated) alacritty-hyperlink3

    opened by oxalica 15
  • Occasional state where most-recent keypress is repeated indefinitely

    Occasional state where most-recent keypress is repeated indefinitely


    OS: Arch Linux Version: 0.9.0 (fed349aa) Sway window manager (Wayland)


    Here's a log of "alacritty --print-events" from a short session exhibiting the behavior below.


    The error: Every few days, alacritty gets "stuck" in a mode where the most recent keypress repeats indefinitely, as though I were holding the key down. If I type a command like "echo", there's a short pause, and then the "o" is repeated as though I were holding it down. If I type "echo" and hit return quickly, the command is run, and then the return is repeated. If my most-recent keypress is a Command modified key like C-k, the C-k is run correctly (killing the rest of the line), then the "k" is repeated.

    Quitting alacritty doesn't fix it: the behavior continues when I start it again. I usually use tmux, but quitting tmux doesn't help, it keeps happening. Only rebooting the machine fixes the problem, until it happens again a few days later.

    Hope this is helpful! Happy to help with further debugging.

    opened by girzel 5
  • Vi mode search does not start at cursor

    Vi mode search does not start at cursor

    When a vi mode search is started while the bottommost line on the buffer is filled, a search will move the vi cursor causing the search to start one line below the original vi cursor position. This can cause the search to wrap around the buffer, confusing the user (me in this case).

    B - bug B - regression S - search S - vi mode 
    opened by chrisduerr 0
  • Some Key Bindings Not Working on Linux

    Some Key Bindings Not Working on Linux

    The following keybindings work for me on macOS, but do not work on Linux (popOS):

      - { key: LBracket, mods: Command|Shift, chars: "\x02\x70" }
      - { key: RBracket, mods: Command|Shift, chars: "\x02\x6e" }

    The { symbol is typed into my prompt but the given chars are not triggered.

    Does anyone know why only some of the key bindings aren't working?


    OS: Linux (popOS) Version: 0.9.0 Linux/BSD: not sure

    opened by joshmedeski 3
  • Font size selected at random

    Font size selected at random


    OS: Ubuntu 20.04 Version: alacritty 0.10.0-dev Linux/BSD: i3


    I have the alacritty config file in ~/.config/alacritty/alacritty.yml with the following font set-up:

    # Font configuration
      # Point size
      size: 10.0

    All other font configuration options are commented out. I verified that alacritty is indeed reading this config file using the -vvv flag.

    However, whenever I open a new terminal window the font seems to be selected at random. Below a picture of two terminals opened one right after the other.

    [Alacritty termnials]1


    $ alacritty -vv
    Created log file at "/tmp/Alacritty-163659.log"
    [2021-08-24 14:25:11.379650896] [INFO ] [alacritty] Welcome to Alacritty
    [2021-08-24 14:25:11.386809772] [INFO ] [alacritty] Configuration files loaded from:
    [2021-08-24 14:25:12.053874012] [DEBUG] [crossfont] Loaded Face Face { ft_face: Font Face: Book, load_flags: TARGET_LIGHT, render_mode: "Normal", lcd_filter: 1 }
    [2021-08-24 14:25:12.058454840] [DEBUG] [alacritty] Estimated DPR: 1.6666666666666667
    [2021-08-24 14:25:12.058530275] [DEBUG] [alacritty] Estimated window size: None
    [2021-08-24 14:25:12.058547559] [DEBUG] [alacritty] Estimated cell size: 13 x 27
    [2021-08-24 14:25:13.831872156] [INFO ] [alacritty] Device pixel ratio: 1.6666666666666667
    [2021-08-24 14:25:13.994206811] [INFO ] [alacritty] Initializing glyph cache...
    [2021-08-24 14:25:14.006006725] [DEBUG] [crossfont] Loaded Face Face { ft_face: Font Face: Book, load_flags: TARGET_LIGHT, render_mode: "Normal", lcd_filter: 1 }
    [2021-08-24 14:25:14.026958466] [DEBUG] [crossfont] Loaded Face Face { ft_face: Font Face: Bold, load_flags: TARGET_LIGHT, render_mode: "Normal", lcd_filter: 1 }
    [2021-08-24 14:25:14.037135272] [DEBUG] [crossfont] Loaded Face Face { ft_face: Font Face: Book, load_flags: NO_BITMAP | TARGET_LIGHT, render_mode: "Normal", lcd_filter: 1 }
    [2021-08-24 14:25:14.050159534] [DEBUG] [crossfont] Loaded Face Face { ft_face: Font Face: Bold, load_flags: NO_BITMAP | TARGET_LIGHT, render_mode: "Normal", lcd_filter: 1 }
    [2021-08-24 14:25:14.183013146] [INFO ] [alacritty] ... finished initializing glyph cache in 0.188707227s
    [2021-08-24 14:25:14.183202861] [INFO ] [alacritty] Cell size: 13 x 27
    [2021-08-24 14:25:14.183257611] [INFO ] [alacritty] Padding: 0 x 0
    [2021-08-24 14:25:14.183294042] [INFO ] [alacritty] Width: 800, Height: 600
    [2021-08-24 14:25:14.188775376] [INFO ] [alacritty] PTY dimensions: 22 x 61
    [2021-08-24 14:25:14.205643966] [INFO ] [alacritty] Initialisation complete
    [2021-08-24 14:25:14.223490927] [DEBUG] [alacritty_terminal] New num_cols is 73 and num_lines is 18
    [2021-08-24 14:25:14.223650326] [INFO ] [alacritty] Padding: 0 x 0
    [2021-08-24 14:25:14.223677142] [INFO ] [alacritty] Width: 956, Height: 507
    opened by ldesousa 6
  • memory usage

    memory usage

    What is alacritty's RSS expected to be?

    If I open a new terminal and run top, RSS is 54MB, but if I then hold ctrl- (top still running) until min font size is reached, then hit ctrl+ to restore font size, it's 165MB, and faffing about with zoom like this for a couple of minutes brought it to 375MB.


    OS: Linux Ubuntu 20.04LTS x64 Version: alacritty 0.10.0-dev (62a1fad5) Linux/BSD: X11 dwm

    B - bug 
    opened by TojNALvViV 5
A terminal for a more modern age

Terminus is a highly configurable terminal emulator, SSH and serial client for Windows, macOS and Linux Integrated SSH client and connection manager I

Eugene 19.3k Sep 16, 2021
Cross-platform, fast, feature-rich, GPU based terminal

kitty - the fast, feature-rich, cross-platform, GPU based terminal See https://sw.kovidgoyal.net/kitty/ To ask questions about kitty usage, use either

Kovid Goyal 12.2k Sep 16, 2021
As easy as /aitch-tee-tee-pie/ 🥧 Modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins more. https://twitter.com/httpie

HTTPie: human-friendly CLI HTTP client for the API era HTTPie (pronounced aitch-tee-tee-pie) is a command-line HTTP client. Its goal is to make CLI in

null 52k Sep 15, 2021
Terminal session recorder 📹

Note: This is README for development branch. See the version for latest stable release. asciinema Terminal session recorder and the best companion of

asciinema 9.6k Sep 22, 2021
A cat(1) clone with wings.

A cat(1) clone with syntax highlighting and Git integration. Key Features • How To Use • Installation • Customization • Project goals, alternatives [中

David Peter 29.5k Sep 24, 2021
A terminal built on web technologies

For more details, head to: https://hyper.is Project goals The goal of the project is to create a beautiful and extensible experience for command-line

Vercel 36.8k Sep 21, 2021
:rocket::star: A Zsh prompt for Astronauts

?? ⭐ Spaceship ZSH Zsh prompt for Astronauts. Website | Install | Features | Options | API Built with ❤︎ by Denys Dovhan and contributors Spaceship is

Denys Dovhan 15.2k Sep 16, 2021
 OS X command line tools for developers – The ultimate tool to manage your Mac. It provides a huge set of command line commands that automatize the usage of your OS X system.

Mac CLI  macOS command line tools for developers ⭐ Now with modularity and plugins! You can check the plugins folder: /mac-cli/plugins Contributions

Gabriel Guarino 8.1k Sep 21, 2021
Glances an Eye on your system. A top/htop alternative for GNU/Linux, BSD, Mac OS and Windows operating systems.

Glances - An eye on your system Summary Glances is a cross-platform monitoring tool which aims to present a large amount of monitoring information thr

Nicolas Hennion 19.2k Sep 19, 2021
A terminal spreadsheet multitool for discovering and arranging data

VisiData v2.4 A terminal interface for exploring and arranging tabular data. VisiData supports tsv, csv, sqlite, json, xlsx (Excel), hdf5, and many ot

Saul Pwanson 4.2k Sep 23, 2021
Git-integrated backup tool for macOS and Linux devs.

shallow-backup shallow-backup lets you easily create lightweight backups of installed packages, applications, fonts and dotfiles, and automatically pu

Aaron Lichtman 786 Sep 17, 2021
A new type of shell

README Nushell A new type of shell. Status This project has reached a minimum-viable product level of quality. While contributors dogfood it as their

Nushell Project 15.9k Sep 24, 2021
💡 CLI tool to input and store your ideas without leaving the terminal

eureka eureka is a CLI tool that allows you to quickly write down an idea using your preferred editor, and then have the idea committed and pushed to

Simon Egersand 391 Sep 19, 2021
A Terminal Client for MySQL with AutoCompletion and Syntax Highlighting.

mycli A command line client for MySQL that can do auto-completion and syntax highlighting. HomePage: http://mycli.net Documentation: http://mycli.net/

dbcli 9.9k Sep 19, 2021
Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON

What is Miller? Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON. Build status License: BSD2 Docs

John Kerl 4.4k Sep 22, 2021
Move files and directories to the trash

Move files and folders to the trash Works on macOS (10.12+), Linux, and Windows (8+). Note: The Linux implementation is not very good and not maintain

Sindre Sorhus 2.2k Sep 15, 2021
GitHub’s official command line tool

GitHub CLI gh is GitHub on the command line. It brings pull requests, issues, and other GitHub concepts to the terminal next to where you are already

GitHub CLI 25.5k Sep 24, 2021
Control iTunes via your terminal 🎶

itunes-remote Control iTunes via your terminal ?? Using JXA via osascript via Node.js. Requirements Node.js (v0.12.7 or greater) Mac OS X (Yosemite 10

Michael Kühnel 411 Sep 3, 2021
Command-line tool that instantly fetches Stack Overflow results when an exception is thrown

rebound Rebound is a command-line tool that instantly fetches Stack Overflow results when an exception is thrown. Just use the rebound command to exec

Jonathan Shobrook 3.7k Sep 19, 2021