Эмуляторы терминала. Обзор. Linux статьи
Написать статью
Войдите, чтобы писать статьи

Эмуляторы терминала. Обзор

90

Обзор Эмуляторов терминала

Материал написан пользователем сайта.

Предисловие

Как-то в обсуждениях у нас промелькнула мысль о том, что было бы неплохо провести сравнение различных эмуляторов терминала Линукс, обсудить их функционал и возможности, попытаться разобраться в особенностях и необходимости применения на своей системе.

Статья, прежде всего, будет направлена на потребности рядового пользователя, которому эмулятор нужен для запуска команд оболочки и, возможно, для работы некоторых терминальных приложений. Сравнение не будет полным, охватывающим все и вся, предлагаю отталкиваться от штатных терминалов, коими укомплектованы все рабочие окружения (desktop environment), а также рассмотреть наиболее популярные эмуляторы среди пользователей оконных менеджеров (window manager).

Предлагаю начать с определений.

Терминал компьютера — устройство, которое используется для осуществления взаимодействия пользователя с системой компьютера посредством физических устройств (клавиатура, дисплей, печатающее устройство, звуковое устройство, устройство хранения данных), подключаемых к компьютеру через интерфейсный порт (например, широко-распространенный последовательный порт RS-232).

Эмулятор терминала — это программа, которая эмулирует терминал компьютера и дает возможность пользователю взаимодействовать с операционной системой (локально или удаленно).

VT100 — графический компьютерный терминал, набор команд которого (набор символов ASCII и управляющих ESCAPE последовательностей) стандартизован ANSI, а позже стал неофициальным стандартом для эмуляторов терминала.

VTE (виртуальный эмулятор терминала) — это библиотека с открытым исходным кодом, предоставляющая виджет для инструментария GTK+ 2.0 (или выше). На базе VTE построены такие эмуляторы терминала, как: gnome terminal, xfce4-terminal, roxterm, guake, sakura terminal, terminator.

Обзор штатных эмуляторов терминала

GNOME Terminal — эмулятор терминала по-умолчанию в одноименной среде рабочего стола. Набор функций идентичен xterm. Дополнения коснулись графической настройки внешнего вида (цвет, фон, шрифт, курсор...), поддержке профилей с возможностью индивидуальной настройки каждого, встроенной поддержке мыши с функциями копирования/вставки, поддержке ссылок с возможностью открытия их из окна терминала в браузере по-умолчанию, поддержке вкладок, а также поддержке комбинаций клавиш с возможностью их индивидуальной настройки.

GNOME Terminal - штатных эмулятор терминала среды Gnome

Прикол в том, что все тоже самое можно сказать и про konsole, xfce4-terminal, lxterminal... и далее все эмуляторы других известных окружений рабочего стола, с которыми они поставляются и в которые они интегрированы по-умолчанию. К исключениям можно отнести разве что terminology, в котором сделан упор на безопасность и он, хотя бы внешне, чуть больше отличается от остальных, впрочем как и сам enlightenment.

Стандартный набор настроек для штатного эмулятора терминала

Поэтому, не вижу большого смысла рассматривать каждый из них в отдельности, а предлагаю объединить в одну группу: "штатные эмуляторы терминала". Предлагаю такой вариант еще и потому, что считаю, что в каждом рабочем окружении рядовому пользователю стоит пользоваться тем эмулятором терминала, который является для него "родным". Помните, в начале статьи мы определили основные требования, предъявляемые рядовым пользователем к эмулятору терминала? Согласитесь, что для удовлетворения этих требований более чем сгодится штатный терминал. Да и было бы нелепо в среду Gnome тащить konsole или наоборот. При расширении же круга задач, имеет смысл обратить свой взор на другие продукты, подобрав нужный из них под конкретные цели.

Обзор альтернативных эмуляторов терминала

В среде оконных менеджеров ситуация выглядит немного иначе, там изначально пользователю не "навязывается" эмулятор терминала и он должен выбрать один (а может и не один) из них. Вполне возможна ситуация, когда кто-то уже привыкший, например к xfce4-terminal, его именно и выберет. Тем не менее популярность таких эмуляторов терминала, как alacritty, kitty, urxvt (и других альтернативных) среди пользователей оконных менеджеров гораздо выше, что косвенно подтверждается большим количеством dotfiles-настроек этих эмуляторов на популярных git-сервисах.

Alacritty — простой, минималистичный эмулятор терминала, использующий OpenGL для обработки графики, написанный на Rust. Все настройки задаются в файле конфигурации, в котором использован синтаксис toml (ранее был yaml). Минимализм и скорость - вот его главные козыри. В нем нет поддержки вкладок; он не предлагает по-умолчанию упрощенный вариант копирования-вставки с помощью мыши или стандартных сочетаний клавиш; в нем нет графических настроек, а существующая документация может показаться сложной.

