Alacritty — быстрый и минималистичный терминальный эмулятор с поддержкой ускорения через GPU. Я попробовал много разных терминалов. Меня в принципе устраивал и Konsole, но он объективно подтормаживает и трудно кастомизируется. Из современных я пробовал Ghostty, Kitty, Wezterm, но у них всех недостатки. Они тянут слишком много зависимостей, а также запускают скрипты на Python или Lua. В Alacritty же нет ничего лишнего. И отдельно напишу, что он поддерживает более стабильный (как покосившийся сарай, который, тем не менее, падать не спешит) X.Org. Единственным его недостатком является отсутствие лигатур.
Установка
sudo pacman -S alacritty
Так же советую поставить темы для него:
sudo pacman -S alacritty-theme-git
Для этого должен быть добавлен репозиторий archlinuxcn
. Также темы можно поставить из AUR.
Вручную:
git clone https://github.com/alacritty/alacritty-theme ~/.config/alacritty/themes
За быстроту приходиться платить отсутствием функционала. В этом эмуляторе терминала нет даже вкладок, поэтому потребуется мультиплексер — программа, которая может разделять экран, запуская в нём несколько сессий шелла. Обычно для этого используют tmux, но он всем давно приелся и не лишен недостатков, иначе бы не появился zellij. Ставим последний:
sudo pacman -S zellij
Если в дистрибутиве нет alacritty
или zellij
в репозиториях, то их можно поставить через стандартный пакетный менеджер Rust:
cargo install alacritty
cargo install zellij
Чтобы все работало, $PATH
должен содержать путь до ~/.cargo/bin
.
Настройка Alacritty
Создадим директорию для конфига:
mkdir -p ~/.config/alacritty
Пример конфига:
~/.config/alacritty/alacritty.toml
[general]
# тут указываем путь до темы
import = [
"/usr/share/alacritty/themes/catppuccin_mocha.toml",
]
[window]
opacity = 0.96
startup_mode = "Windowed"
# у терминала можно отключить оформление, что может пригодиться любителям тайлинга
decorations = "Full"
dynamic_title = true
# Начальные размеры окна терминала при старте
[window.dimensions]
columns = 140
lines = 50
# Изменяем курсор
[cursor.style]
shape = "Beam"
blinking = "Always"
[scrolling]
# если у вас мало памяти, то уменьшите значение
history = 100000
multiplier = 3
[font]
size = 11.5
# Можно использовать свои шрифты для каждого варианта текста (normal, bold, italic)
[font.normal]
# Использовать лучше всего патченные Nerd-шрифты
family = "JetBrainsMono NF"
# Для лучшей поддержи прозрачности в vim и тп
[colors]
transparent_background_colors = true
[terminal.shell]
# Запускаем при старте терминала zellij, при этом используя последнюю сессию
program = "/usr/bin/bash"
args = [
"-l",
"-c",
"zellij attach --index 0 || zellij",
]
Настройка Zellij
Создадим конфиг:
mkdir -p ~/.config/zellij
zellij setup --dump-config > ~/.config/zellij/config.kdl
Редактируем его:
vim ~/.config/zellij/config.kdl
Что изменить:
ui {
pane_frames {
// Можно скрыть название сессии
hide_session_name true
// Или сделать края рамок круглыми
//rounded_corners true
}
}
// ...
keybinds {
normal {
// uncomment this and adjust key if using copy_on_select=false
// bind "Alt c" { Copy; }
}
locked {
// Эти клавиши не будут доступны в том же Vim
bind "Ctrl g" { SwitchToMode "Normal"; }
// Я бы добавил сочетания для прокрутки экрана, так как встроенные, используемые Alacritty, не будут работать (zellij перехватывает это событие)
// PageUp/PageDown не работают ни с какими сочетаниями, а поэтому на них
// лучше ничего не вешать
bind "Ctrl Shift Up" { PageScrollUp; }
bind "Ctrl Shift Down" { PageScrollDown; }
bind "Ctrl Shift Home" { ScrollToTop; }
bind "Ctrl Shift End" { ScrollToBottom; }
}
// Остальное все дефолтным оставляем
}
// Стартуем в заблокированном режиме
default_mode "locked"
// Можно сменить тему
// Список встроенные тем: https://zellij.dev/documentation/theme-list.html
// Можно использовать "универсальную", использующую цвета теминала
theme "ansi"
// Если этот режим включен, то не работает вставка средней кнопкой мыши, а когда
// выключен — в Vim клик мыши не перемещает курсор
mouse_mode true
// Размер буфера прокрутки в строках. Приводит к увеличению используемой оперативной памяти
scroll_buffer_size 100000
// Kitty официально не поддерживает ни Tmux, ни Zellij. Совместимость с ним можно вырубить, если есть какие-то проблемы
support_kitty_keyboard_protocol true
// Если раздражают различные сообщения при запуске
show_release_notes false
show_startup_tips false
Как пользоваться Zellij?
При использовании настроек выше, вы стартуете в заблокированном режиме, когда ввод в терминал игнорируется. Чтобы перейти в нормальный режим (управления сессиями, интерфейсом), нажмите Ctrl-g
. Чтобы разбить экран, нажимаем Ctrl-p
, d
. Между сплитами можно переключаться с помощью Alt
и стрелок. Все доступные сочетания выведены на экран. Как только закончите, нажмите Ctrl-g
чтобы начать работать с терминалом.
Zellij так же поддерживает сессии, между которыми можно переключаться… А так же, если вы просто закроете терминал (вместо exit
или quit
), то сессия сохранится, и процессы будут крутиться в фоновом режиме.
Пример команд:
zellij ls # Список сессий
zellij attach -c work # Создать/присоединиться к сессии
info zellij # Справка
Настройка SSH
Так как по умолчанию переменная $TERM
в alacritty содержит недопустимое значение с точки зрения удаленного сервера, то при запуске ssh могут не работать некоторые сочетания клавиш. Чтобы это исправить, добавьте в ~/.ssh/config
:
Host *
SetEnv TERM=xterm-256color
На сервере, как правило, нет terminfo для alacritty, поэтому сервер в ответ шлет escape-последовательности, которые alacritty понимает неправильно. Мы можем использовать способ выше либо скопировать terminfo на сервер:
# На хосте экспортируем файл terminfo
infocmp alacritty > alacritty.info
# Копируем его на удаленный сервер
scp alacritty.info user@server:/tmp/
# А затем устанавливаем на удаленном сервере
tic -x /tmp/alacritty.info
Полезные заметки
- В Allacrity Vi-mode переключается сочетанием клавиш
Ctrl + Alt + Space
. - Через
Ctrl + Shift + F
можно искать текст на экране. - Все сочетания Alacritty перечислены здесь.
- При использовании Zellij, сочетания Alacritty для прокрутки не работают. Как альтернативу можно использовать режим поиска:
Ctrl-g
,Ctrl-s
,↓/↑/j/k
,Esc
… или настройки выше - Сочетания с
Ctrl
можно переназанчить наAlt
:# keybinds clear-defaults=true нужно чтобы дефолтные сочетания автоматом не дополнялись sed -ri 's/Ctrl /Alt /; s/(keybinds)[^{]+/\1 clear-defaults=true /' ~/.config/zellij/config.kdl