LINUX.ORG.RU

Contour 0.7.0

 , contour, , regis,


0

2

17 августа состоялся выпуск 0.7.0 кроссплатформенного эмулятора терминала Contour.

Основные возможности:

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

>>> Подробнее на сайте проекта и в первой редакции новости

★★★★★

Проверено: cetjs2 ()
Последнее исправление: dataman (всего исправлений: 7)
Tab* realizeLayoutTab(SessionModel& model, WindowId window, LayoutTab const& tab, PaneSeeder const& seed) {
...
 auto* modelTab = model.createTab(window);
...
 return modelTab;
}

/me негодуе

dynamic_cast
()

Постоянные сессии (экспериментально!), сохраняющиеся после закрытия окна (режим демона) — возможность повторного подключения локально или по сети

О боже! Они вмонтировали screen прямо в терминал! Сволочи! :)

pihter ★★★★★
()

Нет, кути нам не нужны в оффтопе.

sparkie ★★★★★
()

GPU-оптимизированный рендеринг.

Попробовал. Этот кусок говнокода тупо тормозит. Причём не рендеринг, а всякие штуки типа передвижения курсора перед вводимым текстом. Когда я печатаю, курсор периодически запаздывает на два-три символа. Зато рисуется на GPU, ага. Даже в казалось бы древнем убогом rxvt такого нет. Люнексоеды совсем код писать разучились?

yorshka
()
Ответ на: комментарий от mskrasnov

Вот это, кстати, зашибись. Если в чём-то и есть плюсы использования LLM в проектах, так это то, что наконец-то у говнокодеров появилась причина писать нормальные ЧЕЛОВЕКОЧИТАЕМЫЕ правила оформления кода для проекта. Потому что до этого во многих проектах все писали вразнобой и кому как в жопу глист влезет.

Проблема тут в том, что автор, похоже, просто не приходит в сознание и вместо программирования тупо пускает слюну на выхлоп своего «agentic loop из семи залуп».

yorshka
()
Ответ на: комментарий от pihter

О боже! Они вмонтировали screen прямо в терминал! Сволочи! :)

Хашимото недавно анонсировал альтернативу tmux, с сетевым шифрованием на стероидах. Говорит делал тесты, нашел самое слабое звено.

sarumeister
()
Ответ на: комментарий от AnonymUser

Проекту 7 лет, и он прекрасно обходился без всяких «ИИ».
А потом стал обрастать всякими скриптами, формами, обязательными для заполнения и т. п. Я, в общем-то, из-за этого и ушёл оттуда, когда всё это надоело.
Хотя и не так уж много и поучаствовал. :)

dataman ★★★★★
() автор топика

на фоне новости, а есть-ли сейчас вообще вменяемый эмулятор VT? есть древнючие xterm, urxvt, а прочие сосут

чтобы просто консоль, c быстрым откликом, без толстого мануала по конфигу и не завален плюшками (без GPU render, emoticons, предпросмотра порно, подсветки ссылок и всего вот этого)

ps/ есть такое ощущение, что если сейчас выпустить аппаратный VT - это будет хит. Если умело сделан и не перегружен ненужным, то он потенциально быстрый.

MKuznetsov ★★★★★
()

Очередной эмулятор терминала с нескучным обоями? А в чём уникальное торговое предложение (УТП) оно же killer feature сабжа? Зачем мне сабж если у меня на моей Windows 10 есть Windows Terminal с Git bash?

johndoe3
()
Ответ на: комментарий от AnonymUser

Сделанный ИИ?

Вот какая разница местным экспертам, LLM написала код или человек сам написал, если программа работает как задуманно автором и работает качественно? ИИ-фобию разгоняют программисты, которые боятся что их выгонят на мороз, а лица с некритичным восприятием информации повторяют за программистами

johndoe3
()
Ответ на: комментарий от water_closed

Я бы заменил Rust на Python. LLM любят Python, даже банальный Гугл поиск однажды написал мне Python скрипт, хотя я его и не просил. То же самое Copilot.

johndoe3
()
Ответ на: комментарий от yorshka

