Alacritty - ArchWiki

Jump to content

# Alacritty

From ArchWiki

Alacritty is a simple, GPU-accelerated terminal emulator written in Rust. It supports scrollback, truecolor, copy/paste, clicking on URLS, and custom key bindings.

## Installation

Install the alacritty package or alacritty-gitAUR for the development version.

## Configuration

Alacritty searches for a configuration file at the following places in this order:

- `$XDG_CONFIG_HOME/alacritty/alacritty.yml`
- `$XDG_CONFIG_HOME/alacritty.yml`
- `$HOME/.config/alacritty/alacritty.yml`
- `$HOME/.alacritty.yml`

Copy the example configuration file at `/usr/share/doc/alacritty/example/alacritty.yml` to one of those places and uncomment the settings you want to change. Most settings take effect as soon as you save the file.

### Colors

See the upstream wiki for a list of available color schemes. If your preferred color scheme is on the list, paste the provided code into your configuration file.

### Font

If you do not want to use your system’s default font, you can specify a different font by changing the following lines:

    font:
      normal:
        family: monospace
        style: Regular

      bold:
        family: monospace
        style: Bold

      italic:
        family: monospace
        style: Italic

      bold_italic:
        family: monospace
        style: Bold Italic

      size: 11

Substitute `monospace` with a font name from the output of

    $ fc-list : family style

Note that some fonts do not provide an `Italic` style but an `Oblique` style instead.

## Tips and tricks

### Spawn new instance in same directory

Add the following lines to your configuration file to spawn a new instance of Alacritty in the current working directory by pressing `Ctrl+Shift+Enter`:

    key_bindings:
      - { key: Return,   mods: Control|Shift, action: SpawnNewInstance }

### "user@host:cwd" in window title bar

The window title bar shows "Alacritty" unlike other terminal emulators under Arch, which by default show "user@host:cwd". See FS#70752.

If you want the Arch default behavior to apply to all your users in Alacritty, you need to edit your `/etc/bash.bashrc` file.

Find the case statements which sets the `$PROMPT_COMMAND` for other terminals:

    case ${TERM} in

      xterm*|rxvt*|Eterm|aterm|kterm|gnome*)
         PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'

        ;;
      screen*)
        PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033_%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/\~}"'
        ;;
    esac

Then edit the line `xterm*|rxvt*|Eterm|aterm|kterm|gnome*)` to add `alacritty*` so that it reads `xterm*|rxvt*|Eterm|alacritty*|aterm|kterm|gnome*)`.

### Vi mode and copy/paste

The vi mode allows moving around Alacritty's viewport and scrollback using the keyboard. By default you can toggle it using `Ctrl+Shift+Space`. To copy, you can either use a mouse to select and press `Ctrl+Shift+c`, or enter Vi mode, start a selection using `v`, move around with `hjkl` like in vim, and copy the selection with `y`. To paste, press `Ctrl+Shift+v`. To copy/paste to/from X clipboard, you can use a mouse selection to copy and a middle mouse click to paste.

## Troubleshooting

### Mouse not working properly in Vim

Add `ttymouse=sgr` to your `.vimrc` or switch to Neovim. Also see this issue.

### Transparent border in dwm

With dwm, alacritty's borders become transparent. Adding this line to `drw.c` in the dwm source directory and recompiling fixes the issue:

    if (!XftColorAllocName(...))
        die("error, cannot allocate color '%s'", clrname); /* Find this line */
    dest->pixel |= 0xff << 24; /* Add this line */

### Terminal functionality unavailable in remote shells

When connecting to a remote system from an Alacritty terminal, for instance over SSH, it can occur that the system does not have an entry for Alacritty in its terminfo database (`/usr/share/terminfo/a/alacritty*`). Therefore, all interactive terminal functionality does not work. This can be fixed by copying the terminfo for Alacritty to the remote server, as described in termite#Terminal issues with SSH.

On the local host, using Alacritty:

    $ infocmp > alacritty.terminfo  # export Alacritty's Terminfo
    $ scp alacritty.terminfo user@remote-host:~/  # or any other method to copy to the remote host

On the remote host, in the directory where you copied `alacritty.terminfo`:

    $ tic -x alacritty.terminfo  # import Terminfo for current user
    $ rm alacritty.terminfo  # optional: remove Terminfo file

Here is a one-liner version of the process above:

    $ infocmp | ssh "$user@$host" 'tic -x /dev/stdin'

Note: After this, you will need to start a new SSH session to have the remote shell load the new Terminfo.

Alternatively, one can set the value of `TERM` in the configuration to `xterm-256color` instead of the default `alacritty`:

    env:
      TERM: xterm-256color

### Requires hardware supporting GLSL 3.30

You can force Alacritty to use software rendering by launching it with the environment variable `LIBGL_ALWAYS_SOFTWARE=1` [1]:

    $ LIBGL_ALWAYS_SOFTWARE=1 alacritty

### No title bar on Wayland GNOME

When using Wayland GNOME the title bar could be empty and with strange icons [2].

The factual accuracy of this article or section is disputed.

Reason: Unsetting `WAYLAND_DISPLAY` runs the application with XWayland rather than native Wayland. (Discuss in Talk:Alacritty)

The workaround is to launch Alacritty with an empty `WAYLAND_DISPLAY` environment variable:

    $ WAYLAND_DISPLAY= alacritty

The factual accuracy of this article or section is disputed.

Reason: Files under `/usr/share` should not be edited, they will be overwritten when the package is updated. (Discuss in Talk:Alacritty)

It is also possible to replace the two Exec lines in `/usr/share/applications/Alacritty.desktop` with this:

    Exec=env WAYLAND_DISPLAY= alacritty

### Different font size on multiple monitors

By default, Alacritty attempts to scale fonts to the appropriate point size on each monitor based on the `Device pixel ratio`. On some setups with multiple displays, this behavior can result in vastly different physical sizes [3], [4].

To view the existing device pixel ratio values for each monitor, run `alacritty -v`, move the child window to each monitor, and pay attention to the reported `Device pixel ratio` in the parent window.

Forcing a constant device pixel ratio using the `WINIT_X11_SCALE_FACTOR` environment variable may be sufficient to fix the different font size issue:

    $ WINIT_X11_SCALE_FACTOR=1.66 alacritty

Category:

- Terminal emulators

Hidden category:

- Pages or sections flagged with Template:Accuracy