
Представлен открытый проект мультиплатформенного эмулятора терминала под названием 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. Также устранены причины сбоев, «зависаний» и чрезмерного потребления памяти, что повысило общую стабильность работы приложения.