Когда первый раз его установил (давно уже было), был крайне взбешен отсутствием копирования/вставки с помощью мыши, а также стандартных Ctrl-c/Ctrl-v. Теперь то понимаю, что так задумано во-благо. Но с alacritty все быстро меняется, - достаточно чуточку погрузиться в его нутро, ощутить прелести минимализма и скорости, - как начинаешь относится к нему совершенно иначе. В двух словах можно сказать, что устанавливая alacritty, - "получаешь терминал" и ничего больше.

Alacritty - современный терминал и ничего больше

Kitty — другой эмулятор терминала, использующий OpenGL для обработки графики, написанный на Python. Все настройки также задаются в файле конфигурации. В отличие от alacritty, он предлагает более расширенный функционал, такой как поддержка вкладок, встроенный вывод графики, настройки тем и шрифтов и многое другое. Все это реализовано путем вызова команды kitten с различными ключами.

Для себя нахожу некоторые из функций не только удобными, но и полезными. Например, в терминальных файловых менеджерах, которые я активно использую (в частности vifm), для реализации предпросмотра графических изображений удобно использовать встроенную функцию kitten icat. Для реализации подобного в alacritty, например, приходится устанавливать сторонний софт, типа ueberzugpp.

Настройка цветовых тем в kitty выполняется встроенной командой kitten themes, после вызова которой открывается псевдографический интерфейс с опцией предпросмотра загруженных тем на выбор пользователя. Вкладки, может кому-то это и нужно; лично мне никогда не требовался данный функционал и соответственно мной не используется. В то же время все это не мешает kitty оставаться простым, минималистичным и довольно быстрым эмулятором терминала с поддержкой GPU.

Kitty - функциональный и быстрый эмулятор терминала

GNOME Console — попытка создать простой эмулятор терминала для среды рабочего стола gnome с уклоном на интерактивность. Из всех перечисленных эмуляторов терминала gnome console самый медленный, что особенно заметно при "холодном" старте. Внешне он похож на gnome terminal, у которого отрезали настройки и раскрасили рамку окна в зависимости от применения (красный - root или sudo, фиолетовый - при удаленном подключении по ssh), улучшили всплывающие окна предупреждений. На этом все его "фишки" заканчиваются, а скорость работы, проблемы при масштабировании, сложность какой-либо настройки (считай отсутствие таковой) - оставляют вопросы.

GNOME Console (kgx) - альфа-версия будущего GNOME Terminal?
Зачем вообще делать урезанное подобие GNOME Terminal?

ST — оптимизированный эмулятор терминала, предлагаемый в качестве замены устаревшим xterm и rxvt. Написан на языке С, развивается под эгидой проекта suckless, в котором разработчиками делается упор на минимализм, простоту и ясность. Широко известные dwm и dmenu также развивается этим сообществом. Минимализм в нем такой, что даже прокрутки в терминале нет; добавляется установкой патча. На фоне остальных его выделяет минимум задержек и крайне малое потребление ресурсов. Если поиграться с масштабированием, то не сложно заметить, что обновление выполняется не полное. Зато все действия выглядят молниеносными, и в тестах st оказывается в лидерах. Смотрите сами:

ST - оптимизированный xterm (rxvt)

Тестирование, анализ

Для интересующихся различными тестами и сравнительным анализом на их основе, предлагаю следующие статьи к прочтению:

  1. Обзор эмуляторов терминала
  2. Насколько быстрее стали терминалы в GNOME 46?

Мой выбор

В окружениях рабочего стола (Gnome, KDE, XFCE...) наиболее приемлемыми и достаточными для меня, как рядового пользователя, выглядят штатные эмуляторы терминала. В средах, построенных на базе оконных менеджеров, предпочитаю alacritty и kitty. И тот и другой одинаково для меня хороши, один из них используется в качестве рабочего варианта, второй (как правило с совершенно другой темой оформления) в качестве "плавающего" терминала, вызываемого совместно с каким-нибудь терминальным приложением (nmtui, btop...) или скриптом оболочки. Всей прелести крайней степени минимализма и супер скорости st терминала так и не ощутил, предпочтение в таком случае отдаю комфорту. GNOME Console воспринимается мной как этакий франкенштейн; почему бы просто хорошие идеи не перенести в головной терминал в таком случае, а не плодить непонятно что и непонятно для кого?

Лайков: +20
войдите, чтобы ставить лайки
90
  • Опубликовано: 22.02.2025
  • scorpii

Комментарии

x230
Активный пользователь
Активный
22.02.2025
10:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
>> xfce4-terminal

