
Представлен открытый проект мультиплатформенного эмулятора терминала под названием Contour. Решение написано на C++ с использованием фреймворка Qt 6. Программа задействует аппаратное ускорение графического процессора (GPU) для обеспечения плавного вывода текста и корректной работы на дисплеях с высокой плотностью пикселей (High-DPI).
Основные возможности проекта Contour:
-
доступен на всех основных платформах: Linux, macOS, FreeBSD, OpenBSD, Windows;
-
рендеринг с аппаратным ускорением (GPU);
-
поддержка шрифтовых лигатур (например, как в Fira Code);
-
Unicode: поддержка эмодзи (включая последовательности ZWJ, VS15, VS16), а также поддержка графемных кластеров;
-
вкладки в терминале;
-
постоянные сессии, сохраняющиеся после закрытия окна (режим демона) — возможность повторного подключения локально или по сети, а также двусторонняя интеграция с tmux;
-
поддержка жирного и курсивного начертаний шрифтов;
-
поддержка дисплеев с высокой плотностью пикселей (High-DPI);
-
маркеры вертикальных линий (позволяют быстро перемещаться к отмеченным местам в истории терминала);
-
режимы ввода в стиле Vi для более удобного выделения, копирования и вставки текста, а также функция scrolloff (отступ при прокрутке) в стиле Vi;
-
эффект размытия (blur) для прозрачного фона (поддерживается в Windows 10 и новее, а также в графических средах KDE и GNOME в Linux);
-
поддержка фоновых изображений с возможностью размытия;
-
перезагрузка конфигурации «на лету» (без перезапуска программы);
-
поддержка 256 цветов и режима Truecolor;
-
настройка сочетаний клавиш;
-
цветовые схемы;
-
профили (групповые настройки: цветовая схема, командная оболочка, сопутствующее поведение);
-
синхронизированный рендеринг;
-
автоматический перенос текста;
-
кликабельные гиперссылки (через стандарт OSC 8);
-
управление буфером обмена (через стандарт OSC 52);
-
поддержка встроенных изображений в формате Sixel;
-
поддержка векторной графики ReGIS (стандарты VT330/VT340);
-
расширение VT для захвата содержимого буфера страницы терминала (позволяет быстро извлечь текущий текст);
-
встроенная поддержка индикаторов выполнения (progress bar), выполненных в стиле шрифта Fira Code;
-
режим «только для чтения» (защита от случайного ввода пользователем, например, нажатия Ctrl+C в запущенном приложении);
-
поддержка программируемой хостом строки состояния (VT320).

Изменения и дополнения в Contour версии 0.8:
-
«командные блоки», упрощающие навигацию по истории команд и управление их выводом. Contour теперь отслеживает отдельные команды, отображая код завершения, время выполнения, длительность процесса и рабочий каталог. Команды, завершившиеся с ошибкой, помечаются красным цветом, а выполняющиеся в данный момент — желтым. Пользователи могут сворачивать вывод команды до одной строки — это удобно при работе с объемными логами или командами, генерирующими сотни строк текста. В боковой панели (gutter) теперь размещены элементы управления сворачиванием, а также опциональные номера строк и временные метки. Кроме того, реализован «закрепленный» заголовок команды: он остается видимым при прокрутке вывода, позволяя всегда понимать, к какой именно команде относятся отображаемые данные;
-
улучшена и навигация по командам: теперь можно быстро перемещаться между приглашениями командной строки с помощью сочетаний клавиш Ctrl+Shift+Up и Ctrl+Shift+Down, копировать предыдущие команды или их вывод, а также получать системные уведомления о завершении длительных операций, если они выполняются в неактивном окне терминала. По умолчанию уведомления приходят для команд, выполнение которых заняло не менее 10 секунд;
-
автоматическое распознавание URL-адресов и путей к файлам в выводе терминала. Их можно открывать, нажав Ctrl+клик; поддерживаются также пути, содержащие указания на конкретные строки и столбцы. Полностью переработан механизм поиска: вместо прежней текстовой строки теперь используется графическая панель поиска с отображением количества найденных совпадений, кнопками навигации и настройками учета регистра;
-
что касается производительности, то, согласно результатам тестов разработчиков, скорость обработки обычного текста выросла со 166,6 МБ/с до 310,9 МБ/с, а скорость обработки текста с цветовым оформлением — с 42,7 МБ/с до 281,9 МБ/с. Производительность полноэкранных терминальных приложений значительно возросла: показатель увеличился с 55,6 МБ/с до 593,2 МБ/с;
-
улучшена работа с графическим контентом: в графический протокол Kitty добавлена поддержка анимационных кадров. Значительно оптимизирована обработка данных при работе с большим количеством изображений — в одном из тестов время выполнения задачи сократилось с 7,55 до 1,06 секунды;
-
расширена поддержка Bash, Zsh, Fish, Nushell и PowerShell. Кроме того, реализована поддержка механизма отслеживания контекста OSC 3008 от systemd. Это позволяет системам, использующим systemd версии 258 или новее, автоматически определять границы команд, коды завершения и рабочие директории без дополнительной настройки оболочки;
-
возможность выбора графического процессора (GPU) для рендеринга в Linux и Windows, улучшенная работа с Unicode и шрифтами, настраиваемые цвета вкладок, а также функция сохранения положения окна между запусками программы;
-
исправлен ряд ошибок, связанных с изменением размера окна терминала, историей прокрутки, SSH-соединениями, уведомлениями Flatpak, постоянными сессиями демона и вводом данных с клавиатуры в Windows. Также устранены причины сбоев, «зависаний» и чрезмерного потребления памяти, что повысило общую стабильность работы приложения.
