LINUX.ORG.RU

Alacritty + Zellij: идеальное сочетание для терминала

 ,


1

3

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
    
★★★

Проверено: hobbit ()
Последнее исправление: dataman (всего исправлений: 21)

В Arch ставлю:

pacman -S xorg-xinit xorg-server xterm i3-wm alacritty ttf-jetbrains-mono

Чем i3-wm отличается от Zellij - что оптимальнее использовать для браузера, офис ?

alex52mail
()
Последнее исправление: alex52mail (всего исправлений: 1)
Ответ на: комментарий от alex52mail

я думаю на этот вопрос ответит @SurpriseCat, а заодно расскажет чем ему не нравятся эмуляторы терминала на Rust


хотя, я посмотрел твои комментарии, ты вроде не троллишь и в реальности такой. надо просто все попробовать и поймешь

rtxtxtrx ★★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от alex52mail

Шрифт нужен патченный с добавленнысм глифами:

sudo pacman -S ttf-jetbrains-mono-nerd

Недостающие глифы можно добавить и в обычный шрифт через костыли, но оно не работает где-то… Я уж не помню, поэтому нужно всегда патченные ставить

i3-wm

Им я пользовался 7 лет назад, поковырял и забыл. Тайлы не мое.

Отредактируй /etc/pacman.conf и добавь в него:

[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch

Затем выполни:

sudo pacman -Syu

Там много чего интересного из того что есть в AUR, но в отличии от последнего собранного не какими-то левыми васянами, а китайцами хоть с какой-то модерацией пакетов…

Поставь hyprland. Не мучай себя… Хотя я тоже не прав. Сейчас можно его https://chat.deepseek.com/ завалить вопросами и через недельку ты настроишь i3.

что оптимальнее использовать для браузера, офис

Графические приложения типа хромиума тянут с собой потроха Gtk или Qt. Для них нужно запускать dbus, ставить порталы, прописывать переменные окружения чтобы все работало правильно… Но возвращаемся к первому предложению: если для тайлов все равно нужны Gtk/Qt, то зачем тайлы, когда можно использовать Xfce/Gnome/KDE? Просто не имеет смысла…

rtxtxtrx ★★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 2)

Спасибо большое. Как раз сам думаю насчет этого вопроса. Тоже много что пробовал, но пока сижу на Konsole. А Alacritty не подошел как раз из-за отсутствия табов.

Jaeger1999 ★★★
()

Так как по умолчанию переменная $TERM в alacritty содержит недопустимое значение

Это какое недопустимое значение? Если alacritty, то это правильное и допустимое значение.

habamax ★★★
()

Из современных я пробовал Ghostty, Kitty, Wezterm, но у них всех недостатки. Они тянут слишком много зависимостей, а также запускают скрипты на Python или Lua. В Alacritty же нет ничего лишнего

и тут же

В этом эмуляторе терминала нет даже вкладок, поэтому потребуется мультиплексер

и еще полстатьи про настройку этого zellij (который появился только потому, что у какого-то очередного растомана зачесалось переписать еще что-то на расте). Ничего не щелкает?

кстати, что плохого в скриптах на python и lua? Они вообще-то полезные функции предлагают

Lrrr ★★★★★
()

Alacritty — быстрый и минималистичный терминальный эмулятор с поддержкой ускорения через GPU.

На поверку не такой и быстрый… Ну да ладно. Все и так знают, что такое Alacritty. Лучше бы написал, что такое Zellij — с ним, как мне представляется, гораздо меньше читателей знакомы, а в статье сразу с места в карьер: не скажу, что это за хрень, но настраивается эта хрень так.

CrX ★★★★★
()
Ответ на: комментарий от Lrrr

Да, я потом увеидел, что оно кое-как сказано в «установке» — разделе, который обычно все пропускают (тупо ставят из реп своего дистрибутива и всё). Хорошо бы написать в начале и/или в части про Zellij.

CrX ★★★★★
()
Ответ на: комментарий от rtxtxtrx

мог бы и сам поинтересоваться

Это не делает alacritty недопустимым значением для $TERM.

Проблема в отсутствии свежего terminfo.

Понятно, что его везде не установишь, не обновишь. Тем не менее, формулировка проблемы не вполне корректна.

habamax ★★★
()
Ответ на: комментарий от Lrrr

это tmux, переписанный на раст

это tmux со свистоперделками.

habamax ★★★
()

Чтобы перейти в нормальный режим (управления сессиями, интерфейсом), нажмите Ctrl-g.

Боль для емаксеров.

Чтобы разбить экран, нажимаем Ctrl-p, d.