+
UlyssesJJ
Активный пользователь
Активный
22.02.2025
10:07
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
Тоже пробовал много различных эмуляторов терминала.
Самым лучшим долгое время считал Sakura. Потому что он настраивается и через конфиг и через графический интерфейс и имеет зависимости только от gtk и libvte. Я и сейчас его считаю одним из лучших эмуляторов. А вернее он теперь для меня на втором месте.
Потому что на первом месте теперь для меня ST (о котором идет речь в статье). Он еще более минималистичный (примитивно и легко собирается из исходников), и действительно круто выглядит. До него я сидел какое-то время на alacritty (ужасный ужас). После того, как пересел на ST, я наконец-то вспомнил, что такое "немыльные" буквы в терминале. Изображение четкое и контрастное.
В общем, не переусложняйте! :D
Alexander707
Активный пользователь
Активный
22.02.2025
11:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUlyssesJJРодительский комментарий
0
войдите, чтобы ставить лайки
Как полностью пакет ST называется?
vantiki
Активный пользователь
Активный
22.02.2025
11:16
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAlexander707Родительский комментарий
+1
войдите, чтобы ставить лайки
В Debian: st-console;
В Арче надо ставить через аур и так пакет "st" и называется;
В федоре вроде бы тоже просто "st".
UlyssesJJ
Активный пользователь
Активный
22.02.2025
13:09
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAlexander707Родительский комментарий
0
войдите, чтобы ставить лайки
Не имеет смысла из репозиториев ставить.
Потому что проще редактировать config.h и перекомпилировывать.
yranehor
23.02.2025
11:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийUlyssesJJРодительский комментарий
0
войдите, чтобы ставить лайки
Где находиться cachyos-st-config? Я в CachyOS не могу его найти чтобы настроить.
vantiki
Активный пользователь
Активный
22.02.2025
11:01
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+2
войдите, чтобы ставить лайки
С точки зрения выбора терминалов полностью солидарен: alacritty и kitty на данный момент, как по мне, самые удобные и простые в использовании. Если брать DE, то в крысе ещё терминал классный: настроек куча, работает хорошо внутри окружения, да и просто функциональный и удобный. Гномовский не люблю - уж слишком простой. А кде'шный konsole, кроме самих кед, нет смысла ставить, так как подтянет три миллиона qt-библиотек, что в gtk-сборках не имеет смысла.
scorpii
Активный пользователь
Активный
22.02.2025
11:03
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
> После того, как пересел на ST, я наконец-то вспомнил, что такое "немыльные" буквы в терминале. Изображение четкое и контрастное.

Действительно у ST очень высокий контраст. Для меня - это скорее минус, глаза намного быстрее устают. Помните, microsoft когда-то ввел сглаживание экранных шрифтов и предложил индивидуальную настройку каждому пользователю? Мой выбор всегда был где-то посередине, так как чрезмерный контраст, также как и откровенное "мыло" сильно нагружают мои глаза. Все очень индивидуально в данном контексте.
UlyssesJJ
Активный пользователь
Активный
22.02.2025
13:10
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
Могу согласиться.
NickVG
28.02.2025
23:52
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
"как этакий франкенштейн;"
И чем же это Вам не угодил молодой студент из Женевы?
tolmak
22.02.2025
11:22
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Все так - согласен с автором на 100%
Neo
Активный пользователь
Активный
22.02.2025
11:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
По мне так любой . Что ставится по умолчанию ,то и сойдет.
Но я не фанат терминала - так что без рюшечек ))
Alexander707
Активный пользователь
Активный
22.02.2025
11:33
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийNeoРодительский комментарий
0
войдите, чтобы ставить лайки
Когда был маленький было такое - ищешь в поисковике как обновить систему, а там: sudo apt update && sudo apt full-upgrade (dist-upgrade)? Чё - не было такого?)))
Mockingbird
Активный пользователь
Активный
22.02.2025
11:41
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAlexander707Родительский комментарий
+1
войдите, чтобы ставить лайки
Оно и сейчас так. Посмотришь статьи из разряда 10 шагов которые нужно сделать после установки <имя дистрибутива>, первый шаг обновлениче через консоль =)
Для этого хватает и стандартной консоли которая поставляется в DE.
Заморачивается с выборм ST, kitty и прочими имеет смысл если большая часть работы в linux осуществялется через терминал.
Neo
Активный пользователь
Активный
22.02.2025
11:59
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийAlexander707Родительский комментарий
+1
войдите, чтобы ставить лайки
>>sudo apt update && sudo apt full-upgrade

