Представлен открытый мультиплатформенный эмулятор терминала Contour

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

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев