Contour 0.7.0

1000px.jpg

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
  • улучшено измерение ширины символов 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 раз