5 The ncurses (new curses) library is a free software emulation of
6 curses in System V Release 4.0 (SVr4), and more. It uses terminfo
7 format, supports pads and color and multiple highlights and forms
8 characters and function-key mapping, and has all the other SVr4-curses
9 enhancements over BSD curses. SVr4 curses became the basis of X/Open
12 In mid-June 1995, the maintainer of 4.4BSD curses declared that he
13 considered 4.4BSD curses obsolete, and encouraged the keepers of unix
14 releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses.
16 Since 1995, ncurses has been ported to many systems:
17 * It is used in almost every system based on the Linux kernel (aside
18 from some embedded applications).
19 * It is used as the system curses library on OpenBSD, FreeBSD and
21 * It is used in environments such as Cygwin and MinGW. The first of
22 these was EMX on OS/2 Warp.
23 * It is used (though usually not as the system curses) on all of the
24 vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris,
26 * It should work readily on any ANSI/POSIX-conforming unix.
28 The distribution includes the library and support utilities, including
29 * captoinfo, a termcap conversion tool
30 * clear, utility for clearing the screen
31 * infocmp, the terminfo decompiler
32 * tabs, set tabs on a terminal
33 * tic, the terminfo compiler
34 * toe, list (table of) terminfo entries
35 * tput, utility for retrieving terminal capabilities in shell
37 * tset, to initialize the terminal
39 Full manual pages are provided for the library and tools.
41 The ncurses distribution is available at ncurses' homepage:
43 ftp://ftp.invisible-island.net/ncurses/ or
44 https://invisible-mirror.net/archives/ncurses/ .
46 It is also available via anonymous FTP at the GNU distribution site
48 ftp://ftp.gnu.org/gnu/ncurses/ .
52 These notes are for ncurses 6.2, released February 12, 2020.
54 This release is designed to be source-compatible with ncurses 5.0
55 through 6.1; providing extensions to the application binary interface
56 (ABI). Although the source can still be configured to support the
57 ncurses 5 ABI, the reason for the release is to reflect improvements
58 to the ncurses 6 ABI and the supporting utility programs.
60 There are, of course, numerous other improvements, listed in this
63 The most important bug-fixes/improvements dealt with user-defined
64 capabilities in terminal descriptions. The release notes also mention
65 some other bug-fixes, but are focused on new features and improvements
66 to existing features since ncurses 6.1 release.
72 There are several new features:
73 * O_EDGE_INSERT_STAY tells the form library to optionally delay
74 cursor movement on a field edge/boundary
75 * O_INPUT_FIELD extension to form library allows a dynamic field to
76 shrink if the new limit is smaller than the current field size.
77 * added exit_curses and exit_terminfo to replace internal symbols
79 * added curses_trace, to replace trace().
81 Additionally, to improve performance other changes (and extensions)
82 are provided in this release:
83 * mouse decoding now handles shift/control/alt logic when decoding
85 * ncurses now defines a limit for wgetnstr, wgetn_wstr when length
86 is negative or "too large".
87 * reordered loop-limit checks in winsnstr in case the string has no
88 terminating null and only the number of characters is used.
89 * there is now no buffer-size limit when reading the $TERMCAP
91 * the $TERMCAP variable may be interpreted as a fallback to a
93 * mvcur now decides whether to use hard-tabs, using xt, tbc and hts
95 * extended colors are improved by modifying an internal call to
96 vid_puts to pass extended color pairs e.g., from tty_update.c and
98 * the initialization functions now avoid relying upon persistent
99 data for the result from getenv
100 * scrolling is improved:
101 + a limit check in newline_forces_scroll handles the case where
102 the row is inside scroll-margins, but not at the end.
103 + improved loop limits in _nc_scroll_window handle a case where
104 the scrolled data is a pad which is taller than the window.
108 These are revised features:
109 * used "const" in some prototypes rather than NCURSES_CONST where
110 X/Open Curses was updated to do this, e.g., wscanw, newterm, the
111 terminfo interface. Also use "const" for consistency in the
112 termcap interface, which was withdrawn by X/Open Curses in Issue 5
113 (2007). As of Issue 7, X/Open Curses still lacks "const" for
114 certain return values, e.g., keyname.
115 * modified wbkgd and wbkgrnd to improve compatibility with SVr4
116 curses, changing the way the window rendition is updated when the
117 background character is modified
118 * improved terminfo write/read by modifying the fourth item of the
119 extended header to denote the number of valid strings in the
120 extended string table (see term(5)).
121 * modified the initialization checks for mouse so that the
122 xterm+sm+1006 block will work with terminal descriptions not
125 These were done to limit or ultimately deprecate features:
126 * deprecated safe-sprintf, since the vsnprintf function, which does
127 what was needed, was standardized long ago.
128 * marked vwprintw and vwscanw as deprecated; recommend using
129 vw_printw and vw_scanw, respectively.
130 * added deprecation warnings for internal functions called by older
132 * removed unused _nc_import_termtype2 function.
134 These are improvements to existing features:
135 * check parameter of set_escdelay, return ERR if negative.
136 * check parameter of set_tabsize, return ERR if not greater than
138 * correct a status-check in _nc_read_tic_entry() so that if reading
139 a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to
140 the compiled-in search list.
141 * amend check for repeat_char to handle a case where setlocale() was
143 * move macro for is_linetouched inside NCURSES_NOMACROS ifndef.
144 * use _nc_copy_termtype2 rather than direct assignment in setupterm,
145 in case it is called repeatedly using fallback terminfo
147 * improve workaround for Solaris wcwidth versus line-drawing
149 * add checks in repair_subwindows to keep the current position and
150 scroll-margins inside the resized subwindow.
151 * correct a buffer-limit in write_entry.c for systems that use
153 * improved build-time utility report_offsets:
154 + add categories, e.g., "w" for wide-character, "t" for threads
155 to make the report more readable. Reorganized the structures
156 reported to make the categories more apparent.
157 + add NCURSES_GLOBALS and NCURSES_PRESCREEN to report to show
158 how similar the different libtinfo configurations are.
159 * modified some header files to ensure that those include necessary
160 files except for the previously-documented cases
161 * added some traces in initialization to show whether a fallback
163 * made minor optimization to reduce calls to _nc_reserve_pairs
165 These are corrections to existing features:
166 * fix a special case in PutAttrChar where a cell is marked as
167 alternate-character set, but the terminal does not actually
168 support the given graphic character. This would happen in an older
169 terminal such as vt52, which lacks most line-drawing capability.
170 * corrected flag for "seq" method of db 1.8.5 interface, needed by
171 toe on some of the BSDs.
172 * modify comparison in make_hash.c to correct a special case in
173 collision handling for Caps-hpux11
174 * add extended_slk_color{,_sp} symbols to the appropriate
175 package/*.{map,sym} files
176 * modify lib_setup to avoid calling pthread_self() without first
177 verifying that the address is valid, i.e., for weak symbols
178 * add a couple of broken-linker symbols to the list of versioned
179 symbols to help with link-time optimization versus weak symbols.
183 Several improvements were made to the utility programs:
187 + improved logic for clearing with the E3 extension, in case
188 the terminal scrolls content onto its saved-lines before
189 actually clearing the display, by clearing the saved-lines
190 after clearing the display
194 + omit filtering of "OTxx" names which are used for obsolete
195 capabilities, when the output is sorted by long-names. This
196 change helps when making a table of the short/long capability
201 + added check for consistent alternate character set
203 + added check for paired indn/rin.
204 + added check for terminals with parm_dch vs parm_ich.
205 + added check for the case where setf/setb are given using
206 different strings, but provide identical results to
208 + corrected check for ich1.
209 + changed a too-large terminal entry from a fatal error to a
214 + ignores any hex/b64 $TERMINFO value in the list of terminfo
219 + replace check in reset command for obsolete "pt" capability
220 using tbc and hts capabilities as clues
221 + modify reset to allow for tabstops at intervals other than 8.
222 + change reset's behavior for margins to simply clear
223 soft-margins if possible, rather than clearing and then
224 setting them according to the terminal's width.
228 + add "x" to getopt string so that "tput -x clear" works.
230 Several changes were made to the generated ncurses*config scripts and
231 the analogous ".pc" files to reduce differences between the
232 configurations they report:
233 * modified the ncurse*-config and pc-files to more closely match for
234 the -I and -l options.
235 * filtered out linker-specs from the --libs report.
236 * amended the ncurses*-config and pc-files to take into account the
237 rpath hack which differed between those files.
238 * modified generated ncurses*config and ncurses.pc, ncursesw.pc,
239 etc., to list helper libraries such as gpm for static linking.
243 Along with the library and utilities, improvements were made to the
244 ncurses-examples. Most of this activity aimed at improving the
245 test-packages. A few changes are more generally useful, e.g., for the
246 main ncurses test-program, and for analyzing traces using the
248 * improve recovery from error when reading command-character in
249 test/ncurses.c, showing the relevant error message and not exiting
251 * improve tracemunch, by keeping track of TERMINAL* values, and if
252 tracing was first turned on after initialization, attempt to show
253 distinct screen, window and terminal names anyway.
254 * modify tracemunch to accept filename parameters in addition to use
256 * update tracemunch to work with perl 5.26.2, which changed the
257 rules for escaping regular expressions.
258 * add some checks in tracemunch for undefined variables.
259 * modify TurnOn/TurnOff macros (in lib_vidattr.c and lib_vid_attr.c)
260 to avoid expansion of "CUR" in trace.
262 There are other new demo/test programs and reusable examples:
265 Demonstrate the color_content and extended_color_content
269 A simple demo of tabs in curses.
272 A portable curses screen-dump, used to compare ncurses screen
273 contents with Solaris.
276 Demonstrate the pair_content and extended_pair_content
280 Check hash-tables used for terminfo and termcap names.
283 Sample implementation of the ncurses RGB extension from
284 user_caps.5, used in picsmap and savescreen programs.
286 A variety of improvements were made to existing programs, both new
287 features as well as options added to make the set of programs more
289 * add "-l" option to test/background, to dump screen contents in a
290 form that lets different curses implementations be compared.
291 * add "@" command to test/ncurses F-test, to allow rapid jump to
292 different character pages.
293 * added enum, regex examples to test/demo_forms
294 * amend Scaled256() macro in test/picsmap.c to cover the full range
296 * corrected pathname used in Ada95 sample programs for explain.txt,
297 to work with test-packages, and used an awk script to split the
298 resulting pathname when it would be too long for a single line.
299 * ignore interrupted system-call in test/ncurses's command-line,
300 e.g., if the terminal were resized.
301 * improved ifdef's for TABSIZE variable, to help with AIX/HPUX
306 There are several new terminal descriptions:
308 alacritty, domterm, kitty, mintty, mintty-direct, ms-terminal,
309 n7900, nsterm-build309, nsterm-direct, screen5, ti703, ti707,
310 ti703-w, ti707-w vscode, vscode-direct, xterm-mono, xterm.js
312 There are many changes to existing terminal descriptions. Some were
313 updates to several descriptions:
314 * use ansi+rep in a dozen places
315 * add rs1 to konsole, mlterm
316 * improve several flash capabilities with trailing mandatory delays
317 * drop ich1 from rxvt-basic, Eterm and mlterm to improve
318 compatibility with old non-curses programs
319 * add/use xterm+keypad in xterm-new
320 * use xterm+sl-twm for consistency, nine places
321 * improve xm example in xterm+x11mouse and xterm+sm_1006.
323 while others affected specific descriptions. These were retested, to
324 take into account changes by their developers:
328 while these are specific fixes based on reviewing documentation, user
329 reports, or warnings from tic:
337 + base entry on "gnome", not "vte", for consistency
341 + trim unnecessary setf/setb
345 + accommodate Linux console driver incompatibility introduced
350 + add nsterm-build309 to replace nsterm-256color, assigning the
351 latter as an alias of nsterm, to make mouse work with
356 + renumber function-keys to match manual
362 + add shifted function-keys
366 + added function-key definitions to agree with Televideo 950
378 + add acsc string, including right/down-arrow
386 + add shifted function-keys as kF1 to kF16
390 + eliminate unused p5 parameter.
392 A few entries use extensions (user-defined terminal capabilities):
393 * use xterm+sm+1006 (aka "SGR 1006 mouse") for konsole-base and
395 * add Smol/Rmol user-defined capability to tmux and vte-2018
396 * add Smulx user-defined capability to tmux, vte-2018
400 As usual, this release
401 * improves documentation by describing new features,
402 * attempts to improve the description of features which users have
404 * fills in overlooked descriptions of features which were described
405 in the NEWS file but treated sketchily in manual pages.
407 In addition to providing background information to explain these
408 features and show how they evolved, there are corrections,
409 clarifications, etc.:
411 + correct error-returns listed in manual pages for a few form
413 + corrected prototypes in several manpages using script to
414 extract those in compilable form.
415 + fix typo in term.5, improve explanation of format
416 * Clarify in manual pages that vwprintw and vwscanw are obsolete.
417 They have not been part of X/Open Curses since 2007.
418 * New/improved history and portability sections:
419 + curs_addch.3x gives some background for ACS symbols.
420 + curs_getcchar.3x explains a difference between ncurses and
422 + curs_getstr.3x gives historical/portability background for
423 the length parameter of wgetnstr.
424 + curs_slk.3x lists a few differences between SVr4 curses and
425 X/Open Curses for soft-keys.
426 + curs_terminfo.3x explains that the initial implementation of
427 terminfo in SVr2 was mostly replaced by other developers in
429 + infocmp.1 explains that the initial version of terminfo had
430 no tool for decompiling descriptions. That came later, with
431 SVr3, with a different developer.
432 + tabs.1 tells more than you wanted to know about the tool.
433 + tic.1 explains that the initial version of terminfo had a
434 rudimentary tool (based on termcap) for compiling entries.
435 The tool used with Unix was developed by others for SVr3.
436 + toe.1 explains the origin of this tool.
437 * Improvements for user_caps.5:
438 + mention meml, memu and box1
439 + expanded description of XM
440 + add a clarification regarding the RGB capability.
441 + mention user_caps.5 in the tic and infocmp manual pages.
442 * Other improvements:
443 + curs_add_wch.3x adds note about Unicode terminology for the
444 line-drawing characters.
445 + curs_color.3x improves discussion of error returns and
447 + curs_mouse.3x explains how the kmous and XM capabilities are
448 used for xterm-mouse input.
449 + curs_refresh.3x improves documentation regarding the virtual
450 and physical screens.
451 + curs_util.3x mentions a difference between SVr4 and X/Open
453 + curs_variables.3x improves description of the init_tabs
454 capability and TABSIZE variable.
455 + ncurses.3x improves documentation regarding feature-test
457 + resizeterm.3x about top-level windows which touch the
459 + tput.1 clarifies how tput determines the terminal size.
461 There are no new manual pages (all of the manual page updates are to
464 Some of the improvements are more subtle, relating to the way the
465 information is presented. For instance, the generated terminfo.5 file
466 uses a different table layout, allowing it to use space on wide
467 terminals more effectively.
469 Interesting bug-fixes
471 While there were many bugs fixed during development of ncurses 6.2,
472 only a few (the reason for this release) were both important and
473 interesting. Most of the bug-fixes were for local issues which did not
474 affect compatibility across releases. Since those are detailed in the
475 NEWS file no elaboration is needed here.
477 The interesting bugs were in tic/infocmp's handling of user-defined
478 capabilities. These were not recent bugs. Initially it was a simple
480 * The user-defined capabilities can be any type (boolean, number or
481 string), but once given a type all uses of the name must conform
482 to that type--unless some special support for a particular
483 multi-typed name is built into ncurses.
484 * One of simpleterm's contributors copied some definitions for using
485 tmux's user-defined capabilities in late in 2016.
487 diff --git a/st.info b/st.info
488 @@ -185,7 +185,10 @@ st| simpleterm,
493 +# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1)
498 st-256color| simpleterm with 256 colors,
501 * Later, in (referring to a version from mid-2017), a user asked to
502 have it updated in ncurses.
503 * However, it had an error from the change in late 2016. The
504 terminal description made what tmux expected to be string actually
506 Over the years, there were problems with each of simpleterm's
507 terminal descriptions. I repaired those, and usually dealt with
509 * The difference in this case was that when compiling the terminal
510 database, tic may have in memory the definitions for more than one
511 terminal description (so that it can resolve "use=" clauses).
512 Seeing two different types for the same name, in certain
513 situations it would incorrectly merge the symbol tables for the
514 two terminal descriptions.
515 * On simpleterm's side, their bug was finally fixed in late 2019,
516 three years after the bug was created.
518 For ncurses, the elapsed time to fix this bug was less than three
519 years. Someone reported a problem with the terminal description a few
520 weeks after releasing ncurses 6.1 (in tmux #1264), and the terminal
521 description was updated that week (ncurses patch 20180224):
524 + modify _nc_resolve_uses2() to detect incompatible types when merging
525 a "use=" clause of extended capabilities. The problem was seen in a
526 defective terminfo integrated from simpleterm sources in 20171111,
527 compounded by repair in 20180121.
528 + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD
530 The larger part of that change added a check to prevent a simple merge
531 of terminal descriptions where the same user-defined name was used
532 with different types. But it raised some questions:
533 * Was there a reliable way to manage terminal descriptions which
534 used the same extended name in different ways?
535 * Should ncurses provide a registry of well-known extended names,
538 Since the correction to terminfo.src could have been readily adopted
539 by packagers, there was nothing more to be done from ncurses'
540 standpoint on that part. But improving ncurses to prevent issues like
541 that is the reason for making a release.
543 Nothing more (constructive) was mentioned with regard to simpleterm.
544 But a few problems were found in the handling of user-defined
546 * Forward-references to user-defined capabilities in a "use=" clause
547 did not allocate new data for each use. In tic, successive
548 compilation of terminal entries could add user-defined
549 capabilities to the wrong terminal entry.
550 This was not noticed before, since xterm's terminal descriptions
551 were the main users of the feature, and almost all of the uses of
552 the building-blocks which contained user-defined capabilities were
554 * There is one (documented) case where ncurses 6.1 supports a
555 user-defined capability that could be any type (i.e., "RGB"). The
556 check added in February 2018 to guard against mismatches did not
557 handle all of the combinations needed.
559 Both of these issues dated from the original implementation of
560 user-defined capabilities. Fixing them does not change the terminal
561 database, but a older tic without the fixes will not be able to handle
562 terminfo sources which rely upon those fixes. Starting in June 2019,
563 the download link for the terminfo source file was capped at that
564 date. The development sources have an up-to-date copy of the file, for
565 people with a legitimate need for it.
567 The "-c" (check) option of tic is not very useful if it cannot offer
568 advice on parameters needed for user-defined capabilities. The various
569 Caps files were reorganized to reduce redundancy, and in the common
570 portion (Caps-ncurses), a registry of user-defined capabilities is
571 provided for use by tic. While users can still define their own custom
572 capabilities, tic will not offer any advice when their parameters do
575 In ncurses 6.2, tic makes a special check to allow any type for RGB,
576 but its being able to do this relies upon fixes made in the ncurses
579 Configuration changes
583 There are no major changes. Several new options were added to ease
584 integration of packages with systems using different versions of GNAT
585 and ncurses. Also, improvements were made to configure checks.
587 Configuration options
589 There are a few new/modified configure options:
592 helps work around a filename conflict with Debian packages
593 versus test-packages.
596 allows one to rename the "AdaCurses" library (at least one
597 packager prefers a lowercase name).
600 now ensures there is a value, and adds the fallback information
601 to top-level Makefile summary.
604 check for pcre-posix library to help with MinGW port.
609 help work around problems building fallback source using
612 --with-versioned-syms
613 option value can now be a relative pathname.
617 Many of the portability changes are implemented via the configure
619 * ignore $TERMINFO as a default value in configure script if it came
620 from the infocmp -Q option.
621 * distinguish gcc from icc and clang when the --enable-warnings
622 option is not used, to avoid unnecessary warnings about
623 unrecognized inline options
624 * consistently prepend new libraries as they are found during
625 configuration, rather than relying upon the linker to resolve
626 order dependencies of libraries.
627 * modified configure scripts to reduce relinking/ranlib during
629 + use "install -p" when available, to avoid need for ranlib of
631 + scripts which use "--disable-relink;" add a 1-second sleep to
632 work around tools which use whole-second timestamps, e.g., in
633 utime rather than the actual file system resolution.
634 * add configure check for getenv to work around implementation shown
635 in Emscripten which overwrites the previous return value on each
637 Use that to optionally suppress START_TRACE macro, whose call to
638 getenv may not work properly
639 * change target configure level for _XOPEN_SOURCE to 600 to address
640 use of vsscanf and setenv.
641 * reduce use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE
642 combines with _XOPEN_SOURCE
643 Allow for Cygwin's newlib when checking for the _DEFAULT_SOURCE
645 MidnightBSD is now checked for the _XOPEN_SOURCE-related
647 * If the check for va_copy or __va_copy fails,
648 + configure now tries copying the pointers for va_list, or as
650 + alternatively, it checks for __builtin_va_copy(), which could
651 be used with AIX xlc in c89 mode.
652 * several changes to support a port to Ultrix 3.1:
653 + check if "b" binary feature of fopen works
654 + check for missing feature of locale.h
655 + add fallback for strstr() in test-programs
656 + add fallback for STDOUT_FILENO in test-programs
657 * The test/configure script (used for ncurses-examples) is improved:
658 + work around non-ncurses termcap.h file, e.g., in Slackware.
659 + check for TABSIZE variable.
660 + checks for the X11/Intrinsic.h header, accommodate recent
661 MacOS changes which largely emptied /usr/include.
663 Here are some of the other portability fixes:
664 * added dummy "check" rule in top-level and test-Makefile to
665 simplify building test-packages for ArchLinux.
666 * dropped library-dependency on psapi for MinGW port, since
667 win_driver.c defines PSAPI_VERSION to 2, making it use
668 GetProcessImageFileName from kernel32.dll
669 * made build-fixes for configuration using --program-suffix with
670 Ada95, noticed with MacOS but applicable to other platforms
671 without libpanelw, etc.
672 * modified ncurses/Makefile.in to fix a case where Debian/testing
673 changes to the ld --as-needed configuration broke ncurses-examples
675 * used _WIN32/_WIN64 in preference to __MINGW32__/__MINGW64__
676 symbols to simplify building with Microsoft Visual C++, since the
677 former are defined in both compiler configurations.
678 _________________________________________________________________
682 The ncurses package is fully upward-compatible with SVr4 (System V
684 * All of the SVr4 calls have been implemented (and are documented).
685 * ncurses supports all of the for SVr4 curses features including
686 keyboard mapping, color, forms-drawing with ACS characters, and
687 automatic recognition of keypad and function keys.
688 * ncurses provides these SVr4 add-on libraries (not part of X/Open
690 + the panels library, supporting a stack of windows with
692 + the menus library, supporting a uniform but flexible
693 interface for menu programming.
694 + the form library, supporting data collection through
696 * ncurses's terminal database is fully compatible with that used by
698 + ncurses supports user-defined capabilities which it can see,
699 but which are hidden from SVr4 curses applications using the
700 same terminal database.
701 + It can be optionally configured to match the format used in
702 related systems such as AIX and Tru64.
703 + Alternatively, ncurses can be configured to use hashed
704 databases rather than the directory of files used by SVr4
706 * The ncurses utilities have options to allow you to filter terminfo
707 entries for use with less capable curses/terminfo versions such as
708 the HP/UX and AIX ports.
710 The ncurses package also has many useful extensions over SVr4:
711 * The API is 8-bit clean and base-level conformant with the X/OPEN
712 curses specification, XSI curses (that is, it implements all BASE
713 level features, and most EXTENDED features). It includes many
714 function calls not supported under SVr4 curses (but portability of
715 all calls is documented so you can use the SVr4 subset only).
716 * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost
717 corner of the screen if your terminal has an insert-character
719 * Ada95 and C++ bindings.
720 * Support for mouse event reporting with X Window xterm and FreeBSD
721 and OS/2 console windows.
722 * Extended mouse support via Alessandro Rubini's gpm package.
723 * The function wresize allows you to resize windows, preserving
725 * The function use_default_colors allows you to use the terminal's
726 default colors for the default color pair, achieving the effect of
728 * The functions keyok and define_key allow you to better control the
729 use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by
730 defining more than one control sequence to map to a given key
732 * Support for 256-color terminals, such as modern xterm.
733 * Support for 16-color terminals, such as aixterm and modern xterm.
734 * Better cursor-movement optimization. The package now features a
735 cursor-local-movement computation more efficient than either BSD's
737 * Super hardware scrolling support. The screen-update code
738 incorporates a novel, simple, and cheap algorithm that enables it
739 to make optimal use of hardware scrolling, line-insertion, and
740 line-deletion for screen-line movements. This algorithm is more
741 powerful than the 4.4BSD curses quickch routine.
742 * Real support for terminals with the magic-cookie glitch. The
743 screen-update code will refrain from drawing a highlight if the
744 magic- cookie unattributed spaces required just before the
745 beginning and after the end would step on a non-space character.
746 It will automatically shift highlight boundaries when doing so
747 would make it possible to draw the highlight without changing the
748 visual appearance of the screen.
749 * It is possible to generate the library with a list of pre-loaded
750 fallback entries linked to it so that it can serve those terminal
751 types even when no terminfo tree or termcap file is accessible
752 (this may be useful for support of screen-oriented programs that
753 must run in single-user mode).
754 * The tic/captoinfo utility provided with ncurses has the ability to
755 translate many termcaps from the XENIX, IBM and AT&T extension
757 * A BSD-like tset utility is provided.
758 * The ncurses library and utilities will automatically read terminfo
759 entries from $HOME/.terminfo if it exists, and compile to that
760 directory if it exists and the user has no write access to the
761 system directory. This feature makes it easier for users to have
762 personal terminfo entries without giving up access to the system
764 * You may specify a path of directories to search for compiled
765 descriptions with the environment variable TERMINFO_DIRS (this
766 generalizes the feature provided by TERMINFO under stock System
768 * In terminfo source files, use capabilities may refer not just to
769 other entries in the same source file (as in System V) but also to
770 compiled entries in either the system terminfo directory or the
771 user's $HOME/.terminfo directory.
772 * The table-of-entries utility toe makes it easy for users to see
773 exactly what terminal types are available on the system.
774 * The library meets the XSI requirement that every macro entry point
775 have a corresponding function which may be linked (and will be
776 prototype-checked) if the macro definition is disabled with
778 * Extensive documentation is provided (see the Additional Reading
779 section of the ncurses FAQ for online documentation).
781 Applications using ncurses
783 The ncurses distribution includes a selection of test programs
784 (including a few games). These are available separately as
787 The ncurses library has been tested with a wide variety of
788 applications including:
791 FrontEnd to Apt, the debian package manager
793 https://wiki.debian.org/Aptitude
796 Curses Development Kit
798 https://invisible-island.net/cdk/
803 https://invisible-island.net/ded/
806 the underlying application used in Slackware's setup, and the
807 basis for similar install/configure applications on many
810 https://invisible-island.net/dialog/
815 https://lynx.invisible-island.net/
823 file-transfer utility
825 https://www.ncftp.com/
830 https://sites.google.com/a/bostic.com/keithbostic/vi
833 A console file manager with VI key bindings in Python.
835 https://ranger.github.io/
838 newsreader, supporting color, MIME
843 File manager with vi like keybindings
847 as well as some that use ncurses for the terminfo support alone:
850 terminal emulator for serial modem connections
852 https://alioth.debian.org/projects/minicom/
855 a replacement for ssh.
857 https://mosh.mit.edu/
860 terminfo action checker
862 https://invisible-island.net/ncurses/tack.html
867 https://github.com/tmux/tmux/wiki
870 vi-like-emacs may be built to use the terminfo, termcap or
873 https://invisible-island.net/vile/
875 and finally, those which use only the termcap interface:
880 https://www.gnu.org/software/emacs/
883 The most commonly used pager (a program that displays text
886 http://www.greenwoodsoftware.com/less/
891 https://www.gnu.org/software/screen/
898 Development activities
900 Zeyd Ben-Halim started ncurses from a previous package pcurses,
901 written by Pavel Curtis. Eric S. Raymond continued development.
902 Juergen Pfeifer wrote most of the form and menu libraries.
904 Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey
905 has acted as the maintainer for the Free Software Foundation, which
906 holds a copyright on ncurses for releases 4.2 through 6.1. Following
907 the release of ncurses 6.1, effective as of release 6.2, copyright for
908 ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for
909 additional information).
911 Contact the current maintainers at
915 To join the ncurses mailing list, please write email to
917 bug-ncurses-request@gnu.org
921 subscribe <name>@<host.domain>
923 This list is open to anyone interested in helping with the development
924 and testing of this package.
926 Beta versions of ncurses are made available at
928 ftp://ftp.invisible-island.net/ncurses/current/ and
929 https://invisible-mirror.net/archives/ncurses/current/ .
931 Patches to the current release are made available at
933 ftp://ftp.invisible-island.net/ncurses/6.1/ and
934 https://invisible-mirror.net/archives/ncurses/6.1/ .
936 There is an archive of the mailing list here:
938 http://lists.gnu.org/archive/html/bug-ncurses (also https)
942 The release notes make scattered references to these pages, which may
943 be interesting by themselves:
945 * Symbol versioning in ncurses
946 * Comments on ncurses versus slang (S-Lang)
947 * tack - terminfo action checker
948 * tctest - termcap library checker
953 The distribution provides a newer version of the terminfo-format
954 terminal description file once maintained by Eric Raymond . Unlike the
955 older version, the termcap and terminfo data are provided in the same
956 file, which also provides several user-definable extensions beyond the
957 X/Open specification.
959 You can find lots of information on terminal-related topics not
960 covered in the terminfo file at Richard Shuford's archive . The
961 collection of computer manuals at bitsavers.org has also been useful.
965 + Library improvements
968 + Program improvements
973 + Interesting bug-fixes
974 + Configuration changes
976 o Configuration options
978 * Features of ncurses
979 * Applications using ncurses
980 * Development activities