Den nye versjonen av notcurses v1.4.x «sagaen fortsetter! wu-tang! wu-tang!» er her
Notcurses er et TUI-bibliotek for moderne terminalemulatorer. Bokstavelig talt oversatt – ingen forbannelser (not curses). Det er skrevet i C, med bruk av C++-sikre overskrifter. Wrapper for Rust, C++ og Python.
Hva det er: et bibliotek som forenkler komplekse TUI i moderne terminalemulatorer, og støtter sterke farger og Unicode best mulig. Mange oppgaver som tradisjonelt er delegert til curses, kan utføres med notcurses (og omvendt).
Hva det ikke er: en kompatibel implementering av X/Open curses eller en erstatning for ncurses på eksisterende systemer.
Notcurses avviser API-en X/Open Curses, som leveres som en del av Single UNIX Specification. Denne spesifikasjonen er lenge utdatert og støtter for eksempel ikke terminalfunksjoner som uindeksert 24-bits farge. Dermed er ikke notcurses en erstatning for curses. Den er mindre portabel, og definitivt testet på færre maskinvare.
Når det er mulig, bruker notcurses terminfo-biblioteket som følger med ncurses, og utvinner stor nytte av dets portabilitet.
Notcurses åpner opp utvidede funksjonsmuligheter for interaksjon med brukere på arbeidsstasjoner, telefoner, bærbare PC-er og nettbrett.
Hvorfor bruke dette ikke-standardbiblioteket?
Trådsikkerhet og effektiv bruk i flertrådede programmer har vært en designbetraktning fra starten av.
Et mer korrekt utformet API sammenlignet med X/Open:
Eksporterte identifikatorer har prefiks for å unngå kollisjoner i navnerom.
Objektfilen til bibliotekt eksporterer et minimalt sett med symboler. Der det er hensiktsmessig, brukes statisk kode kun for mindre overskrifter. Dette letter optimaliseringen av kompilatoren og reduserer laste tiden.
-
Alle API-er støtter fra starten av et universelt teikensett (Unicode). API-er for celler er basert på konseptet Unicode’s Extended Grapheme Cluster.
Visuelle muligheter, inkludert bilder, skrifttyper, video, høykontrasttekst, sprites og transparente områder. Alle API-er støtter opprinnelig 24-bits farge, kvantifisert etter behov for terminalen.
-
Lisens: Apache2, i motsetning til drama i flere handlinger, som er en licens for ncurses (den sidste opsummeres som «omformulering af MIT-X11»).
Siden den sidste betydelige udgivelse 1.1.0 er der tilføjet en enorm mængde funktioner. De vigtigste ændringer:
Widget til input af strenge af vilkårlig form med binding til læsestrenge.
Subprocess-widget til at generere en subprocess, styre den og streamføre dens resultater tilbage.
I Linux 5.3+ anvendes en ny mekanisme clone3+pidfd til at styre processer uden race conditions.
Fdplane-widget til at streamføre vilkårlige filbeskriver til en flade (hvorpå subprocessen er bygget). Begge tillader tilbagekald for at style eller på anden måde behandle tekst.
Rotation af flader og visuelle effekter. Indlæsning af visualiseringer fra hukommelsen. Vilkårlig blit af RGBA/BGRx.
Menuer kan placeres på en hvilken som helst (eller begge) af de øverste og nederste flader.
Store forbedringer i Direct-mode.
Polyfills, gradienter og højkontrast tekst.
Tetris er tilføjet som eksempel.
C++ wrappers fra Marek Habersack har nu mulighed for at kaste undtagelser (hvis nødvendigt).
Python- og Rust-FFI er opdateret og testet.
Video demo med kommentarer fra forfatteren.
Bogen «Hacking The Planet! with Notcurses» af forfatteren.
Kilde: linux.org.ru

