NCurses

könyvtár szöveges felhasználói felületekre

Az Ncurses egy karaktergrafikus felhasználói felületet biztosító interfész és programkönyvtár. A mögöttes elv, hogy a grafikus, áttekinthető felületet egy terminál lehetőségeivel jelenítse meg. Segítségével keretek és ablakok, valamint fejlécek jeleníthetőek meg. Ennek oka, hogy egyes esetekben grafikus felület nem áll rendelkezésre, viszont a program kezeléséhez célszerű valamilyen menüszerű rendszert használni. A leggyakoribb példa a számítógépes szerverek működése.

ncurses

FejlesztőThomas E. Dickey
Legfrissebb stabil kiadás6.4 (stabil verzió, 2022. december 31., https://ftpmirror.gnu.org/ncurses/ncurses-6.4.tar.gz)[1][2]
Programozási nyelvC
Operációs rendszer
Kategória
LicencX11 license
A ncurses weboldala
Egy ncurses felületű segédprogram (YaST csomagkezelő)

Eredetileg a BSD 4.4-es verziójában található, abbahagyott curses felület megújításaként született, erre utal az „n” betű a nevében.[3]

Története szerkesztés

Amikor a vi szövegszerkesztő készült a korai BSD rendszerekhez, a képernyő kezelését a termcap adatbázisra alapuló eljárások képezték. Ezeket később összevonták, ez lett a curses könyvtár, amit a Kaliforniai Egyetem Berkeley-i kampuszának hallgatói készítettek. Az első kiadást 1980 végén, a 4.0BSD rendszerrel jelentették meg.[* 1]

Miután végzett, az egyik a hallgatók közül a termcap könyvtárt terminfo néven javította, majd a curses könyvtárat adaptálta. Ez a javított változat 1984 elején került a nagyközönség elé. 1986 végén aztán egy alaposan feljavított curses-változat került a BSD rendszerekbe, ami majd tíz éven keresztül szolgálta a fejlesztőket.[4]

A 90-es évek elején a curses kezdett egyre inkább problémássá válni, különösen a C++ megjelenésével. Ennek érdekében szinte teljes egészében újraírták, ez lett az ncurses, azaz new curses. 1995-ben aztán a curses fejlesztése lezárult, a fejlesztők mindenkinek az ncurses-re való áttérést javasolták. Jelenleg az egyik legelterjedtebb TUI felület, számtalan alapvető szoftver használja.

Programok ncurses felülettel szerkesztés

Nagyon sok programban találkozhatunk az ncurses felülettel, a teljesség igénye nélkül néhány:

Példaprogramok szerkesztés

Az ncurses segítségével változatos programok készíthetőek. Alább néhány egyszerű példával szemléltetjük ezt.

Helló világ! szerkesztés

#include <curses.h> //Ez az ncurses fejlécfájlja
#include <stdio.h> //A standard ki/bemeneti fejléc
#include <stdlib.h> //Néhány apróság miatt
#include <unistd.h> //A sleep() függvény miatt
#include <locale.h> //Ékezetes betűk - UTF-8

int main(void) {
    WINDOW * mainwin; //Egy ablak létrehozása
    char * locale; //Az ékezetes betűk miatt
    
    mainwin = initscr(); //Inicializáljuk az ablakot
    locale = setlocale( LC_ALL, "" ); //Inicializáljuk a betűket
    
    mvaddstr( 13, 33, "Hello világ!" ); //Nagyjából a képernyő közepére (13. sor, 33. oszlop) kiírjuk a szöveget
    refresh(); //Az ablakban jelenjen is meg a felirat
    sleep(4); //Várunk egy picit
    delwin(mainwin); //Töröljük az ablakot
    endwin(); //Be is fejezzük
    refresh(); //Tudjon is róla
    
    return EXIT_SUCCESS; //Sikeresek voltunk
    }

Megjegyzések szerkesztés

  1. Az AT&T a programozók nevét nem örökíti meg a forráskódban, így kevés információ van a készítők személyéről...
  2. A vim is ilyen, de annak esetében az ncurses kevésbé nyilvánvalóan van jelen

Hivatkozások szerkesztés

  1. https://invisible-island.net/ncurses/announce.html, 2023. január 1.
  2. Thomas E. Dickey: ncurses 6.4 (angol nyelven), 2022. december 31. (Hozzáférés: 2023. január 1.)
  3. Announcing ncurses 6.3. (Hozzáférés: 2022. július 16.)
  4. A Brief History of Curses. (Hozzáférés: 2022. július 18.)

Kapcsolódó szócikkek szerkesztés