LINUX.ORG.RU

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

 , , ,

Вышла новая версия библиотеки 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 ()
Последнее исправление: cocucka (всего исправлений: 1)

Зачем натягивать сову на глобус? Почему б тогда не писать на каком-нибудь SDL2?

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

Потому что терминальным приложениям тоже нужен нормальный интерфейс. Вот как ты будешь SDL по ssh пробрасывать?

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

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

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

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

Для мониторинга лучше веб уже

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

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

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

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

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

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

beastie ★★★★★
()

На это будут портировать mc?

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

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

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

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

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

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

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

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

Это уже решено с помощью ncurses (или, емнип, slang). Какую задачу решает то, о чём новость?

А, я думал это ncurses.
Тогда присоединяюсь к вопросу.

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 ★★
()
Ответ на: комментарий от X512

Более универсальное это через какие-нибудь Unix domain socket, которые потом уже можно в ssh форвардить если надо.

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

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

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

alwayslate ★★
()

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

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

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

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

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

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

+1

Можно на Qt написать и будет везде работать.

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

Нет не нужен

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

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 ★★★★★
()

А новый молодёжный инсталлятор Ubuntu Server на чём написан? А инсталлятор всяких vmware esxi? - там тоже pseudo ui

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

Что-то у меня 403 на оба линка, по ip забанили?

УМВР.

Есть ещё GitHub.

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

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

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

anonymous
()

Для roguelike игр такая библиотека может пригодиться.

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

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

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

korvin_ ★★★★★
()

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

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

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

anonymous
()

Нет, мой терминал к такому не готов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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