Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

ncurses

From Wikipedia, the free encyclopedia
Text-based user interface API
ncurses
ncurses-basedmenuconfig
DevelopersThomas E. Dickey, Juergen Pfeifer,Eric S. Raymond, Alexander V Lukyanov, Philippe Blain, Sven Verdoolaege, Nicolas Boulenguez et al.[1][2]
Initial release1993; 33 years ago (1993)
Stable release
6.6[3] Edit this on Wikidata / 31 December 2025
Written inC
Operating systemPOSIX
TypeWidget toolkit
LicenseX11[2]
Websiteinvisible-island.net/ncurses/Edit this at Wikidata
Repository

ncurses (newcurses) is aprogramming library for creatingtextual user interfaces (TUIs) that work across a wide variety ofterminals. It is written in a way that attempts to optimize the commands that are sent to the terminal, to reduce thelatency experienced when updating the displayed content.

ncurses is afree and open-source software emulation ofcurses fromSystem V Release 4.0 (SVr4).

There are bindings for ncurses in a variety of programming languages, includingAda,[4]Common Lisp,[5]Python,[6]Gambas,[7]Ruby,[8]PHP,[9]JavaScript,[10]Perl,[11]Object REXX (ooRexx)[12] andRust.[13]

History

[edit]

As the new version, ncurses is afree and open-source software emulation of the System V Release 4.0 (SVr4)curses, which was an enhancement over the discontinued 4.4 BSD curses.[14] The XSI Curses standard issued byX/Open is explicitly and closely modeled onUNIX System V.

curses

[edit]
Main article:Curses (programming library)

The first curses library was developed at University of California, Berkeley, for aBSD operating system, around 1980 to supportRogue, a text-based adventure game. It originally used thetermcap library, which was used in other programs, such as thevi editor.[14]

The success of the BSD curses library promptedBell Labs to release an enhanced curses library in their System V Release 2Unix systems. This library was more powerful and instead of using termcap, it usedterminfo. However, due toAT&T's policy regarding the distribution of source code, the improved curses library was not widely adopted in the BSD community.[14]

pcurses

[edit]

Around 1982,Pavel Curtis started work on afreeware clone of the Bell Labs curses, namedpcurses, which was maintained by various people through 1986.[15]

ncurses

[edit]

The pcurses library was further improved when Zeyd Ben-Halim took over the development effort in late 1991.[14][15][16] The new library was released as ncurses in November 1993, with version 1.8.1 as the first major release. Subsequent work, through version 1.8.8 (M1995), was driven byEric S. Raymond, who added the form and menu libraries written by Juergen Pfeifer.[1] Since 1996, it has been maintained by Thomas E. Dickey.[15]

Most ncurses calls can be easily ported to the old curses. System V curses implementations can support BSD curses programs with just arecompilation.[17] However, a few areas are problematic, such as handling terminal resizing, since no counterpart exists in the old curses.

Terminal database

[edit]

ncurses can use eitherterminfo (with extensible data) ortermcap. Other implementations ofcurses generally useterminfo; a minority usetermcap. Few (mytinfo was an older exception[18]) use both.

License

[edit]

ncurses is a part of theGNU Project, but is not distributed under theGNU General Public License (GPL) orGNU Lesser General Public License (LGPL). Instead, it is distributed under apermissive free software licence: theMIT License.[19] This is due to the agreement made with theFree Software Foundation at the time the developers assigned their copyright.

When the agreement was made to pass on the rights to the FSF, there was a clause that stated:[19]

The Foundation promises that all distribution of the Package, or of any work "based on the Package", that takes place under the control of the Foundation or its agents or assignees, shall be on terms that explicitly and perpetually permit anyone possessing a copy of the work to which the terms apply, and possessing accurate notice of these terms, to redistribute copies of the work to anyone on the same terms.

According to the maintainer Thomas E. Dickey, this precludes relicensing to the GPL in any version, since it would place restrictions on the programs that will be able to link to the libraries.[19]

Programs using ncurses

[edit]

Hundreds of programs use ncurses.[20][21] Some, such asGNU Screen andw3m, use only thetermcap interface and perform screen management themselves. Others, such asGNU Midnight Commander and Yet another Setup Tool (YaST), use the curses programming interface.

See also

[edit]

References

[edit]
  1. ^ab"NCURSES - Frequently Asked Questions (FAQ): Who wrote NCURSES?".
  2. ^ab"NCURSES – Licensing". RetrievedJuly 9, 2013.
  3. ^Thomas E. Dickey (31 December 2025)."ncurses 6.6". Retrieved1 January 2026.
  4. ^"Ada95 Binding for ncurses".
  5. ^"CL-Ncurses: An Ncurses and pdcurses interface for Common Lisp".
  6. ^"Curses Programming with Python - Python documentation".
  7. ^"gb.ncurses - Gambas Wiki".
  8. ^"ncurses Ruby - RubyGems.org".
  9. ^"Ncurses functions - PHP Manual". Archived fromthe original on 2021-03-28. Retrieved2020-02-04.
  10. ^"nc plugin: ncurses bindings for SpiderApe".
  11. ^"Curses::UI - A curses based OO user interface framework".
  12. ^ooRexx Documentation 5.0.0: nCurses Class Library Reference(PDF). Rexx Language Association. 2022.
  13. ^"Rust bindings for ncurses".
  14. ^abcdRaymond, Eric S. (September 1995)."ncurses: Portable Screen-Handling for Linux".Linux Journal.
  15. ^abcDickey, Thomas E. (December 1996)."NCURSES - New Curses".
  16. ^TheREADME file in ncurses 1.8.1 states "v0.1 July 31, 1992" and "v1.8.1 November 5, 1993", which agrees with theNEWS (changelog) file
  17. ^"A Hacker's Guide to Ncurses Internals".
  18. ^Weinstein, Sydney S. (April 1993)."On the Networks". C/C++ Users Journal. Archived fromthe original on 2014-08-11. Retrieved2017-09-15.
  19. ^abc"NCURSES - Frequently Asked Questions (FAQ): Is it GPL'd?".
  20. ^"Search results: +ncurses on freshmeat.net". Archived fromthe original on February 18, 2012. Retrieved2013-05-10.
  21. ^"Projects tagged 'ncurses'". ohloh. Archived fromthe original on 2013-05-15. Retrieved2008-03-28.

External links

[edit]
Retrieved from "https://en.wikipedia.org/w/index.php?title=Ncurses&oldid=1330553362"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp