Contour 0.7.0

17 августа состоялся выпуск 0.7.0 кроссплатформенного эмулятора терминала Contour.
Основные возможности:
- Поддержка всех четырёх основных платформ: Linux (X11 и Wayland), macOS, FreeBSD и Windows.
- GPU-оптимизированный рендеринг.
- Вкладки и разделение окна.
- Постоянные сессии (экспериментально!), сохраняющиеся после закрытия окна (режим демона) — возможность повторного подключения локально или по сети, а также двусторонняя совместимость с
tmux. - Поддержка шрифтов с лигатурами.
- Юникод: поддержка кластеров графем и эмодзи (включая ZWJ, VS15 и VS16).
- Поддержка High-DPI.
- Поддержка ввода в стиле Vim.
- Режим подсказок, позволяющий быстро выполнять действия с кликабельными элементами (URL и IP адресами, путями к файлам, хешами коммитов Git), используя только клавиатуру.
- Поддержка формата растровой графики Sixel.
- Поддержка инструкций векторной графики ReGIS (vt100.net, Википедия).
- Цветовые схемы и профили настроек.
- Настраиваемые сочетания клавиш.
- Поддержка большого количества распространённых и новых (или нестандартных) управляющих последовательностей.
- Проговаривание выделенного текста (используя Qt Speech).
- И многое другое.
Проект написан на языке C++ (стандарт C++23) и Qt 6, и распространяется по лицензии Apache 2.0.
Основные новшества
Вкладки, разделения и макеты
- вкладки в настраиваемом заголовке окна;
- разделение панелей: разделить активную панель по вертикали (
Ctrl+Shift+E), по горизонтали (Ctrl+Shift+O), закрыть панель (Ctrl+Shift+X) и переключить фокус на панель (Alt+Shift+стрелки); - добавлены действия по управлению панелями: обмен местами активной панели с соседней (
Ctrl+Alt+стрелки), изменение размера (Ctrl+Shift+Alt+стрелки), изменение ориентации разделения (Ctrl+Shift+\), перемещение панели в новое положение (по умолчанию без назначенных клавиш) и переключение размера активной панели (TogglePaneZoom,Ctrl+Shift+Z); - перемещение, переименование и изменение цвета вкладок, в GUI и командами;
- добавлены настраиваемые макеты: именованные наборы вкладок с индивидуальными для каждой вкладки настройками команд, рабочей директорией, названием, цветами, профилем и разделением панелей;
- добавлен параметр профиля
dim_unfocusedдля уменьшения яркости неактивной панели; значение 0.0 (по умолчанию) отключает эту возможность; - добавлены параметры
tab_bar_position(Top/Bottom) иtab_bar_visibility(Always/Never/Multiple) для размещения панели вкладок в верхней или нижней части окна, а также для её полного скрытия или отображения только при открытии нескольких вкладок.
- добавлена палитра команд (
Ctrl+Shift+P) — всплывающее окно с возможностью поиска, со списком всех команд с описанием и сочетаниями клавиш; - для изменения конфигурации добавлена страница настроек с графическим интерфейсом. Настройки сгруппированы в сворачиваемые разделы с полем поиска над ними;
- добавлено контекстное меню при клике правой кнопкой мыши в терминале: копирование, вставка и выделение всего текста, открытие гиперссылки под курсором, открытие текущей директории, разделение и закрытие панелей, переключение профиля, а также мягкий или жёсткий сброс терминала;
- добавлено контекстное меню при клике правой кнопкой мыши по пустой части строки заголовка или панели вкладок: открыть новую вкладку (с возможностью выбора профиля), закрыть текущую вкладку или все вкладки, а также переключение режима отображения панели вкладок («всегда видна», «автоматическое скрытие» и «скрыта»).
- при наведении курсора на текст, содержащий
OSC 8, отображается всплывающая подсказка с адресом гиперссылки. Локальный адресfile://отображается в виде простого пути. Функцию можно отключить в параметре конфигурацииhyperlink_hover_tooltip: false; - добавлена поддержка открытия обнаруженных путей локальной файловой системы (по
Ctrl-клик).
- положение курсора терминала передаётся в операционную систему, благодаря чему программы увеличения экрана (Windows Magnifier, KDE Plasma zoom) и программы чтения экрана могут отслеживать его движение; при интеграции с оболочкой (используя
OSC 133) командная строка оболочки в режиме реального времени дополнительно отображается в виде отдельной области, на которую можно перевести фокус; - добавлено описание элементов интерфейса окна для программ чтения экрана: панель вкладок читается как список вкладок, названия которых озвучиваются при переключении; для кнопок окна и вкладок озвучиваются функции вместо названий значков; каждое поле настроек имеет собственную подпись;
- добавлена возможность чтения выделенного текста вслух синтезатором речи операционной системы — используя контекстное меню или комбинацию клавиш
Ctrl+Shift+S. Для работы требуется модуль Qt Speech и установленный голос, иначе эта функция не будет доступна;
- в параметр
input_mappingдобавлена поддержкаWheelLeftиWheelRight; - добавлена плавная прокрутка колесиком мыши при включенном параметре
smooth_scrolling; - исправлены многие ошибки обработки ввода.
- улучшено измерение ширины символов Unicode: кластер графем измеряется как единое целое, поэтому последовательности ZWJ, модификаторы оттенков кожи и индийские конъюнктные символы занимают столько столбцов, сколько им действительно требуется, а не определяются по размеру их первого кодового пункта;
- улучшена функция подбора запасного шрифта: если какой-либо символ не поддерживается ни одним из шрифтов в цепочке, теперь определяется, какой из установленных шрифтов его действительно поддерживает, а не просто прекращается поиск по достижении конца цепочки;
- при использовании запасного шрифта предпочтение отдаётся моноширинному шрифту, а не первому найденному; пропорциональный шрифт по-прежнему используется в тех случаях, когда в моноширинном шрифте нет нужного символа, поэтому отображение текущего контента не прерывается. Параметр
strict_spacingтеперь действительно отклоняет запасные шрифты, не являющиеся моноширинными; - исправлены многие ошибки рендеринга.
- добавлена поддержка графического протокола Kitty (APC G): передача, отображение, размещение и удаление изображений в формате PNG или в исходном формате RGB/RGBA, включая передачу блоками;
- добавлена поддержка расширения iTerm2
OSC 1337: отчёт о возможностях терминала и встроенные изображения; - добавлена поддержка векторной графики ReGIS (
DCS p): линии, окружности, дуги, интерполированные кривые, заполненные многоугольники, затенение, текст, цветовые регистры со спецификациямиHLS/RGB, отчёты о положении, интерактивный локатор и макрографы. Теперь ReGIS указывается в основных атрибутах устройства (функция 3) и обрабатывается командойXTSMGRAPHICS; - добавлена экспериментальная поддержка протокола Good Image Protocol (GIP) — протокола на основе DCS для отображения растровых изображений с именованными пулами изображений, механизмом вытеснения по принципу LRU, тремя слоями композиции (ниже/заменить/выше), настраиваемыми правилами изменения размера и выравнивания, поддержкой форматов
Auto/PNG/RGB/RGBAс автоматическим определением формата, а также объявлением о поддержке DA1 с помощью кода 90. Новая командаcontour catпозволяет отображать изображение из командной строки с использованием этого протокола;
- добавлена поддержка меток командной строки
OSC 133(A, C и D), благодаря чему Contour может отличать командную строку от вывода команды, что обеспечивает работу функции «скопировать вывод последней команды»; ранее эти метки записывались только при включенном протоколе семантических блоков (режимDEC 2034); - добавлены действия
SelectAll,SoftReset(DECSTR),CopyHyperlink,CopyLastCommandPrompt,CopyLastCommandOutputиCopyLastCommandBlock
- добавлена поддержка протокола Kitty (
OSC 66) для настройки размера текста: текст рисуется с высотой и шириной в несколько ячеек, с использованием дробных масштабов и выравниванием внутри блока; - добавлена поддержка протокола Kitty (
OSC 22), благодаря чему приложение может управлять формой курсора мыши; - добавлена поддержка протокола Kitty Clipboard (
OSC 5522); - добавлена поддержка индикатора выполнения в стиле ConEmu (
OSC 9;4), который уже используется менеджерами пакетов, инструментами сборки и установщиками, а также поддерживается Windows Terminal, iTerm2 и Ghostty; - добавлена поддержка уведомления об изменении размера окна (режим
DEC 2048); - добавлена поддержка переменных среды
TERM_PROGRAMиTERM_PROGRAM_VERSION; - добавлена поддержка
OSC 52для чтения содержимого буфера обмена; - также добавлена поддержка многих других протоколов и управляющих последовательностей эмуляторов терминалов.
>>> Подробнее на сайте проекта и в первой редакции новости
Linux.org.ru прочитано 1106 раз
