Alacritty Version 0.3.0 Release April 07, 2019

Table of Contents

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.

With this release, Alacritty has officially entered the beta stage – there are still a few missing features and bugs to be fixed, but it is already used by many as a daily driver.

This has been a big release, so a full history of the changes can be found in the change log.

Support for Windows has been added, including the new ConPTY API which will fix a lot of issues for users running Windows 10 1809 and above (you can enable it with the enable_experimental_conpty_backend in the config).

There are still some issues both in Alacritty and in the WinPTY/ConPTY backends which need to be smoothed out to make the experience on par with the other platforms, but it should already be usable as a daily driver for many.

One of the most requested features has been text reflow and it’s finally made its appearence in 0.3.0.

All text should now properly reflow both when shrinking and growing the terminal so no more content will be lost!

Zero width characters are not an uncommon occurrence in the terminal and with improper support this can lead to severe rendering issues and characters lingering around when they should have been cleared.

While this was challenging to fit into Alacritty’s storage model, we were able to implement this without taking any performance hits.

Since a terminal emulator is only rarely started from another terminal emulator, config errors and warnings would often stay hidden without giving anyone a chance to actually fix them.

As a solution, a message bar has been added to the bottom of the terminal which will log all warnings and errors and allow you to adjust your config file until everything’s working again.

Once all warnings and errors are resolved, the message bar should disappear automatically.

If you’ve been annoyed by having to copy URLs from Alacritty, it is now possible to pass URLs to a program whenever clicking on them. This should automatically open with your browser in the default config, but can be adjusted to use whichever program you like.

Figuring out how a terminal’s URL parser might understand text can be tough sometimes, so to make things a little easier, URLs will also get underlined when hovering above them.

Alacritty has previously missused the _ character to get temporary Underline support for the 0.1 release. After a long wait, Alacritty now properly reads the font metrics and draws a continuous line instead of rendering several independent characters.

Thanks to @net Alacritty now has a set of official icons which are distributed on all platforms.

Support for alternative keyboard layouts on macOS has been improved, fixing an issue where key bindings wouldn’t get triggered unless you’re using the qwerty layout.

Alacritty’s signal handling has improved, fixing a long standing bug which prevented Alacritty from closing after exiting the terminal.

All releases now come with an .msi installer for Windows, next to the portable version. This installer will also automatically add a context menu allowing you to open Alacritty in a specific directory from the explorer.

If these changes have gotten you excited to try out Alacritty (again?), you can find precompiled binaries for various systems on the github releases page.

Various package managers also distribute Alacritty, these are expected to be updated by their maintainers in the near future.

For everyone else, there are detailed instructions for compiling Alacritty from source in the installation guide.

Version 0.3.0 includes a few new configuration options which you can add to your own configuration file. The values listed here are the defaults which will be used when these options are not specified.

The changes here are only from 0.2.9 to 0.3.0, if you’re looking to migrate from older versions, it’s recommended to start with the default config and add your changes back to it.

It is now possible to set the starting position of a window using the window.position field:

window:

# Window position (changes require restart)

#

# Specified in number of pixels.

# If the position is not set, the window manager will handle the placement.

#position:

# x: 0

# y: 0



If you have troubles with the inverted selection colors, you can set a custom text or background color to override it:

colors:

# Selection colors

#

# Colors which should be used to draw the selection area. If selection

# background is unset, selection color will be the inverse of the cell colors.

# If only text is unset the cell text color will remain the same.

#selection:

# text: '0xeaeaea'

# background: '0x404040'



The keybindings section has also gotten a few new defaults. If you already have these set, you might want to consider using these new bindings instead. To unset a default keybinding, you can override it with the None action.

These are the new bindings specific to Linux/BSD/Windows:

key_bindings:

- { key: Add, mods: Control, action: IncreaseFontSize }

- { key: Minus, mods: Control, action: DecreaseFontSize }



These are the new bindings specific to macos:

key_bindings:

- { key: Add, mods: Command, action: IncreaseFontSize }



All targets have gotten some new default keybindings to help with navigating the scrollback history:

key_bindings:

