Выйшла новая версія бібліятэкі notcurses v1.4.x “the saga continues! wu-tang! wu-tang!»
Notcurses гэта бібліятэка TUI для сучасных тэрмінальных эмулятараў. Літаральна перакладаючы – не праклёны (not curses). Яна напісана на З, з выкарыстаннем C++-safe headers. Даступныя абгорткі для Іржа, C + + и Пітон.
Што гэта такое: бібліятэка, якая спрашчае складаныя 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» ад аўтара
Крыніца: linux.org.ru