Привет, меня зовут Андрей Кисин, и я руковожу командой DevOps в CUSTIS. Сегодня расскажу о прикладной задаче, с которой столкнулся: выбор эмулятора терминала.

В статье объясню, почему мне потребовалось сменить прежний эмулятор и какими критериями я руководствовался при выборе нового. А ещё сделаю обзор на Tabby, которым пользуюсь в итоге.

Эмуляторы терминала и синхронизация

Предлагаю порассуждать об эмуляторах терминала. Для чего они требуются и как работают — дело понятное. Если пользовались подобными программами, наверняка вам знакомы PuTTY или более‑менее современный Termius.

Последним — Termius — я пользовался достаточно долгое время. У терминала хороший UI, он современный, с кучей возможностей. И меня в нём всё устраивало, кроме нескольких моментов:

  • Во‑первых, у меня три рабочих места (компьютер, рабочая виртуальная машина, ноутбук), и постоянно приходилось вручную переносить хосты с места на место;

  • Во‑вторых, мне хотелось одно пространство для работы с разными системами (Linux, Windows, WSL);

  • В‑третьих, не хватало возможностей для кастомизации. Хотелось такое же, но с перламутровыми пуговицами :)

Особенно критичной для меня была проблема с синхронизацией: в один день мне так надоело синхронизировать конфигурацию в ручную, что я стал искать решение этого вопроса. Замечу, что у Termius есть синхронизация, но беда в том, что она работает только с подпиской Pro, а после 14 дней пробной версии превращается в тыкву. Не хватило мне и глубины настроек: интерфейс, работа с текстом.

Так, важными критериями поиска и выбора нового эмулятора для меня стали возможность синхронизации между инсталляциями, кроссплатформенность и плагины от сообщества. Отмечу, что возможность кастомизировать интерфейс не была в приоритете, но — спойлер! — и это я теперь могу.

Tabby: горячо сыро не бывает

Периодически я искал новые терминалы, и не так давно нашёл Tabby.

Tabby представляет собой современный эмулятор терминала с гибкими настройками, написанный на JavaScript, что обеспечивает ему значительную поддержку сообщества. Он предлагает широкий выбор плагинов и, несмотря на статус альфа‑версии, демонстрирует безупречную работу без каких‑либо лагов и проблем.

Давайте рассмотрим наиболее интересные функции, которые работают «из коробки».

Кроссплатформенная поддержка. Tabby поддерживает операционные системы Mac, Windows и Linux, что делает его гибким и удобным решением для различных платформ.

Гибкие настройки профилей и внешнего вида. Можно легко настроить профили и внешний вид согласно вашим предпочтениям.

Поддержка горячих клавиш. Здесь всё просто: используйте существующие сочетания клавиш или задайте свои.

Защищённое хранилище. Встроенное хранилище обеспечивает безопасный доступ к сохранённым секретам. Однако, при работе с профилями и включённым хранилищем, может потребоваться постоянный ввод мастер‑пароля для редактирования профилей.

Редактирование config file. Можно редактировать config file непосредственно из Tabby в соответствующем меню.

Настройка профилей и соединений. Tabby позволяет группировать профили, а также использовать готовые профили в качестве шаблонов.

Удобное копирование файлов и поддержка WinSCP. Функция обеспечивает удобное копирование файлов напрямую из интерфейса Tabby. Однако, для копирования каталогов с помощью UI придётся воспользоваться запуском WinScp. Это можно сделать напрямую из Tabby.

Автоматическое открытие терминала при запуске приложения. Настройка может быть полезной для некоторых пользователей. Если она не нужна, можно отключить.

Открытие предыдущих вкладок при запуске Tabby. Функция полезна для тех, кто предпочитает продолжать работу с предыдущими вкладками.

Хранилище. Функция позволяет зашифровать ваши секреты и просмотреть их на вкладке «Хранилище» после ввода мастер‑пароля. Не пробовал, потому что пользуюсь сторонним хранилищем секретов. При включённой функции постоянно требуется ввод мастер‑пароля для редактирования профилей.

Менеджер профилей. Пригодится, чтобы создать отдельные рабочие пространства. Каждый профиль имеет свою собственную конфигурацию.yaml, в которой настраивается рабочее пространство. Кроме того, можно выбрать профиль рабочей области, который запускается при открытии терминала, и установить горячие клавиши для первых пяти профилей.

Кликабельные гиперссылки. Без комментариев :)

Настройки профилей

Перейдём к настройке профилей. Их здесь много, давайте разбираться!

Для начала выясним, как сюда попасть:

  1. Идём в Settings → Профили → Жмём на кнопку «Новый» и выбираем, что мы хотим создать, группу профилей или новый профиль.

  2. В настройках профиля сразу попадаем на вкладку «Общие», где выбираем тип соединения (Direct, Jump Host и несколько видов прокси). В большинстве случаев будем использовать Direct и Jump Host.

  1. Дальше задаём параметры аутентификации, рекомендую использовать тип «Автоматически». Важный момент: приватные ключи на всех устройствах, участвующих в синхронизации, должны лежать в одном расположении.

  2. Следующая вкладка — «Порты», в ней можно настроить проброс портов.

  3. На вкладке «Скрипты входа» мы можем задать команды, которые будут введены в начале сессии.

Настройки кастомизации

Перейдём к настройкам внешнего вида интерфейса Tabby. Тут могут разбежаться глаза, потому что настроек много. Находятся они находятся в разных местах, а именно в подменю в Settings.

