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 (всего исправлений: 5)

Подробности ведут на релиз нотес от 1.4.0, т.к. все значимое там.

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

Это вопрос к эмулятору терминала, а не к библиотеке для построения текстового интерфейса.

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

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

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

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

То есть с помощью этой библиотеки я смогу рендерить тахому с субпиксельным сглаживанием в режиме hintfull в третьем видео-режиме VGA?

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

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

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

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

Вот, для таких шлангов как ты

Мне, честно говоря, плевать на сабж, но за Faith No More на фоне несомненный зачёт.

dogbert ★★★★★
()

А что из прикладного софта умеет поверх этой либы работать и демонстрировать все приимущества? mc? mocp?

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

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

cocucka ★★★★☆
() автор топика

saahriktu

слишком yoba, unicode и недостаточно маргинально для этого персонажа

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

Что-то не могу не найти, он где-то в комментах или в видео упоминал, но не помню где. Может это только в планах было.

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

Тогда придётся запретить Пушкина:

По мшистым, топким берегам

Чернели избы здесь и там,

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

— Александр Пушкин, «Медный всадник»

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

Видимо, автор имеет ввиду, что сишные заголовки готовы для использования в с++ коде как есть, т.е. там есть extern "C" {...} и тд.

cocucka ★★★★☆
() автор топика

Самое время запилить свой notcmatrix с блэкджеком и пиксельартной тринити :D

anonymous
()

Годно, спасибо за то, что ты сюда это притащил.

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

typedef int class;

Флакон тебя не поймет, это же Сижка, небезопасно, уууу!

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

«Не проклинай», [s]чурка[/s] хомячок с гугло-транслятором.

«Не проклинай» будет «don’t curse».

theNamelessOne ★★★★★
()

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

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

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

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

EXL

Эмулятор NES? Серьезно? Дай линк.

Цитата из книги Hacking the Planet (with Notcurses):

I have submitted it as a backend to NEStopia and RetroArch, and intend to integrate it into Mesa as an OpenGL backend.

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

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

Весьма драматичную историю. У них заняло 12 лет чтобы ее сделать свободной.

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

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

xaizek ★★★★★
()

«the saga continues! wu-tang! wu-tang!»

«Ву-танг клан – хлам, ну его в спам».

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

Тогда придётся запретить Пушкина

Полное множество произведений Пушкина не укладывается в правила ресурса от слова совсем. // КО

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

Мож всё таки без проклятий.

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

sixel truecolor не поддерживает. Как без этого порнуху обучающие видео в ядерной консоли смотреть?

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

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

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

Ты зачем здесь это пишешь? Вопрос был про эмулятор, который испольщует notcurses для отрисовки.

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

То есть с помощью этой библиотеки я смогу рендерить тахому

Тебе уже сказали, что тахому рендерит не notcurses, а эмулятор терминала.

te111011010
()

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

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

:D

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

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

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

Там у него не просто 16 цветов, а 2 цвета на знакоместо. Это _очень большая разница с независимым цветом пиксела от соседнего.

lenin386 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.