Эмулятор терминала alacritty - igancev.ru blog

Эмулятор терминала alacritty

Логотип alacritty

Самый быстрый терминальный эмулятор, как заявляют его разработчики. Высокая скорость работы достигается использованием графического процессора для рендеринга.

Программа кросплатформенная, и доступна для macOS, Linux, BSD и Windows. Основная ее цель направлена на простоту и производительность. Код открытый, лицензируется в соответствии с Apache License 2.0.

Скриншот эмулятора терминала alacritty

Alacritty по умолчанию использует графический сервер Wayland на системах, которые его поддерживают. Но при желании можно переключить его в режим работы через прослойку XWayland.

Установка

Проблем с установкой возникнуть ни к кого не должно, программа представлена в официальных или пользовательских репозиториях самых разных linux дистрибутивах, а также других ОС.

На Arch Linux можно установить из pacman:

sudo pacman -S alacritty

На Ubuntu необходимо предварительно добавить PPA репозиторий:

sudo add-apt-repository ppa:mmstick76/alacritty
sudo apt install alacritty

Инструкции по установке на другие дистрибутивы, а также по сборке из исходников, есть на странице репозитория github.

Критерии выбора

Меня данный терминал зацепил своей легковесностью, и современностью. Благодаря своей простоте он отлично вписывается в идеологию Arch Linux, и минималистичный i3wm. Он не имеет ничего лишнего. Никаких панелей, кнопок. В отличие от старинного rxvt-unicode (в котором я так и не смог переопределить хоткеи), alacritty имеет прекрасный конфиг в современном и читабельном формате YAML, с примерами и описаниями. Также я сразу приметил его быстродействие, но, честно сказать, на глаз не заметил никакой разницы с другими эмуляторами в работе (может кстати из - за встроенной графики).

Ранее, в других графических окружениях (Gnome, Badgie) я пользовался эмулятором терминала Tilix, который и сейчас считаю неплохим решением. Tilix достаточно функционален, имеет много фич, таких как рабочие столы, деление рабочей области на подтерминалы, кучу GUI настроек. Но из - за своей нагроможденности, он не особо смотрелся в i3. И кажется Alacritty его противоположность. Имея все необходимое, будучи минималистичным, он не содержит ничего. Но в связке в тайлинговым оконным менеджером i3, мы получаем не деление самого окна программы на подтерминалы как в Tilix, а деление рабочих пространств i3 отдельными легковесными окнами, которые являются отдельными экземплярами приложения. Меняется концепция использования, оконный менеджер и терминальный эмулятор дополняют друг друга.

Конфигурация

Alacritty достаточно гибок в плане конфигурации. Нам необходимо в домашнюю директорию скопировать файл конфигурации ~/.config/alacritty/alacritty.yml:

cp /usr/share/doc/alacritty/example/alacritty.yml ~/.config/alacritty/alacritty.yml

Формат YAML достаточно читабелен. Все параметры конфигурации подробно описаны, примеры возможных значений приведены. Большинство параметров применяются сразу же после сохранения файла, но некоторые требуют перезагрузки программы. Я прокомментирую наиболее важные на мой взгляд параметры.

Шрифт

Мне нравится шрифт Hack, который я установил на этапе первичной настройки Arch Linix.

# Font configuration (changes require restart)
font:
  # The normal (roman) font face to use.
  normal:
    family: Hack
    # Style can be specified to pick a specific face.
    style: Regular

  # The bold font face
  bold:
    family: Hack
    # Style can be specified to pick a specific face.
    style: Bold

  # The italic font face
  italic:
    family: Hack
    # Style can be specified to pick a specific face.
    style: Italic
  size: 7.0

Цветовая схема

Готовый блок конфига для цветовой схемы можно взять на wiki странице гитхаба репозитория alacritty, где уже реализованы более 50 популярных цветовых схем, существующих вне контекста каких - либо программ, и и используемых как цветовые схемы в редакторах кода, и иных приложениях. Мне приглянулась тема Iceberg:

# Colors (Iceberg)
colors:
  # Default colors
  primary:
    background: '#161821'
    foreground: '#d2d4de'

  # Normal colors
  normal:
    black:   '#161821'
    red:     '#e27878'
    green:   '#b4be82'
    yellow:  '#e2a478'
    blue:    '#84a0c6'
    magenta: '#a093c7'
    cyan:    '#89b8c2'
    white:   '#c6c8d1'

  # Bright colors
  bright:
    black:   '#6b7089'
    red:     '#e98989'
    green:   '#c0ca8e'
    yellow:  '#e9b189'
    blue:    '#91acd1'
    magenta: '#ada0d3'
    cyan:    '#95c4ce'
    white:   '#d2d4de'

Прозрачность

Установим прозрачность, значение от 0.0 до 1.0:

background_opacity: 0.85

Горячие клавиши

Горячие клавиши можно переопределить в секции key_bindings. Мне нужно лишь привычное мне поведение копирования/вставки привычными Ctrl + C и Ctrl + V вместо Ctrl + Shift + C и Ctrl + Shift + V по умолчанию:

key_bindings:
  - { key: V, mods: Control, action: Paste}
  - { key: C, mods: Control, action: Copy }

Если у Вас macOS, то вместо Control указываем Command.

В целом можно переопределить многое, в дефолтном конфиге в комментариях все подробно описано.


Проблемы

Все былые проблемы с alacritty, которые доставляли лично мне некоторые неудобства, успешно были решены спустя какое - то время.

1) При подключении по ssh к удаленным серверам, невозможно очистить вывод консоли. (РЕШЕНО)

Привычное сочетание клавиш Ctrl + L не очищает экран терминала, а при явном вводе команды clear в консоль, выдается ошибка:

'alacritty': unknown terminal type.

Также, из - за этой же причины, не работают некоторые программы, такие как mc, Midnight Commander. При попытке запуска видим ошибку:

Unknown terminal: alacritty Check the TERM environment variable.
Also make sure that the terminal is defined in the terminfo database.
Alternatively, set the TERMCAP environment variable to the desired
termcap entry.
Решение

Гугл особо мне в этом не помог, но решение нашлось в конфиге самого alactitty. Необходимо в ~/.config/alactitty/alactitty.yml раскомментировать блок env и переменную TERM в нем, установив значение term-256color:

env:
    TERM: xterm-256color

После чего проблема уходит. Насколько я понял, эмулятор терминала данной переменной сообщает оболочке “кто он такой”. И оболочка, не зная о таком терминале (фактическое отсутствие alacritty на удаленной машине в /usr/share/terminfo/*) и о его возможностях, ведет себя примитивно, не давая банально даже очистить консоль.

2) Проблемы с масштабированием на разных мониторах в i3wm (РЕШЕНО)

Данный вопрос пока что еще открыт. Из - за различной плотности пикселей двух используемых мною мониторов, при открытии alacritty, на одном из них текст слишком мелкий, на втором нормальный. Это при том, что разрешение на обоих одинаковое, 1920px по ширине. В ~/.Xresources при этом выставлено значение Xft.dpi: 96. В результате на дополнительном мониторе сразу после открытия очередного терминала приходится вручную через Ctrl + увеличивать масштаб. И, соответственно, если переместить окно на другой монитор, то обратно уменьшать. Если кто знает как побороть проблему - буду раз помощи :-)

Решение

Решение нашлось случайно, простым копированием значения конфига WINIT_X11_SCALE_FACTOR: "1" с репозитория на гитхабе https://github.com/dikiaap/dotfiles , чему очень рад. К слову, там много различных интересных конфигов.

env:
    WINIT_X11_SCALE_FACTOR: "1"