Ncurses (new curses) è una libreria di funzioni software che gestisce il display di un'applicazione su un terminale a caratteri

Ncurses (new curses) è una libreria di funzioni software che gestisce il display di un'applicazione su un terminale a caratteri. Essa fornisce un'API, che supporta funzionalità grafiche e l'utilizzo del mouse su un terminale a caratteri in modo indipendente dalle caratteristiche del terminale stesso.

Queste librerie appaiono alquanto ostiche anche se in realtà sono di una faciltà e comodità sconcertante.

La libreria ncurses rappresenta un'implementazione freeware della precedente libreria curses per SVr4 (UNIX System V Rel. 4 di AT&T) della quale include ed estende le capacità.

Il codice originariamente scritto da Pavel Curtis, sviluppato da Zeyd Ben-Halim, Eric S. Raymond, e successivamente da Thomas Dickey e Jurgen Pfeifer, Alexander V Lukyanov, Philippe Blain, Sven Verdoolaege, è manutenuto dal Progetto GNU e distribuito con licenza MIT.


Librerie ed utility

Il pacchetto GNU Ncurses comprende le librerie di programmazione libcurses, libpanel, libmenu e libform ed include una serie di utility che sono:

  • captoinfo: Converte una descrizione termcap in una descrizione terminfo.
  • clear: Pulisce lo schermo.
  • infocmp: Traduce, confronta o stampa descrizioni terminfo.
  • infotocap: Converte una descrizione terminfo in una descrizione termcap.
  • reset: Riavvia un terminale impostandone i valori di default.
  • tack: Esegue un test sul corretto inserimento nel database terminfo.
  • tic: Compila un file terminfo per le funzioni delle librerie ncurses.
  • toe: Mostra l'elenco di tutti i tipi di terminale supportati con una descrizione.
  • tput: Rende disponibili alla shell i valori delle risorse dipendenti da terminale.
  • tset: Consente l'inizializzazione di un terminale.
Storicamente, il primo antenato delle curses furono le routine scritte per fornire la gestione dello schermo al gioco rogue; utilizzavano il già esistente database termcap per descrivere le capacità di un terminale. Queste routine furono raccolte in una libreria documentata e rilasciata con le prime versioni del BSD UNIX.


UNIX System III dei Bell Labs si caratterizzava con una libreria curses riscritta e molto migliorata. Introduceva il formato terminfo. Terminfo si basa sul database termcap di Berkeley, ma contiene un numero di migliorie ed estensioni. Furono introdotte le capacità parametrizzate, rendendo possibile la descrizione di attributi video multipli, colori e la gestione di terminali molto più insoliti di quanto fosse possibile con termcap. Nel successivo System V di AT&T, le curses si evolsero nell'usare ancor più facilitazioni ed offrire più capacità, andando più in là delle curses BSD in potenza e flessibilità.



Per poter usare le funzioni di grafica delle ncurses, la prima funzione da chiamare è initscr() la quale inizializza tutte le strutture della libreria dopo aver determinato il tipo di terminale ecc. initscr() causa anche la cancellazione dello schermo ed il refresh.

Una volta terminato di usare le ncurses, potremo chiudere la libreria usando la funzione endwin()

Qualsiasi modifica si faccia allo schermo, non viene solitamente visualizzata finché non si fa l'update dello stesso, in questo modo si guadagna molta velocità ridisegnando lo schermo un'unica volta invece che ogni volta che lo si modifica. L'aggiornamento dello stesso può essere eseguito con la funzione refresh.





Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

Commenti

Post popolari in questo blog

Rilasciano BlenderBot v3, un chatbot che utilizza il loro modello OPT e aprono la demo per testarlo

Componenti aggiuntivi di Google Workspace

Come rimuovere il virus che trasforma le cartelle in collegamenti nella tua pendrive.