LINUX.ORG.RU

Вышла notcurses v1.4.1 — библиотека для современных текстовых интерфейсов

 , , ,


4

4

Вышла новая версия библиотеки notcurses v1.4.x «the saga continues! wu-tang! wu-tang!»

Notcurses это библиотека TUI для современных терминальных эмуляторов. Буквально переводя – не проклятия (not curses). Она написана на С, с использованием C++-safe headers. Доступны обёртки для Rust, C++ и Python.

Что это такое: библиотека, упрощающая сложные TUI на современных терминальных эмуляторах, максимально поддерживающая яркие цвета и Unicode. Многие задачи, делегированные curses, могут быть выполнены с помощью notcurses (и наоборот).

Чем это не является: совместимой реализацией X/Open curses или заменой ncurses на существующих системах.

Notcurses отказывается от API X/Open Curses, поставляемого как часть Single UNIX Specification. Эта спецификация давно устарела и, например, не поддерживает такую функциональность терминала, как неиндексированный 24-битный цвет. Как таковая, notcurses не является заменой curses. Она менее портативна, и определенно протестирована на меньшем количестве оборудования. Когда это возможно, notcurses использует библиотеку terminfo, поставляемую вместе с ncurses, извлекая большую пользу из ее переносимости. Notcurses открывает расширенные функциональные возможности для взаимодействия с пользователями на рабочих станциях, телефонах, ноутбуках и планшетах.

Зачем использовать эту нестандартную библиотеку?

  • Потокобезопасность и эффективное использование в многопоточных программах с самого начала было проектным соображением.

  • Более правильно оформленное API по сравнению с X/Open:

    • Экспортируемые идентификаторы имеют префикс, чтобы избежать коллизий в пространствах имен.

    • Объектный файл библиотеки экспортирует минимальный набор символов. Там, где это целесообразно, используется статический код только для строчных заголовков. Это облегчает оптимизацию компилятора и сокращает время загрузки.

  • Все API изначально поддерживают универсальный набор символов (Unicode). API для ячеек основан на концепции Unicode’s Extended Grapheme Cluster.

  • Визуальные возможности, включая изображения, шрифты, видео, высококонтрастный текст, спрайты и прозрачные области. Все API нативно поддерживают 24-битный цвет, квантованный по мере необходимости для терминала.

  • Лицензия Apache2, в отличие от драмы в нескольких актах, которая является лицензией ncurses (последняя резюмируется как «переформулирование MIT-X11»).

С момента предыдущего значимого релиза 1.1.0 было добавлено огромное количество функций. Основные изменения:

  • Виджет для чтения для ввода строк произвольной формы с привязкой к строкам для чтения

  • Виджет subprocess для порождения подпроцесса, управления им и потоковой передачи его результатов обратно.

  • В Linux 5.3+ используется новый механизм clone3+pidfd для управления процессами без race condition.

  • Виджет Fdplane для потоковой передачи произвольного файлового дескриптора на плоскость (на которой построен подпроцесс). Оба позволяют обратным вызовам стилизовать или иным образом обрабатывать текст.

  • Вращение плоскостей и визуальных эффектов. Загрузка визуализаций из памяти. Произвольное блитирование RGBA/BGRx.

  • Меню можно размещать на любой (или на обеих) из верхних и нижних плоскостей.

  • Большие улучшения в режиме Direct.

  • Polyfills, градиенты и высококонтрастный текст.

  • Добавлен тетрис в качестве примера.

  • Обертки C++ от Marek Habersack получили возможность бросать исключения (если нужно).

  • Python и Rust FFI обновлены и протестированы.

Видео демо с комментариями автора Книга «Hacking The Planet! with Notcurses» от автора

>>> Подробности



Проверено: alpha ()

Ответ на: комментарий от cocucka

Визуальные возможности, включая изображения, шрифты, видео, высококонтрастный текст, спрайты и прозрачные области.

к библиотеке для построения текстового интерфейса.

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

Отрендерить ты сможешь все что угодно, оно будет отдаунскейелeно в 80х25.

Вот, для таких шлангов как ты, пример рендеринга шрифтов данной либой. На терминале справа.

cocucka ()
Последнее исправление: cocucka (всего исправлений: 1)
Ответ на: комментарий от Kolins

Автор вроде как эмулятор NES адаптировал, аналог dialog запилил, а так пока особо софта использующего эту либу нет. Оно ж несовместимо с curses/ncurses, значит надо портировать, что, по уверениям автора, не очень сложно.

cocucka ()

в отличие от драмы в нескольких актах, которая является лицензией ncurses

Вообще-то это пост о лицензии, который освещает её историю.

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

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

Не важно сколько заняло. Противопостовлять лицензию посту об истории другой лицензии – шиза, достояная пользователя терминала с прозрачным фоном.

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

ЕМНИП первый Leisure Suit Larry был как раз в 16 цветах, что не особо мешало фантазии. Хотя 256 цветная версия все ж лучше. Но те времена давно прошли и сейчас народ требует FullHD ASCII porn. Тем более, что технологии позволяют.

cocucka ()

Название плохое, а либа (сужу по возможностям, API и код пока не глядел) очень хорошая. Можно выводить рогалики на новый уровень.

Приютубогогочухонца

:D

LINUX-ORG-RU ()
Ответ на: комментарий от saahriktu

Не, не хватит. Мне вот приходится додумывть что у тебя на аватарке. Вроде как это самурай в шляпе круглой и в плаще расставил ноги и руки вверх поднял в красных перчатках и красной маске. Или это не шляпа, а причесон из 70тых типа одуванчик.

LINUX-ORG-RU ()