Да это как всегда )) Можно и через Сунаптик обновить. Но лень запускать. А консоль команды запомнила - просто выбираешь )
choice
Активный пользователь
Активный
22.02.2025
12:13
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Оформление просто обалденное!
Ещё понравилось, что не предлагается менять эмуляторы в DE на какой-то другой, который чем-то лучше - спокойный подход.
А добавить хочу, что по Ctrl-Alt-F1(-F6) будут вам терминалы и, казалось бы, зачем тогда нужен его эмулятор? А просто там строки "убегают" вверх безвозвратно, их не отмотать назад, а иногда хочется.
xKDE
Активный пользователь
Активный
22.02.2025
14:53
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
0
войдите, чтобы ставить лайки
>> по Ctrl-Alt-F1(-F6) будут вам терминалы и, казалось бы, зачем тогда нужен его эмулятор
Так как бы по Ctrl-Alt-F1 это и есть эмулятор терминала)) Но не суть, я о другом. Можно таки пропатчить ядро и вернуть скролл, либо взять tmux/screen
P.S.: помниться, где-то тут мы уже обсуждали fbcon
choice
Активный пользователь
Активный
22.02.2025
16:40
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
А разве tty называют эмулятором? Вроде бы это телетайпный вариант, эмулятором называют через графический пакет. Не особо важно, просто чтобы грамотно вести обсуждение.
Эмулятор в DE оставить, но пропатчить ядро ... - откомментировали комментарий!
xKDE
Активный пользователь
Активный
22.02.2025
16:55
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
+1
войдите, чтобы ставить лайки
>> А разве tty называют эмулятором?
Если у Вас до сих пор в /dev/tty1 имеется физический телепринтер, то да, терминал. Если всё таки /dev/tty1 программно эмулирует телепринтер, то эмулятор. Он же - виртуальная консоль!
Второй абзац расшифровать не смог!)
scorpii
Активный пользователь
Активный
22.02.2025
17:28
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
> Если у Вас до сих пор в /dev/tty1 имеется физический телепринтер

нет такого, давно уже нет, и консоль tty и "графические пакеты" - все есть эмуляторы терминала.

> Второй абзац расшифровать не смог!)

Видимо речь, про предложенный Вами патч с целью реализации обратной прокрутки в консоли tty. Как сюда пришел "Эмулятор в DE" для меня также остается загадкой.
choice
Активный пользователь
Активный
22.02.2025
18:21
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийxKDEРодительский комментарий
0
войдите, чтобы ставить лайки
Мне понравилось в статье и я это отметил, что если уже есть эмулятор в DE, то и ладно, нет особой нужды удалять или добавлять другой, он сам - хорошее дополнение к tty. И тут предложение пропатчить ядро! Для меня неожиданно. Тогда уж вернуть скролл и удалить эмулятор от DE. Будет не просто "потому, что могу", а "за аскетизм".
xKDE
Активный пользователь
Активный
22.02.2025
18:29
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
0
войдите, чтобы ставить лайки
>> А просто там строки "убегают" вверх безвозвратно, их не отмотать назад, а иногда хочется.
Отсутствие "перемотки" решается патчем или tmux, вдруг Вам захотелось хардкора)
scorpii
Активный пользователь
Активный
22.02.2025
17:55
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийchoiceРодительский комментарий
+1
войдите, чтобы ставить лайки
TTY - это аббревиатура от телетайпа, устаревшего электромеханического оборудования, которое использовалось в прошлом.
/dev/tty[0-N] — это просто виртуальная консоль, на которую вы можете переключиться из главного терминала, если вы используете систему с графическим интерфейсом, где N представляет номер телетайпа. Они моделируют несколько консолей поверх драйвера устройства физической консоли.
Minor748
Активный пользователь
Активный
22.02.2025
13:36
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
Ставил для сравнения kitty. В инструкции к нему нашёл о производительности, что использует ВОЗУ для ускорения, на этом всё. Ставил ghostty, который тоже якобы с GPU ускорением. Потом сравнил по потреблению ОЗУ с родным xfce4-terminal и ахнул …

kitty — 90-95 МБ ОЗУ
ghostty — то ли 200+, то ли вообще 300+ МБ
xfce4-terminal — скромные 50-55 МБ ОЗУ
Thr0TT1e
24.02.2025
22:15
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
Private + Shared = RAM used Program
38.6 MiB + 8.2 MiB = 46.8 MiB alacritty
28.0 MiB + 27.5 MiB = 55.5 MiB konsole
74.1 MiB + 11.2 MiB = 85.3 MiB ghostty
scorpii
Активный пользователь
Активный
22.02.2025
13:54
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
0
войдите, чтобы ставить лайки
> xfce4-terminal — скромные 50-55 МБ ОЗУ

ST ещё сильно меньше... Так "вам шашечки или ехать"?
Minor748
Активный пользователь
Активный
22.02.2025
14:15
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийscorpiiРодительский комментарий
0
войдите, чтобы ставить лайки
Разумеется шашечки, но этот показатель имеет смысл в рамках одной машины, не стоит сравнивать показатели в разных системах.
scorpii
Активный пользователь
Активный
22.02.2025
14:39
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийMinor748Родительский комментарий
0
войдите, чтобы ставить лайки
В