ncurses (nové curses) je softwarová knihovna poskytující rozhraní pro tvorbu aplikací s textovým uživatelským rozhraní (TUI), které budou fungovat v různých terminálových emulátorech a na množství terminálů. Knihovna se snaží optimalizovat řídicí sekvence posílané na terminál, aby se minimalizovala latence při aktualizaci obsahu obrazovky.
Knihovna emuluje chování knihovny curses z Unixu System V Release 4.0.
Knihovna byla vyvinuta pod operačním systémem Linux, a byla portována na velké množství dalších unixových operačních systémů, ale i na OS/2 Warp.
Existují jazykové vazby ncurses pro mnoho programovacích jazyků, jako je Ada, Common Lisp, Python, Gambas, Ruby, PHP, JavaScript, Perl, Object REXX (ooRexx) a Rust.
Historie Knihovna ncurses je svobodná implementace s otevřeným zdrojovým kódem emulace knihovny curses ze System V Release 4.0 (SVr4), která byla vylepšena, aby obsahovala funkčnost již nevyvíjených curses ze 4.4 BSD. Norma XSI Curses vydaný X/Open je explicitně a blízce vytvořen podle curses ze UNIX System V.
curses
První knihovna curses byla vyvinuta na University of California v Berkeley pro operační systém BSD okolo roku 1980 pro hru Rogue, která původně používala knihovnu termcap, který byl používané v jiný programy, jako je vi editor.
Úspěch knihovny BSD curses přiměl Bellovy laboratoře k vydání vylepšené knihovny curses pro jejich Unix System V Release 2. Tato knihovna byla výkonnější a místo termcap používala terminfo. Ale kvůli strategii společnosti AT&T pro distribuci zdrojového kódu nebyla vylepšená knihovna curses převzata BSD komunitou.
pcurses Okolo roku 1982 započal Pavel Curtis práce na freewarovém klonu knihovny curses, který pojmenoval pcurses. Tato knihovna byla udržována různými lidmi až do roku 1986.
ncurses K dalšímu vylepšení knihovny pcurses došlo na konci roku 1991, když vývoj převzal Zeyd Ben-Halim.Soubor Readme v ncurses 1.8.1 uvádí "v0.1 31. července 1992" a "v1.8.1 5. listopadu 1993", což souhlasí se souborem NEWS (changelog) Nová knihovna byla uvolněna jako ncurses 1.8.1 v listopadu 1993. Další vývoj do verze 1.8.8 (M1995) podporoval Eric S. Raymond, který přidal formuláře a nabídky, jejichž autorem byl Juergen Pfeifer. Od roku 1996 ncurses udržuje Thomas E. Dickey.
Většinu volání ncurses lze snadno převést na staré curses. Pro použití programů pro BSD curses se System V curses je nutná rekompilace programu. Existuje však několik problematických oblasti, jako je zpracovávání změn velikosti terminálového okna, které nemá žádný protějšek ve staré knihovně curses.
Databáze typů terminálů Knihovna ncurses může používat jak databázi terminálů terminfo (s rozšiřitelnými daty) tak termcap. Většina jiných implementací curses používá terminfo. Obě databáze používá minimum implementací curses (mytinfo byla starší výjimka).
Licence Knihovna ncurses je součástí projektu GNU, není však distribuována pod licencí GNU General Public License (GPL) ani GNU Lesser General Public License (LGPL). Místo toho je distribuována pod licencí MIT. Důvodem je dohoda uzavřená s Free Software Foundation v době, kdy vývojáři převedli na FSF svá autorská práva.
V dohodě o převodu práv na FSF byla obsažena následující klauzule: Nadace slibuje, že veškerá distribuce balíčku nebo jakéhokoli díla „založeného na balíčku“, k níž dojde pod kontrolou Nadace nebo jejích zástupců či nabyvatelů, bude probíhat za podmínek, které výslovně a trvale umožňují komukoli, kdo vlastní kopii díla, na něž se tyto podmínky vztahují, a kdo má přesné informace o těchto podmínkách, dále distribuovat kopie díla komukoli za stejných podmínek.
Podle správce Thomase E. Dickeyho to vylučuje opětovné udělení licence GPL v jakékoli verzi, protože by to kladlo omezení na programy, které se budou moci propojit s knihovnami.
Programy používající ncurses Knihovnu ncurses používají stovky programů. Některé, jako je GNU Screen a w3m, používají pouze rozhraní termcap a řízení obrazovky si zajišťují samy. Jiné, jako je GNU Midnight Commander a Yet another Setup Tool (YaST), používají curses API.
Odkazy Reference
Související články conio.h – hlavičkový soubor pro jazyk C s podobnou funkcionalitou používaný většinou MS-DOS překladačů pro vytvoření textového uživatelského rozhraní Curses Development Kit Dialog (software) PDCurses S-Lang softwarová knihovna SMG$ – knihovna pro řízení obrazovky pro OpenVMS GNU Readline
Externí odkazy
https://invisible-island.net/ – oficiální stránky (anglicky) Manuálová stránka online (anglicky) Ncurses FAQ (anglicky)
Kategorie:Knihovny pro textové uživatelské rozhraní Kategorie:Knihovny jazyka C Kategorie:Svobodný software v C Kategorie:Programy projektu GNU Kategorie:Software pod licencí MIT