Даже в казалось бы древнем убогом rxvt такого нет.

Древние эмуляторы как раз хорошо оптимизированы по latency, иначе хакеры не поняли бы. Это хипсторам можно по 3 секунды задержку оставить, все раано они не пользуются терминалом. Им только красиво нарисовать логотип арчика, больше не нужно ничего.

bread
()
Ответ на: комментарий от johndoe3

Наверное у кого-то это фобия. Но у кого-то иного это связь «софт - разработчик - знания» из которой можно предположить, что разработчик знает как работает его софт, сможет в смолтоке рассказать что-нибудь интересное из реализации, поспорить об архитектурном подходе, рассказать о трудностях, с которыми столкнулся и их решениях, которые подсмотрел где-то ещё. Это присуще человекам во все века и позволяет пережить часть процесса, почувствовать.

water_closed
()
Ответ на: комментарий от water_closed

Сейчас есть тенденция, что бизнес сам вайб-кодит продукт без привлечения разработчика, так что никакие смолл-толки не нужны.

johndoe3
()
Ответ на: комментарий от johndoe3

Разница большая, если не сказать, - колоссальная. Большая часть программ вообще давно написана, для всех нужд. И ничего не нужно. Только в качестве лабораторных для сдачи курсовых. Основной заказчик программ - государство, и у него всё давно есть.

Т.е. не нужен ни код сгенерировнный ИИ, ни код написанный человеком. Но многие хотят быть или побыть программистами (гештальт, так сказать). Это, как хотеть заниматься греблей или шахматами или как хотеть стать писателем. Как бы и не запретишь, так как в общем чего-то плохого в таком желании нет.

Конечно, куда более важен код, написанный человек.

  1. В такой код человек вкладывает свою психологию, свои ошибки, и большой брать потом видит слабые места homo sapiens и что можно исправить в нем.
  • Окружающие знают, что человек поработал до 7 пота и стал спокойнее.
  1. Во вторых: так человек работает над самим собой, оставаясь наедине с кодом, у него появляется время подумать о смысле собственного бытия, может быть, принять какие-то важные решения для себя в жизни, определить, так сказать, вектор своего сознания.
  2. Нужно же человеку хоть что-то обсуждать, он так устроен. Политику опасно, религию вообще лучше не трогать. Вот ИИ. Можно обсужать ругать ИИ, он не даст сдачи (как боксёрская груша) и не посадит на пяток лет за политический анекдот. По крайне мере пока.
AnonymUser
()
Последнее исправление: AnonymUser (всего исправлений: 2)
Ответ на: комментарий от AnonymUser

Тут нет никакой клоунады. Я написал чистую правду. Можете искать в программировании что-то большее, но вряд ли оно там есть.

AnonymUser
()
Ответ на: комментарий от AnonymUser

Большая часть программ вообще давно написана, для всех нужд.

Бгг.

hobbit ★★★★★
()
Ответ на: комментарий от mittorn

«такая штука» называется «терминальный мультиплексер» и может быть в любом терминале, где ты запустишь screen/tmux/byobu и пр.

alegz ★★★★★
()
Ответ на: комментарий от alegz

Это не сессии. Даже если настроить терминал чтобы он запускал сразу tmux вместо shell, он не сможет потом восстановить сессии в том же виде автоматически. И в нём будут проблемы с прокруткой и другими фичами. Подобная функциональноать должна работать в самом теринале, а не прикручиванием ещё одного терминального эмулятора к нему

mittorn ★★★★★
()

и Windows.

Всего 98 МБ в архиве. =\

Radjah ★★★★★
()
Ответ на: комментарий от yorshka

писать нормальные ЧЕЛОВЕКОЧИТАЕМЫЕ правила оформления кода для проекта

Ты веришь, что человечество осилит писать непротиворечивое и понятное ТЗ?

Radjah ★★★★★
()
Ответ на: комментарий от Radjah

Так там не ТЗ. Там именно правила написания кода: используй такие-то API, такие-то паттерны и т.д. Этому не так сложно следовать, если ты не дебил. Вон даже нейронка справляется.

yorshka
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.