- { key: Home, mods: Alt, chars: "\x1b[1;3H" }

- { key: End, mods: Alt, chars: "\x1b[1;3F" }

- { key: PageUp, mods: Alt, chars: "\x1b[5;3~" }

- { key: PageDown, mods: Alt, chars: "\x1b[6;3~" }



Of course it’s not possible to announce a new version of Alacritty without at least mentioning performance. There have not been any major changes to performance and all benchmarks of the vtebench suite are within margin of error compared to the 0.2.0 release (the results of the 0.2.0 benchmarks can be found here).

On X11 a bug with querying monitor information at startup has been fixed, this should significantly improve startup time on some systems.

Of course Alacritty isn’t finished yet and there are a lot more things left to do. So I’d like to point out some interesting things that are right around the corner and some bigger features which we might be able to look forward to in the future:

There’s a lot of demand for native clipboard support on Linux (especially with Wayland) and thanks to some great contributions it’s expected to land soon

There has been a lot of work done on automated benchmarking, which is a difficult task for a program relying on the GPU for rendering. Hopefully once this lands, Alacritty should be safe from accidental performance regressions

Reduction of input latency is one thing a lot of people have shown interest in and it seems like a great match for Alacritty

Some of our dependencies have recently caused some build failures on BSD. By adding FreeBSD to our CI process we’re hoping to make it a primary platform like Linux/macOS and Windows already are

Adopting fontkit will hopefully improve Alacritty’s font support while contributing to a standardized Rust font ecosystem at the same time

A lot more features, bug fixes and performance improvements

To my own surprise, we’ve actually managed to complete all the upcoming features from the 0.2.0 announcement. So let’s hope we can achieve that once again.

Fortunately Alacritty is blessed with a variety of contributors willing to take matters into their own hands and improve the project.

One outstanding contributor is @nixpulvis who I’m happy to announce has officially joined the team of collaborators after helping with Alacritty for years.

There have been many contributors helping with testing and troubleshooting issues and unfortunately it’s not possible to list all these essential people. However, I do want to give some special thanks to everyone who was involved since the 0.2.0 release:

Aaron Goodfellow

Aidan Epstein

Alexander Bulimov

Alexander Schlarb

Alex Purdy

Alex Touchet

Andrei-Marius Radu

Barret Rennie

Bastien Orivel

Bjorn Neergaard

Carlos Tuñón

Chris MacNaughton

Christian Duerr

Christian Rebischke

Cole Helbling

Daniel Eklöf

DarkDefender

David Hewitt

David Peter

Desuwa

dm1try

Do Duy

Dominic Evans

Elaina Martineau

Erik Berkun-Drevnig

F. Eugene Aumson

Fintan

Georgy Yakovlev

Gris Ge

Hellsenberg

Hirokazu Hata

Ilya Epifanov

Jason Shirk

Jeff Muizelaar

Joe Moon

Joe Wilm

Johannes

John Naylor

Jonathan Dahan

Jon Gjengset

kekePower

Kirill Chibisov

Kyle Rooker

Lado Tonia

Martin Sucha

Matthias Bussonnier

Matthias Krüger

Matt Keeler

Matt T. Proud

Micha Gorelick

Mihyaeru

Morton Fox

M. Stoeckl

Muhammad Talal Anwar

Nathan Lilienthal

Nathan West

Niclas Zeising

Niklas Claesson

nolanl

OJ Kwon

Philipp

praetorg

Rachel K

ray851107

Robert Günzler

Robert Martin Winterstein

Ross Smith II

RunningDroid

Ryan Morey

Sander van Harmelen

Simon Dahlberg

skliew

Starz0r

Steve Blundy

stfn

Tanuj

Tezkerek

Tim McNamara

Tobias Kortkamp

Tobias Sette

trimental

Vineeth Sagar

VoidNoire

Zac Pullar-Strecker

Since you’ve made it this far, it’s also time to thank you for reading through this announcement. If you have any issues, or questions, feel free to create a new issue on github or join us in our #alacritty IRC channel on freenode.

Discussions about this announcement can also be found on r/rust, r/linux, r/programming and Hacker News.