LINUX.ORG.RU

Вышла новая версия библиотеки notcurses 2.0

 , , ,


3

2

Автор библиотеки notcurses выпустил новую версию 2.0 «stankonia». В этом релизе зафиксирован стабильный API библиотеки.

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

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

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

К выходу этой версии, на библиотеку были портированы два приложения, ранее использовавшие ncurses: менеджер блочных устройств Growlight и утилита для сетевых атак Omphalos.

Основной целью данного релиза была стабилизация API, также было исправлено более 60 ошибок.

Демо видео к релизу

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

★★

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

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

Хорошо. Но тогда уж проще интерфейс на Qt запилить. Зачем пыжиться с SDL?

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

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

Легковесные терминальные приложения всегда нужны.

Для таких терминальных приложений хватает и обычного ncurses. Легковесным терминальным приложениям не нужны эти понты с кучей цветов.

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

Мониторы ресурсов, профайлеры и прочие тулзы.

Дёшево, сердито и функционально на старом-добром ncurses → systat и выглядит оно вот так. Там ещё с десяток скринов на всё, что душа пожелает.

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

Вот как ты будешь SDL по ssh пробрасывать?

Например через X11 forwarding

Я с домашней машины захожу по ssh на рабочую, оттуда по ssh на джамп-хост, оттуда по ssh на прод.
А теперь расскажи как мне на домашней машине - Windows - настроить это в случае X11 forwarding?
А в случае простого ssh, это тривиальная задача с PyTTY.

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

Потому что терминальным приложениям тоже нужен нормальный интерфейс.

Нет не нужен. Для доступа к файловой системе есть SFTP.

Напомни, как через sftp посмотреть свободное место?

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

Напомни, как через sftp посмотреть свободное место?

https://winscp.net/eng/docs/ui_fsinfo (скриншот).

SFTP protocol version 6 lets one check available space (SSH_FXP_EXTENDED request name space-available).

Есть df -k в которой нет никакой псевдографики и ncurses.

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

А теперь расскажи как мне на домашней машине - Windows - настроить это в случае X11 forwarding?

На винду иксы вполне можно поставить https://superuser.com/a/1332739

А в случае простого ssh, это тривиальная задача с PyTTY.

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

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

некий стандартный протокол общения между самим приложением и его интерфейсом через какие-нибудь сокеты

Лучше через ssh, получится более универсальное решение и авторизация будет доступна автоматически. Есть библиотеки C/C++ и других языков для работы с ssh.

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

Мододёжжжж… в наше время было 4k intro. ;)

4k и 64k intro было в 90х, про более ранюю демосцену мне ничего не известно. собственно я в курсе про демосцену 90х, дальше уже не в курсе.

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

В теории можно было б для каждого нужного приложения делать полностью отцепляемый GUI и некий стандартный протокол общения между самим приложением и его интерфейсом через какие-нибудь сокеты, и этот самый протокол чтоб можно было по сети гонять. И программа-интерфейс может запускаться на винде, ей через какие-то пайпы пробрасывают возможность говорить с приложением на удаленном хосте… хотя это сейчас тупо решают написанием веб-морды.

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

alwayslate ★★ ()

Пособирал, позапускал разное. Какое вырвиглазие! Разве что ./menu отдалённо похоже на что-то для людей. Все остальные примеры данного разработчика очень хочется развидеть. Надеюсь в живой природе таких экземпляров не встречу, ну или кто-нибудь сможет слепить на ней что-нибудь пристойное хотя бы уровня jed или mc.

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

Я с домашней машины захожу по ssh на рабочую, оттуда по ssh на джамп-хост, оттуда по ssh на прод.

Ну это всё решаемо, я протаскивание нужных портов через 3-4 хоста спокойно делаю, путем ведения на домашнем ноуте соответствующего конфига .ssh/config – в нём отлично цепочки пробросов делаются, сразу на конечные хосты

BydymTydym ()

Вообще, забавная штуковина. Надо бы глянуть поближе API. Я одно время попытался использовать Urwid, но не осилил, честно сказать. Не то чтоб прям не осилил, но очень уж там гемороя оказалось много и верстки в стиле div/span, поленился тратить время на глобокое копание… может эта либа будет по-приятнее

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

Кому-то и телнет нужен. Например, мне. Есть такие хосты юниксовые, где просто нет sshd и никогда не будет.

Тогда там есть FTP. Он даже в SanOS (utils/ftpd/ftpd.c) есть.

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

Вот telnet + ftp и использую, ибо куда деваться?..
Короче, что я хотел сказать? ssh не покрывает 100% случаев. А значит и всяческие TUI лишними не будут, хотя конечно же, настоящие индейцы помнят все ключи команд в разных ОС, даже там где маны отсутствуют в силу обстоятельств :D

Ну или должны помнить

BydymTydym ()

Прям-таки эталон ненужности. К ncurses добавили бесполезные украшательства, но при этом похерили совместимость. На кой оно может понадобится кроме написания демок ради написания демок?

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

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

9P и Rio уже давно есть на практике, а линупсоиды всё пытаются костыли теоритезировать.

korvin_ ★★★★★ ()

это прекрасно. а поддержка keypad есть?

в ncurses ее из-за сраной «совместимости», которая сегодня никому не нужна (кругом один линукс уже и так) поддержки кейпада толком нет, да и вообще он идиотский. писал я под него, страх и ужас. про thread safe вообще молчу.

ncurses давно требует замены.

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

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

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

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

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

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

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

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

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

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

Из видео-демонстрации: burns 20% cpu. Ага.

Это уже слишком толсто, ты хотя бы контекст привёл. Там сравниваются два консольных видеоплейера, и notcurses рендерит картинку с в два раза большим разрешением, потребляя при этом всего лишь 20% ЦПУ.

Дёшево, сердито и функционально на старом-добром ncurses → systat и выглядит оно вот так.

Дёшево, сердито и не юзабельно. Там даже цветов нет, нихера не видно что где. Это пример как не надо делать текстовый интерфейс. Точнее, как его делали в дремучие времена ч/б терминалов.

Сейчас XXI-век, надо стремится к такому

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

Например через X11 forwarding

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

бомбит от того, что за целый год сидения на своей убунточке, про X11 forwarding первый раз услышал? ну, бывает

anonymous ()