Боль для вимеров, привыкших к дефолтному комплишену. Ну а для емаксера вообще ад.

habamax ★★★
()
Последнее исправление: habamax (всего исправлений: 1)

В этом эмуляторе терминала нет даже вкладок, поэтому потребуется мультиплексер

Зачем? В чём проблема открыть несколько окон терминала?

eternal_sorrow ★★★★★
()
Ответ на: комментарий от eternal_sorrow

Иногда лень. Вот у меня за компом вообще может 3 разных человека в течении дня сидеть. По типу я пришел, запустил что-то ресурсоёмкое, оставил для него на первом рабочем столе окно и ушёл чай пить, котов кормить, траву косить. Пока я чай пью, котов кормлю, траву кошу отец сидит и смотрит футбол или хоккей. Если я долго занят, а футбол кончился, может мать сядет будет кино смотреть. И проще когда окон мало, а рабочих столов много, чтоб случайно никто не закрыл не то окно. Можно конечно несколько юзеров завести, но у меня дома автологин при входе, чтоб никого паролями не напрягать. Родители старые уже им сложно всё.

peregrine ★★★★★
()
Ответ на: комментарий от Lrrr

tmux говно. не пишу на раст. мне он не нравится. он переусложнен и излишне расхайплен, но это мое мнение. и если что-то на нем написано, то оно ничем не хуже сишного. все твои аргументы ложны. а использовать zellij удобнее чем запоминать сочетания для разбиения экрана терминала на части и тп. потому что сочетания все написаны… прям как в nano или micro… но их отображение можно отключить…

в питоне ничего плохого… ну кроме случаев когда целый терминал на нем написан как кити, а lua - ересь на яваскрипт

rtxtxtrx ★★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)
Ответ на: комментарий от eternal_sorrow

особенность психики человека - не более. в чем проблема запускать кучу браузеров с определенным сайтом в каждом? табы же по сути так и работают… склонность к упорядочиванию. это как держать документы по разным ящикам

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от habamax

ëмаксер может переопределить это сочетание на любое другое. ты так же как с ssh сути не понял… в zellij у тебя два режима: 1) это когда он все сочетания перехватывает; 2) locked, где ты можешь работать с терминалом и единственное сочетание, перехватываемое им, тот самый ctrl-g

rtxtxtrx ★★★
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)

Недавно на перешёл на комбинацию alacritty+zellij. В целом нравится, но если очень сурово переназначить клавиши в zellij, его документашка в статусбаре ломается и показывает чепуху.

Ещё какой-то странный гайд с заходом сразу через конфиги, там вполне хороший zero config start, можно просто редактировать сгенеренный автоматически конфиг.

neumond
()
Ответ на: комментарий от neumond

Я их не читал. Это мои заметки из Obsidian.

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от rtxtxtrx

ëмаксер может переопределить это сочетание на любое другое.

Сtrl-p переопределить? Емаксер просто не будет использовать zellij.

ты так же как с ssh сути не понял…

Почему же не понял, все там ясно. Проблема в выбранной тобой формулировке. Удаленные хосты, на которые ты коннектишься не знают о $TERM=alacritty, но это не делает его недопустимым. Как же я теперь понимаю авторов alacrittty, закрывающих issue с вариациями на эту тему.

в zellij у тебя два режима: 1) это когда он все сочетания перехватывает; 2) locked, где ты можешь работать с терминалом и единственное сочетание, перехватываемое им, тот самый ctrl-g

В емаксе ctrl-g это часто используемое сочетание…

Ну да ладно, не особо важно.

habamax ★★★
()
Последнее исправление: habamax (всего исправлений: 1)
Ответ на: комментарий от habamax

Проблема в выбранной тобой формулировке… но это не делает такое недопустимым.

Этим можно оправдать что угодно…

Удаленные хосты, на которые ты коннектишься не знают

У них нет файла terminfo для alacritty, который можно установить на сервере, а можно просто передать переменную, чтобы alacritty работал в известном ему режиме.

Как же я теперь понимаю авторов alacrittty, закрывающих issue с вариациями на эту тему.

Не понимаешь.

В емаксе ctrl-g это часто используемое сочетание…

Будто кто-то тебя принуждает пользоваться божественным alacritty

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от rtxtxtrx

У них нет файла terminfo для alacritty, который можно установить на сервере, а можно просто передать переменную,

Именно. Чтобы притвориться XTerm, благо часть его terminal capabilities совпадает с alacritty.

Будто кто-то тебя принуждает пользоваться божественным alacritty

Нет конечно не принуждают, просто пользуюсь вместе с tmux.

habamax ★★★
()