Внешний вид. Настройки шрифта и курсора, интервалы, пользовательский CSS:

Цветовая схема. Tabby предлагает готовые схемы с возможностью их тюнинга:

Профили и соединения. По сути стиль, можно выбрать отдельную цветовую схему:

Окно. Расположение вкладок, прозрачность и прочее:

Синхронизация 

Но на самом деле, вопросы кастомизации меня не сильно волновали: я решал свою проблему с синхронизацией. Какие же есть возможности для синхронизации у Tabby?

Во‑первых, есть синхронизация на выделенный сервер. То есть Tabby предлагает поднять свой веб‑сервис и к нему подключаться, там синхронизироваться: если мы никому не доверяем и очень боимся, что наши данные украдут, то мы можем складывать всё на свой сервер. Но это не очень удобно, поэтому есть несколько возможностей, как это дело обойти.

Первая возможность для того, чтобы не пользоваться выделенным сервером, — это плагин sync‑config, который позволяет синхронизировать данные в GitHub. Я его отключил, потому что у него нет поддержки автосинхронизации, это неудобно.

Tabby развивается семимильными шагами, и появился ещё один плагин — Cloud Sync Setting, где собственно есть уже синхронизация с облаками, то есть поддержка GitHub, S3, по‑моему, он и в Amazon позволяет писать, и на DigitalOcean, и в GitLab — мне хватает за глаза.

Для того, чтобы работала синхронизация на GitHub нужно создать токен с правами Gist, этого вполне достаточно. Дальше вводим, собственно, учётные данные, и вся синхронизация у нас теперь работает.

Важный момент: я поменял параметры синхронизации в секундах. По умолчанию стоит 20 секунд, и терминал периодически мне выдавал, что он не может синхронизироваться. Я предположил, что скорее всего, на стороне GitHub стоит лимит запросов. Поменял время интервала на 60 секунд, и после этого всё заработало:

Плагины

Начнём с Tabby Sync Cloud Settings, с которым мы уже познакомились выше. Он служит для синхронизации конфигурации с использованием популярных облачных сервисов.

Также я поставил плагин Tabby Highlight Plugin, который меняет цвет шрифта в терминале в зависимости от заданного паттерна. Вещь полезная, особенно если смотреть километровые логи прямо в терминале.

Плагин поддерживает импорт и экспорт конфигурации и регулярные выражения, чем я и воспользовался:

Ещё в Tabby есть отдельный плагин, который отвечает за быстрый ввод команд —  Quick Commands:

 

Внутри выдаётся список команд, которые предварительно вводятся в Quick Commands. Здесь можно отредактировать группу и всё остальное. Это достаточно удобно, и периодически я этим пользуюсь:

Tabby search in browser позволяет запустить поиск выделенного текста прямо из Tabby, также можно выбрать поисковик по‑умолчанию. Из минусов: добавить свою поисковую систему нельзя.

Подведём итоги

На этом мой рассказ о Tabby окончен, давайте подведём итоги. Из минусов могу отметить следующее:

  • Встроенный интерфейс SFTP не умеет копировать каталоги. Копирование каталогов с помощью UI может происходить только в сторонней программе WinSCP;

  • Много настроек и нужно потратить время, чтобы в них разобраться. Добавить профиль и подключиться к нужному хосту можно быстро, остальное дело времени;

  • Нет мобильных клиентов. Для выхода с мобильных можно использовать Tabby Web, что для меня не подходит.

Теперь отмечу положительные стороны:

  • Open source решение. Программа динамично развивается, чувствуется поддержка сообщества;

  • Богатый функционал, покрывает все мои требования;

  • Можно использовать как веб‑приложение. На мой взгляд, перспективное направление.

На текущий момент Tabby является отличным решением, для тех, кто хочет современный, удобный эмулятор терминала на каждый день. Делитесь мнением и своим пользовательским опытом в комментариях!

Комментарии (7)


  1. GritsanY
    29.05.2024 11:04
    +1

    Всё-таки альтернативы MobaXTerm пока не вижу. Там, конечно, нет фич, которые нужны автору (синхронизация и мульти-платформенность), но по широте охвата способов подключения, он, наверное, лучший


    1. Miller777
      29.05.2024 11:04

      По идее, можно файл настроек синхронизировать любой сторонней софтиной.


  1. Tony-Sol
    29.05.2024 11:04
    +5

    Как по мне, так все отдельные эмуляторы терминала на electron'е (или аналоге) от лукавого.

    На текущий момент пользуюсь wezterm с синхронизацией настроек через git - пока что лучший из всех что я пробовал (alacritty, kitty, konsole, iterm2, warp, tabby, hyper)


    1. ilya_chch
      29.05.2024 11:04

      А в чем его плюсы по сравнению с alacritty или kitty? Чем так понравился?


      1. Tony-Sol
        29.05.2024 11:04

        По сравнению с alacritty поддерживает больше escape-последовательностей, например alacritty не умел (раньше, как сейчас не знаю) в blinking text, а для меня критично.

        По сравнению с kitty - конфигурация на lua сильно проще и удобнее, чем на conf-файлах


  1. naim
    29.05.2024 11:04

    Посмотрите еще в сторону asbru https://github.com/asbru-cm/asbru-cm


  1. xaver
    29.05.2024 11:04

    У меня табби часто падает когда больше 5 вкладок открыто, возможно электрону памяти не хватает или не знаю почему