Alacritty Version 0.3.0 Release

April 07, 2019

Table of Contents

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.

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.

Notable Changes

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

Windows support

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.

Text reflow

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

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.

Error/Warning message bar

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.

Clickable URLs

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.

Real underline support

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.

An official icon

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

icon1 icon2 icon3

Alternate keyboard layouts on macOS

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.

Signal handling

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

Windows MSI installer

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.

Getting Alacritty 0.3.0

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.

Config Migration

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~" }

Performance

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.

Upcoming Features

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:

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.

Contributors

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:

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.