Минималистичность это не только про возможности, но и про потребление ресурсов:

% gps alacritty | sel @{ l = 'WS(Mb)'; e = { $_.WorkingSet / 1mb }}, Commandline

 WS(Mb) CommandLine
 ------ -----------
185.520 alacritty --config-file ~/.config/alacritty/pwsh.toml
175.988 alacritty --config-file ~/.config/alacritty/mc.toml
167.988 alacritty --config-file ~/.config/alacritty/bash.toml

Удручает отношение разработчиков к просьбам пользователей. Не хочу искать, но меня поразило, как они отшили простой фичреквест наконец сделать работающим мигающий режим ESC 5 и соответственно ESC 25. Это еще до замены формата конфигов yaml на toml.

Лигатуры они тоже игнорируют, хотя есть сторонние пересборки с их поддержкой.

В остальном неплохой терминал, со своими причудами, но рабочий.

dmitry237 ★★★★★
()
Ответ на: комментарий от tnray

в alacritty гораздо меньше возможностей чем в foot/xterm

Каких?
Например так: xterm не умеет гиперссылки, а alacritty умеет.

dmitry237 ★★★★★
()
Ответ на: комментарий от rtxtxtrx

tmux говно. не пишу на раст. мне он не нравится. он переусложнен и излишне расхайплен, но это мое мнение.

Тоже можно сказать и о zellij с screen’ом, более того - удобство какого-либо мультиплексора - вопрос вкуса, а Python-портянки - наше всё (Portage тому пример)

tnray
()

cargo install zellij

При установке на виртуалку с серверной Убунтой, эта зараза сначала выжрала всю память и померла с ошибкой. Попробовал собирать с build -j 1. Оказалось, что предыдущая установка под завязку забила /tmp. Окей, почистил. В итоге, все равно не собралось из-за нехватки памяти.

Kangaroo
()
Ответ на: комментарий от tnray

Учитывая что в alacritty гораздо меньше возможностей

я тебе за это клоуна влепил, ибо это уже совсем неправда

ненужно

отдельным пунктом правил за это расстрел предусмотрен, хейтерок (не знаю кого ты там ненавидишь меня или какой-то эмулятор терминала).

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от Kangaroo

В убунте оно все в репах есть https://snapcraft.io/install/zellij/ubuntu. Используй snap, не стесняйся. Использование иных каких-то способов кроме стандартного пакетного менеджера (snap - стандарт) должно быть как-то оправдано, например, соображениями безопасности (docker, flatpak), ленью… Все эти go, cargo, pip, npm и тд имеют право на существование, но в качестве совсем крайности

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от dmitry237

Ну там, смотря, что ты понастроил, понаставил… У меня и Konsole 256MiB жрет, я думаю, у меня это из-за свистоперделок в zsh. Я мерял со всеми дочерними процессами…

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от rtxtxtrx

Учитывая что в alacritty гораздо меньше возможностей

я тебе за это клоуна влепил, ибо это уже совсем неправда

Допустим что alacritty - это про фичи. Тогда где базовая для vt330, xterm и foot фича как поддержка sixel-ей?

tnray
()
Ответ на: комментарий от rtxtxtrx

зачем мне сиксели, если я их не использую даже там, где они есть?

Я использую. Например, в связке с ncls или timg. Даже tmux их поддерживает

tnray
()
Ответ на: комментарий от tnray

zellij тоже поддерживает и что? мне они не нужны. alacritty объективно очень популярный, а твой выбор - нет. я рассказал о том, что на хайпе, ретрограды как обычно высрали кирпичей, увидев каргу

rtxtxtrx ★★★
() автор топика
Ответ на: комментарий от tnray

Проверил работу в foot ncls/timg в zellij/tmux (x - не работает, v - работает, ~ - работает но криво):

утилитаzellijtmux
ncls ~/~~
timg -psxv
timg -pk~x
tnray
()
Ответ на: комментарий от tnray

Можно установить патченный алакритти, с поддержкой сикселя. Но это зависит от желания. Имхо, терминал, который не мультиплексер, а одно окно-одно приложение, прежде всего должен быть удобен в конфигурации, на лету менять настройки, поддаваться скриптованию. Все остальное bells & whistles.

dmitry237 ★★★★★
()
Ответ на: комментарий от rtxtxtrx

alacritty объективно очень популярный, а твой выбор - нет.

оффтопик объективно очень популярный, а десктопный линукс - нет.

fixed.

tnray
()
Ответ на: комментарий от tnray

благодаря стимдекам линукс теперь тоже популярен, а тех кто им пользуется прямо по назначению 0-2% в зависимости от страны

rtxtxtrx ★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.