| <!-- |
| $Id: announce.html,v 1.70 2024/04/27 18:38:45 tom Exp $ |
| **************************************************************************** |
| * Copyright 2018-2023,2024 Thomas E. Dickey * |
| * * |
| * Permission is hereby granted, free of charge, to any person obtaining a * |
| * copy of this software and associated documentation files (the * |
| * "Software"), to deal in the Software without restriction, including * |
| * without limitation the rights to use, copy, modify, merge, publish, * |
| * distribute, distribute with modifications, sublicense, and/or sell * |
| * copies of the Software, and to permit persons to whom the Software is * |
| * furnished to do so, subject to the following conditions: * |
| * * |
| * The above copyright notice and this permission notice shall be included * |
| * in all copies or substantial portions of the Software. * |
| * * |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * |
| * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * |
| * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * |
| * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * |
| * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * |
| * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * |
| * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * |
| * * |
| * Except as contained in this notice, the name(s) of the above copyright * |
| * holders shall not be used in advertising or otherwise to promote the * |
| * sale, use or other dealings in this Software without prior written * |
| * authorization. * |
| **************************************************************************** |
| --> |
| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> |
| <html> |
| <head> |
| <meta name="generator" content= |
| "HTML Tidy for HTML5 for Linux version 5.6.0"> |
| <title>Announcing ncurses 6.5</title> |
| <link rel="author" href="mailto:bug-ncurses@gnu.org"> |
| <meta http-equiv="Content-Type" content= |
| "text/html; charset=us-ascii"> |
| <style type="text/css"> |
| p,li { max-width:700px; } |
| dd { max-width:630px; } |
| *.main-name { |
| font-style: italic; |
| font-variant: small-caps; |
| } |
| *.part-name { |
| font-family: "Andale Mono", "Monotype.com", monospace; |
| font-size: 12pt; |
| font-weight: bold; |
| } |
| *.demo-name { |
| font-family: "Andale Mono", "Monotype.com", monospace; |
| font-size: 10pt; |
| } |
| </style> |
| </head> |
| <body> |
| <h1 class="no-header">Announcing ncurses 6.5</h1> |
| |
| <h2><a name="h2-overview" id="h2-overview">Overview</a></h2> |
| |
| <p>The <span class="main-name">ncurses</span> (new curses) |
| library is a free software emulation of curses in System V |
| Release 4.0 (SVr4), and more. It uses terminfo format, supports |
| pads and color and multiple highlights and forms characters and |
| function-key mapping, and has all the other SVr4-curses |
| enhancements over BSD curses. SVr4 curses became the basis of |
| X/Open Curses.</p> |
| |
| <p>In mid-June 1995, the maintainer of 4.4BSD curses declared |
| that he considered 4.4BSD curses obsolete, and encouraged the |
| keepers of <span class="main-name">unix</span> releases such as |
| BSD/OS, FreeBSD and NetBSD to switch over to <span class= |
| "main-name">ncurses</span>.</p> |
| |
| <p>Since 1995, <span class="main-name">ncurses</span> has been |
| ported to many systems:</p> |
| |
| <ul> |
| <li>It is used in almost every system based on the Linux kernel |
| (aside from some embedded applications).</li> |
| |
| <li>It is used as the system curses library on OpenBSD, FreeBSD |
| and MacOS.</li> |
| |
| <li>It is used in environments such as Cygwin and MinGW. The |
| first of these was EMX on OS/2 Warp.</li> |
| |
| <li>It is used (though usually not as the <em>system</em> |
| curses) on all of the vendor <span class= |
| "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO, |
| Solaris, Tru64.</li> |
| |
| <li>It should work readily on any ANSI/POSIX-conforming |
| <span class="main-name">unix</span>.</li> |
| </ul> |
| |
| <p>The distribution includes the library and support utilities, |
| including</p> |
| |
| <ul> |
| <li><a href="https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class= |
| "part-name">captoinfo</span></a>, a termcap conversion |
| tool</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/clear.1.html"><span class= |
| "part-name">clear</span></a>, utility for clearing the |
| screen</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class= |
| "part-name">infocmp</span></a>, the terminfo decompiler</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/tabs.1.html"><span class= |
| "part-name">tabs</span></a>, set tabs on a terminal</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class= |
| "part-name">tic</span></a>, the terminfo compiler</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/toe.1m.html"><span class= |
| "part-name">toe</span></a>, list (table of) terminfo |
| entries</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/tput.1.html"><span class= |
| "part-name">tput</span></a>, utility for retrieving terminal |
| capabilities in shell scripts</li> |
| |
| <li><a href="https://invisible-island.net/ncurses/man/tset.1.html"><span class= |
| "part-name">tset</span></a>, to initialize the terminal</li> |
| </ul> |
| |
| <p>Full manual pages are provided for the library and tools.</p> |
| |
| <p>The <span class="main-name">ncurses</span> distribution is |
| available at <span class="main-name">ncurses</span>' <a href= |
| "https://invisible-island.net/ncurses/">homepage</a>:</p> |
| |
| <blockquote> |
| <p><a href= |
| "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/</a> |
| or<br> |
| <a href= |
| "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a> .</p> |
| </blockquote> |
| |
| <p>It is also available at the GNU distribution site</p> |
| |
| <blockquote> |
| <p><a href= |
| "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/</a> .</p> |
| </blockquote> |
| |
| <h2><a name="h2-release-notes" id="h2-release-notes">Release |
| Notes</a></h2> |
| |
| <p>These notes are for <span class="main-name">ncurses</span> |
| 6.5, released <strong>April 27, 2024</strong>.</p> |
| |
| <p>This release is designed to be source-compatible with |
| <span class="main-name">ncurses</span> 5.0 through 6.4; providing |
| extensions to the application binary interface (ABI). Although |
| the source can still be configured to support the <span class= |
| "main-name">ncurses</span> 5 ABI, the reason for the release is |
| to reflect improvements to the <span class= |
| "main-name">ncurses</span> 6 ABI and the supporting utility |
| programs.</p> |
| |
| <p>There are, of course, numerous other improvements, listed in |
| this announcement.</p> |
| |
| <p>The most <a href="#h3-bug-fixes">important |
| bug-fixes/improvements</a> dealt with robustness issues. The |
| release notes also mention some other bug-fixes, but are focused |
| on new features and improvements to existing features since |
| <span class="main-name">ncurses</span> 6.4 release.</p> |
| |
| <h3><a name="h3-library" id="h3-library">Library improvements</a></h3> |
| |
| <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4> |
| |
| <p>These are new features:</p> |
| |
| <ul> |
| <li> |
| <p>The low-level terminfo and termcap interfaces are used |
| both by the higher-level curses library, as well as by many |
| applications.</p> |
| |
| <p>The functions which convert parameterized terminal |
| capability strings for output to the terminal |
| (<code>tiparm</code> and <code>tparm</code>) analyze the |
| capability string to determine which parameters are strings |
| (i.e., addresses), versus numbers (not addresses).</p> |
| |
| <p>The library's analysis of a capability string may differ |
| from the calling application's design if environment |
| variables are used to point to an invalid terminal database. |
| This is a longstanding problem with <em>all</em> |
| implementations of terminfo, dating from the early 1980s.</p> |
| |
| <p>Two new functions address this problem: by providing a |
| function which allows the calling application to tell ncurses |
| how many string-parameters to expect:</p> |
| |
| <ul> |
| <li><code>tiscan_s</code> helps applications check |
| formatting capabilities that would be passed to |
| <code>tiparm_s</code>.</li> |
| |
| <li><code>tiparm_s</code> provides applications a way to |
| tell ncurses what the expected parameters are for a |
| capability.</li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>The ncurses library supports a compile-time feature |
| (enabled with the configure <code>--enable-check-size</code> |
| option) which simplifies initialization with terminals which |
| do not negotiate window (screen) size. This is done in |
| <code>setupterm</code>, by providing for using ANSI |
| cursor-position report (in user6/user7 terminfo capabilities) |
| to obtain the screen size if neither environment variables or |
| ioctl is used.</p> |
| |
| <p>The ncurses test-program with options |
| “<code>-E -T</code>” demonstrates this |
| feature.</p> |
| </li> |
| |
| <li>add functions to query tty-flags in |
| <code>SCREEN</code></li> |
| </ul> |
| |
| <p>This release drops compatibility with obsolete versions of |
| <a href="https://invisible-island.net/ncurses/tack/">tack</a>, e.g., pre-1.08</p> |
| |
| <h4><a name="h4-fixes-library" id="h4-fixes-library">Other |
| improvements</a></h4> |
| |
| <p>These are improvements to existing features:</p> |
| |
| <ul> |
| <li> |
| <p>In addition to the new, safer function |
| <code>tiparm_s</code>, ncurses adds checks to make the older |
| <code>tiparm</code>, <code>tparm</code> and |
| <code>tgoto</code> functions safer:</p> |
| |
| <ul> |
| <li> |
| <p>the terminfo functions <code>tiparm</code> and |
| <code>tparm</code> ensure that the capability string |
| comes from the terminal description which ncurses loads, |
| rather than from random data which the application |
| happens to have.</p> |
| </li> |
| |
| <li> |
| <p>the <code>tgoto</code> function disallows capabilities |
| which its analysis shows will attempt to use string |
| parameters.</p> |
| </li> |
| |
| <li> |
| <p>ncurses uses internal functions which correspond to |
| <code>tiparm</code>, and <code>tgoto</code> which ensure |
| that the capability strings which are passed to these |
| functions come from the loaded terminal description.</p> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>improve check in <code>lib_tparm.c</code>, ensuring that a |
| char* fits into a <code>TPARM_ARG</code></p> |
| </li> |
| |
| <li> |
| <p>modify <code>_nc_syserr_abort</code> to use |
| <code>_nc_env_access</code>, rather than only checking root |
| uid</p> |
| </li> |
| |
| <li> |
| <p>improve thread lock in <code>lib_trace.c</code></p> |
| </li> |
| |
| <li> |
| <p>modify <code>flushinp</code> to use file descriptors in |
| <code>SCREEN</code>, rather than from <code>TERMINAL</code>, |
| and check if they are for a terminal, like SVr4</p> |
| </li> |
| |
| <li> |
| <p>modify <code>mcprint</code> to use file descriptor in |
| <code>SCREEN</code>, for consistency</p> |
| </li> |
| |
| <li> |
| <p>modify internal function <code>_nc_read_file_entry</code> |
| to show relevant filename in warnings</p> |
| </li> |
| |
| <li> |
| <p>improve checks in internal function |
| <code>convert_string</code> for corrupt terminfo entry</p> |
| </li> |
| |
| <li> |
| <p>review/improve handling of out-of-memory conditions</p> |
| </li> |
| |
| <li> |
| <p>limit delays to 30 seconds, i.e., padding delays in |
| terminfo, as well as <code>napms</code> and |
| <code>delay_output</code> functions</p> |
| </li> |
| |
| <li> |
| <p>fix reallocation loop for <code>vsnprintf</code> in |
| <code>_nc_sprintf_string</code> by copying the va_list |
| variable</p> |
| </li> |
| |
| <li> |
| <p>modify <code>delscreen</code> to limit the windows which |
| it creates to just those associated with the screen</p> |
| </li> |
| |
| <li> |
| <p>modify <code>endwin</code> to return an error if it is |
| called again without an intervening screen update</p> |
| </li> |
| |
| <li> |
| <p>modify <code>wenclose</code> to handle pads</p> |
| </li> |
| |
| <li> |
| <p>eliminate use of <code>PATH_MAX</code> in |
| <code>lib_trace.c</code></p> |
| </li> |
| |
| <li> |
| <p>provide for any <code>CCHARW_MAX</code> greater than 1</p> |
| </li> |
| </ul> |
| |
| <p>These are corrections to existing features:</p> |
| |
| <ul> |
| <li> |
| <p>correct loop termination condition in |
| <code>waddnstr</code> and <code>waddnwstr</code></p> |
| </li> |
| |
| <li> |
| <p>improve parsing in internal function |
| <code>_nc_msec_cost</code>, allowing a single decimal |
| point</p> |
| </li> |
| |
| <li> |
| <p>amend parameter check for entire string versus specific |
| length in <code>winsnstr</code> and <code>wins_nwstr</code> |
| to match Solaris; make similar correction to |
| <code>wins_nwstr</code></p> |
| </li> |
| |
| <li> |
| <p>correct internal function <code>wadd_wch_literal</code> |
| when adding a non-spacing character to a double-width |
| character</p> |
| </li> |
| |
| <li> |
| <p>correct definition of <code>Charable</code> macro for |
| non-wide ncurses library .</p> |
| </li> |
| </ul> |
| |
| <h3><a name="h3-programs" id="h3-programs">Program |
| improvements</a></h3> |
| |
| <p id="h4-utilities">Several improvements were made to the |
| utility programs. Some were done to make the <code>infocmp</code> |
| option “<tt>-u</tt>” option help refactor the |
| terminal database.</p> |
| |
| <dl> |
| <dt><span class="part-name"><a href= |
| "https://invisible-island.net/ncurses/man/infocmp.1m.html">infocmp</a></span> |
| </dt> |
| |
| <dd> |
| <ul> |
| <li> |
| <p>add limit checks for processing extended capabilities |
| with the “<code>-u</code>” option</p> |
| </li> |
| |
| <li> |
| <p>correct initial alignment of extended capabilities, so |
| that the “<code>-u</code>” option can be used |
| for more than two terminal types</p> |
| </li> |
| |
| <li> |
| <p>modify “<code>-u</code>” option to not |
| report cancels for strings which were already cancelled |
| in a use'd chunk.</p> |
| </li> |
| |
| <li> |
| <p>correct an assignment “<code>-u</code>” |
| for detecting if a boolean is unset in a base entry and |
| set in a use'd chunk, i.e., if it was cancelled.</p> |
| </li> |
| </ul> |
| </dd> |
| |
| <dt><span class="part-name"><a href= |
| "https://invisible-island.net/ncurses/man/tic.1m.html">tic</a></span> |
| </dt> |
| |
| <dd> |
| <ul> |
| <li> |
| <p>correct limit-check when dumping tc/use clause via |
| “<code>-I</code>”</p> |
| </li> |
| |
| <li> |
| <p>check return value of <code>_nc_save_str</code>, in |
| special case where extended capabilities are processed |
| but the terminal description was not initialized</p> |
| </li> |
| |
| <li> |
| <p>modify check for multiply defined aliases to report |
| problems within the current runtime rather than for |
| conflicts with pre-existing terminal descriptions.</p> |
| </li> |
| |
| <li> |
| <p>disallow using <code>$TERMINFO</code> or |
| <code>$HOME/.terminfo</code> when |
| “<code>-o</code>” option is used</p> |
| </li> |
| </ul> |
| </dd> |
| |
| <dt><span class="part-name"><a href= |
| "https://invisible-island.net/ncurses/man/tput.1.html">tput</a></span> and <span class= |
| "part-name"><a href= |
| "https://invisible-island.net/ncurses/man/tset.1.html">tset</a></span></dt> |
| |
| <dd> |
| <ul> |
| <li> |
| <p>add “<code>-v</code>” option to tput, to |
| show warnings</p> |
| </li> |
| |
| <li> |
| <p>modify <em>reset</em> command to avoid altering clocal |
| if the terminal uses a modem</p> |
| </li> |
| |
| <li> |
| <p>modify <em>reset</em> feature to avoid 1-second sleep |
| if running in a pseudo-terminal</p> |
| </li> |
| </ul> |
| </dd> |
| </dl> |
| |
| <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> |
| |
| <p>Along with the library and utilities, improvements were made |
| to the <a href= |
| "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>:</p> |
| |
| <ul> |
| <li> |
| <p>modify <code>test_tparm</code> to account for extended |
| capabilities</p> |
| </li> |
| |
| <li> |
| <p>corrected mouse mask in <code>test/testcurs.c</code></p> |
| </li> |
| |
| <li> |
| <p>modify <code>test/clip_printw.c</code> to optionally test |
| non-wrapped updates</p> |
| </li> |
| |
| <li> |
| <p>modify <code>test/test_mouse.c</code> to use curses api |
| for raw/noraw</p> |
| </li> |
| |
| <li> |
| <p>modify <code>test/clip_printw.c</code> to optionally test |
| non-wrapped updates</p> |
| </li> |
| </ul> |
| |
| <p>There is one new demo/test programs:</p> |
| |
| <dl> |
| <dt><span class="part-name"><em>test/test_endwin.c</em></span> |
| </dt> |
| |
| <dd> |
| <p>This program shows the return-status from |
| <code>endwin</code> with different combinations of |
| <code>endwin</code> (repeated), <code>initscr</code>, |
| <code>newterm</code>.</p> |
| </dd> |
| </dl> |
| |
| <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> |
| |
| <p>There are several new terminal descriptions:</p> |
| |
| <ul> |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-contour"><tt>contour</tt></a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a> |
| for terminals which imitate xterm's behavior with Linux</p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio"><tt>rio</tt></a>, |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>, |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>, |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>, |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>, |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a> |
| from <a href="https://invisible-island.net/xterm/xterm.log.html#xterm_389">xterm |
| #389</a></p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a> |
| to reflect amending of modified cursor-keys in 2021</p> |
| </li> |
| |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p> |
| </li> |
| </ul> |
| |
| <p>There are many changes to existing terminal descriptions. Some |
| were updates to several descriptions, using the |
| <code>infocmp</code> “<code>-u</code>” option in a |
| script to determine which <em>building-block</em> entries could |
| be used to replace multiple capability settings (and trim |
| redundant information).</p> |
| |
| <p>Other changes include:</p> |
| |
| <ul> |
| <li> |
| <p><a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a> |
| XF, kxIN and kxOUT</p> |
| </li> |
| |
| <li> |
| <p>add note on <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-sun"><tt>sun</tt></a> |
| regarding wscons/cmdtool/shelltool</p> |
| </li> |
| |
| <li> |
| <p>remove DECCOLM+DECSCLM from <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot"><tt>foot</tt></a></p> |
| </li> |
| |
| <li> |
| <p>add xterm+focus to <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p> |
| </li> |
| |
| <li> |
| <p>add ecma+strikeout to <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty"><tt>putty</tt></a></p> |
| </li> |
| |
| <li> |
| <p>use CSI 3J in <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p> |
| </li> |
| |
| <li> |
| <p>use oldxterm+sm+1006 in <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p> |
| </li> |
| |
| <li> |
| <p>modify <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a> |
| to work around line-drawing bug</p> |
| </li> |
| |
| <li> |
| <p>add xterm focus mode 1004 to <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> |
| as fe/fd capabilities, like vim.</p> |
| </li> |
| |
| <li> |
| <p>add xterm+focus to <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p> |
| </li> |
| |
| <li> |
| <p>add XR/xr, to work with vim, and use RV/rv to denote DA2 |
| and its response</p> |
| </li> |
| |
| <li> |
| <p>add XF flag to <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> |
| so that termcap applications can be aware of terminals which |
| may support focus in/out</p> |
| </li> |
| |
| <li> |
| <p>use xterm+focus in <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a> |
| and <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> |
| </li> |
| |
| <li> |
| <p>remove xterm+sm+1006 from <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> |
| </li> |
| |
| <li> |
| <p>NetBSD-related fixes for <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and |
| <a href= |
| "https://invisible-island.net/ncurses/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p> |
| </li> |
| </ul> |
| |
| <h3><a name="h3-documentation" id= |
| "h3-documentation">Documentation</a></h3> |
| |
| <p>As usual, this release</p> |
| |
| <ul> |
| <li> |
| <p>improves documentation by describing new features,</p> |
| </li> |
| |
| <li> |
| <p>attempts to improve the description of features which |
| users have found confusing</p> |
| </li> |
| |
| <li> |
| <p>fills in overlooked descriptions of features which were |
| described in the <a href="https://invisible-island.net/ncurses/NEWS.html">NEWS</a> file |
| but treated sketchily in manual pages.</p> |
| </li> |
| </ul> |
| |
| <p>In addition to providing background information to explain |
| these features and show how they evolved, there are corrections, |
| clarifications, etc.:</p> |
| |
| <ul> |
| <li> |
| <p>Corrections:</p> |
| |
| <ul> |
| <li> |
| <p>add assignment in <code>CF_MAN_PAGES</code> to fill in |
| value for <code>TERMINFO_DIRS</code> in ncurses, terminfo |
| and tic manpages.</p> |
| </li> |
| |
| <li> |
| <p>clarify interaction of <code>-R</code> option versus |
| <code>-C</code>, <code>-I</code> and <code>-r</code> in |
| <code>infocmp</code> manpage.</p> |
| </li> |
| |
| <li> |
| <p>correct manpage description of panel_hidden.</p> |
| </li> |
| |
| <li> |
| <p>improve manpage description for addch versus unctrl |
| format used for non-printable characters.</p> |
| </li> |
| |
| <li> |
| <p>improve manpages discussing file descriptors in |
| low-level functions.</p> |
| </li> |
| |
| <li> |
| <p>improve description of search rules for terminal |
| descriptions in terminfo manpage.</p> |
| </li> |
| |
| <li> |
| <p>modify dist.mk to avoid passing developer's comments |
| in manpages into the generated html documentation.</p> |
| </li> |
| |
| <li> |
| <p>modify test-package "ncurses6-doc" to use |
| manpage-aliases, which in turn required a change to the |
| configure script to factor in the extra-suffix option |
| when deriving alias names.</p> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>New/improved history and portability sections:</p> |
| |
| <ul> |
| <li> |
| <p>add information about "ttycap", termcap's forerunner, |
| to tset.1</p> |
| </li> |
| |
| <li> |
| <p>document limitations of tparm, and error-returns in |
| curs_terminfo.3x</p> |
| </li> |
| |
| <li> |
| <p>document limitations of tgoto, and error-returns in |
| curs_termcap.3x</p> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>Other improvements:</p> |
| |
| <ul> |
| <li> |
| <p>This release has many changes to improve the |
| formatting and style of the manpages.</p> |
| </li> |
| |
| <li> |
| <p>Manpages now use consistent section-naming, page |
| headers and footers (including the modification date for |
| each page).</p> |
| </li> |
| |
| <li> |
| <p>Table layout has been revised.</p> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| |
| <p>There are no new manual pages (all of the manual page updates |
| are to existing pages).</p> |
| |
| <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting |
| bug-fixes</a></h3> |
| |
| <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve |
| the design of the low-level interfaces are <em>interesting</em>, |
| but are not bug-fixes <em>per se</em>.</p> |
| |
| <h3><a name="h3-config-config" id= |
| "h3-config-config">Configuration changes</a></h3> |
| |
| <h4><a name="h4-config-major" id="h4-config-major">Major |
| changes</a></h4> |
| |
| <p>These are the major changes (aside from introducing <a href= |
| "#h4-new-library"><tt>tiparm_s</tt></a>):</p> |
| |
| <ul> |
| <li> |
| <p>use wide-character (ncursesw) by default</p> |
| </li> |
| |
| <li> |
| <p>use opaque typedefs by default</p> |
| </li> |
| </ul> |
| |
| <p>However, most of the work on configure scripts was done to |
| reduce warnings within the configure script:</p> |
| |
| <ul> |
| <li> |
| <p>intrusive warnings from GNU grep regarding fgrep and |
| egrep</p> |
| </li> |
| |
| <li> |
| <p>fatal errors in compile-checks, arising from recent |
| “Modern C” efforts by some developers which |
| caused longstanding configure checks to fail.</p> |
| |
| <p>After repairing the configure script, none of that |
| activity affected ncurses because stricter warnings are used |
| routinely in development.</p> |
| </li> |
| </ul> |
| |
| <p>Other improvements made to configure checks include</p> |
| |
| <ul> |
| <li> |
| <p>use <a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:enable-string-hacks">string-hacks</a> |
| in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked |
| due to compiler changes in recent OpenBSD releases</p> |
| </li> |
| |
| <li> |
| <p>revise progs.priv.h to provide for NC_ISATTY reuse</p> |
| </li> |
| |
| <li> |
| <p>configure check for MB_LEN_MAX provides warning as |
| needed</p> |
| </li> |
| |
| <li> |
| <p>trim a space after some "-R" options, fixing builds for |
| applications built using clang and ncurses on Solaris</p> |
| </li> |
| |
| <li> |
| <p>work around misconfiguration of MacPorts gcc13, which |
| exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's |
| fallback copy of <tt>limits.h</tt></p> |
| </li> |
| |
| <li> |
| <p>modified experimental Windows driver works with xterm |
| mouse protocol</p> |
| </li> |
| </ul> |
| |
| <h4><a name="h4-config-options" id= |
| "h4-config-options">Configuration options</a></h4> |
| |
| <p>There are a few new configure options:</p> |
| |
| <dl> |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a> |
| </dt> |
| |
| <dd> |
| <p>Compile with environment restriction, so certain |
| environment variables are not available when running via a |
| setuid/setgid application. These are (for example |
| <tt>$TERMINFO</tt>) those that allow the search path for the |
| terminfo or termcap entry to be customized.</p> |
| |
| <p>A setuid/setgid application inherits its environment |
| variables from the current user, in contrast to sudo which |
| may limit the environment variables that ncurses uses.</p> |
| </dd> |
| |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a> |
| </dt> |
| |
| <dd> |
| <p>Compile-in feature to detect screensize for terminals |
| which do not advertise their screensize, e.g., serial |
| terminals.</p> |
| </dd> |
| |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a> |
| </dt> |
| |
| <dd> |
| <p>Override the displayed (rather than compiled-in) ABI. Only |
| packagers who have created configurations where the ABI |
| differs from ncurses should be interested in this option.</p> |
| </dd> |
| |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a> |
| </dt> |
| |
| <dd> |
| <p>When stripping executables during install, use the |
| specified program rather than “strip” overriding |
| program chosen by the install program for stripping |
| executables.</p> |
| </dd> |
| </dl> |
| |
| <p>These configure options are modified:</p> |
| |
| <dl> |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a> |
| </dt> |
| |
| <dd> |
| <p>The optional <em>DIR</em> parameter can now be |
| “auto” to automatically use pkg-config's library |
| directory.</p> |
| |
| <p>The default is <tt>$(libdir)</tt>.</p> |
| </dd> |
| |
| <dt><a href= |
| "https://invisible-island.net/ncurses/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a> |
| </dt> |
| |
| <dd> |
| <p>The default is “auto” which tells the |
| configure script to choose BS or DEL according to platform |
| defaults.</p> |
| </dd> |
| </dl> |
| |
| <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> |
| |
| <p>Many of the portability changes are implemented via the |
| configure script:</p> |
| |
| <ul> |
| <li> |
| <p>add/use configure check for <code>clock_gettime</code>, to |
| supersede <code>gettimeofday</code>.</p> |
| </li> |
| |
| <li> |
| <p>modify configure script check for pkg-config library |
| directory to take into account an older version 0.15.0 which |
| used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p> |
| </li> |
| |
| <li> |
| <p>allow for MinGW32-/64-bit configurations to use |
| _DEFAULT_SOURCE</p> |
| </li> |
| |
| <li> |
| <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid |
| undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p> |
| </li> |
| |
| <li> |
| <p>updated configure script macro CF_XOPEN_SOURCE, for |
| uClibc-ng</p> |
| </li> |
| |
| <li> |
| <p>modify version-check for gcc/g++, now works for msys2</p> |
| </li> |
| |
| <li> |
| <p>build-fixes related to configure-options and/or |
| platform:</p> |
| |
| <ul> |
| <li>fix for <tt>--enable-fvisibility</tt></li> |
| |
| <li>fix for unusual values of |
| <tt>--with-rel-version</tt></li> |
| |
| <li>fix for unusual values of |
| <tt>--with-abi-version</tt></li> |
| |
| <li>fix for <tt>--disable-tcap-names</tt></li> |
| |
| <li>fix for termcap in <tt>nc_access.h</tt></li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>other configure-script improvements:</p> |
| |
| <ul> |
| <li>recent msys2 headers work with |
| <tt>_DEFAULT_SOURCE</tt>; amend check</li> |
| |
| <li>use <tt>$ac_includes_default</tt> in most cases where |
| stdlib.h should work</li> |
| |
| <li>use <tt>#error</tt> consistently vs "make an |
| error"</li> |
| |
| <li>add configure macro for <tt>gettimeofday</tt> vs inline |
| check</li> |
| </ul> |
| </li> |
| </ul> |
| |
| <p>Here are some of the other portability fixes:</p> |
| |
| <ul> |
| <li> |
| <p>modify configure scripts/makefiles to omit |
| <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt> |
| feature is disabled</p> |
| </li> |
| |
| <li> |
| <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's |
| <tt>MB_LEN_MAX</tt></p> |
| </li> |
| |
| <li> |
| <p>add BSD <tt>erase2</tt> to characters handled by |
| tset/reset</p> |
| </li> |
| |
| <li> |
| <p>use <tt>getauxval</tt> when available, to improve |
| <tt>setuid</tt>/<tt>setgid</tt> checks</p> |
| </li> |
| |
| <li> |
| <p>set <tt>dwShareMode</tt> in calls to |
| <tt>CreateConsoleScreenBuffer</tt></p> |
| </li> |
| |
| <li> |
| <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>", |
| "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to |
| obtain a handle on the actual console, avoiding redirection |
| in the MinGW/Win32 configurations</p> |
| </li> |
| |
| <li> |
| <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when |
| an unmodified <tt>VK_BACK</tt> virtual key is entered</p> |
| </li> |
| |
| <li> |
| <p>modify MinGW configuration to provide for running in |
| MSYS/MSYS2 shells, assuming ConPTY support</p> |
| </li> |
| </ul> |
| |
| <hr> |
| |
| <h2><a name="h2-features" id="h2-features">Features of |
| <span class="main-name">ncurses</span></a></h2> |
| |
| <p>The <span class="main-name">ncurses</span> package is fully |
| upward-compatible with SVr4 (System V Release 4) curses:</p> |
| |
| <ul> |
| <li> |
| <p>All of the SVr4 calls have been implemented (and are |
| documented).</p> |
| </li> |
| |
| <li> |
| <p><span class="main-name">ncurses</span> supports the |
| features of SVr4 curses including keyboard mapping, color, |
| form drawing with ACS characters, and automatic recognition |
| of keypad and function keys.</p> |
| </li> |
| |
| <li> |
| <p><span class="main-name">ncurses</span> provides work-alike |
| replacements of SVr4 supplemental libraries based on curses, |
| but which were not specified by X/Open Curses:</p> |
| |
| <ul> |
| <li> |
| <p>the panel library, supporting a stack of windows with |
| backing store</p> |
| </li> |
| |
| <li> |
| <p>the menu library, supporting a uniform but flexible |
| interface for menu programming</p> |
| </li> |
| |
| <li> |
| <p>the form library, supporting data collection through |
| on-screen forms</p> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <p><span class="main-name">ncurses</span>'s terminal database |
| is fully compatible with that used by SVr4 curses.</p> |
| |
| <ul> |
| <li> |
| <p><span class="main-name">ncurses</span> supports |
| user-defined capabilities that it can see, but which are |
| hidden from SVr4 curses applications using the |
| <em>same</em> terminal database.</p> |
| </li> |
| |
| <li> |
| <p>It can be optionally configured to match the format |
| used in related systems such as AIX and Tru64.</p> |
| </li> |
| |
| <li> |
| <p>Alternatively, <span class="main-name">ncurses</span> |
| can be configured to use hashed databases rather than the |
| directory of files used by SVr4 curses.</p> |
| </li> |
| </ul> |
| </li> |
| |
| <li> |
| <p>The <span class="main-name">ncurses</span> utilities have |
| options to allow you to filter terminfo entries for use with |
| less capable <em>curses</em>/<em>terminfo</em> versions such |
| as the HP-UX and AIX ports.</p> |
| </li> |
| </ul> |
| |
| <p>The <span class="main-name">ncurses</span> package also has |
| many useful extensions over SVr4:</p> |
| |
| <ul> |
| <li> |
| <p>The API is 8-bit clean and base-level conformant with the |
| X/Open Curses specification, XSI curses (that is, it |
| implements all <em>BASE</em> level features, and almost all |
| <em>EXTENDED</em> features). It includes many function calls |
| not supported under SVr4 curses (but portability of all calls |
| is documented so you can use the SVr4 subset only).</p> |
| </li> |
| |
| <li> |
| <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> |
| can write to the rightmost-bottommost corner of the screen if |
| your terminal has an insert-character capability.</p> |
| </li> |
| |
| <li> |
| <p>Ada95 and C++ bindings.</p> |
| </li> |
| |
| <li> |
| <p>Support for mouse event reporting with X Window xterm and |
| FreeBSD and OS/2 console windows.</p> |
| </li> |
| |
| <li> |
| <p>Extended mouse support via Alessandro Rubini's gpm |
| package.</p> |
| </li> |
| |
| <li> |
| <p>The function <code>wresize</code> allows you to resize |
| windows, preserving their data.</p> |
| </li> |
| |
| <li> |
| <p>The function <code>use_default_colors</code> allows you to |
| use the terminal's default colors for the default color pair, |
| achieving the effect of transparent colors.</p> |
| </li> |
| |
| <li> |
| <p>The functions <code>keyok</code> and |
| <code>define_key</code> allow you to better control the use |
| of function keys, e.g., disabling the <span class= |
| "main-name">ncurses</span> KEY_MOUSE, or by defining more |
| than one control sequence to map to a given key code.</p> |
| </li> |
| |
| <li> |
| <p>Support for direct-color terminals, such as modern |
| xterm.</p> |
| </li> |
| |
| <li> |
| <p>Support for 256-color terminals, such as modern xterm.</p> |
| </li> |
| |
| <li> |
| <p>Support for 16-color terminals, such as <em>aixterm</em> |
| and <em>modern xterm</em>.</p> |
| </li> |
| |
| <li> |
| <p>Better cursor-movement optimization. The package now |
| features a cursor-local-movement computation more efficient |
| than either BSD's or System V's.</p> |
| </li> |
| |
| <li> |
| <p>Super hardware scrolling support. The screen-update code |
| incorporates a novel, simple, and cheap algorithm that |
| enables it to make optimal use of hardware scrolling, |
| line-insertion, and line-deletion for screen-line movements. |
| This algorithm is more powerful than the 4.4BSD curses |
| <code>quickch</code> routine.</p> |
| </li> |
| |
| <li> |
| <p>Real support for terminals with the magic-cookie glitch. |
| The screen-update code will refrain from drawing a highlight |
| if the magic- cookie unattributed spaces required just before |
| the beginning and after the end would step on a non-space |
| character. It will automatically shift highlight boundaries |
| when doing so would make it possible to draw the highlight |
| without changing the visual appearance of the screen.</p> |
| </li> |
| |
| <li> |
| <p>It is possible to generate the library with a list of |
| pre-loaded fallback entries linked to it so that it can serve |
| those terminal types even when no terminfo tree or termcap |
| file is accessible (this may be useful for support of |
| screen-oriented programs that must run in single-user |
| mode).</p> |
| </li> |
| |
| <li> |
| <p>The <a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class= |
| "part-name">tic</span></a>/<a href= |
| "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a> utility |
| provided with <span class="main-name">ncurses</span> has the |
| ability to translate many termcaps from the XENIX, IBM and |
| AT&T extension sets.</p> |
| </li> |
| |
| <li> |
| <p>A BSD-like <a href= |
| "https://invisible-island.net/ncurses/man/tset.1.html"><span class= |
| "part-name">tset</span></a> utility is provided.</p> |
| </li> |
| |
| <li> |
| <p>The <span class="main-name">ncurses</span> library and |
| utilities will automatically read terminfo entries from |
| $HOME/.terminfo if it exists, and compile to that directory |
| if it exists and the user has no write access to the system |
| directory. This feature makes it easier for users to have |
| personal terminfo entries without giving up access to the |
| system terminfo directory.</p> |
| </li> |
| |
| <li> |
| <p>You may specify a path of directories to search for |
| compiled descriptions with the environment variable |
| TERMINFO_DIRS (this generalizes the feature provided by |
| TERMINFO under stock System V.)</p> |
| </li> |
| |
| <li> |
| <p>In terminfo source files, use capabilities may refer not |
| just to other entries in the same source file (as in System |
| V) but also to compiled entries in either the system terminfo |
| directory or the user's $HOME/.terminfo directory.</p> |
| </li> |
| |
| <li> |
| <p>The table-of-entries utility <a href= |
| "https://invisible-island.net/ncurses/man/toe.1m.html"><span class= |
| "part-name">toe</span></a> makes it easy for users to see |
| exactly what terminal types are available on the system.</p> |
| </li> |
| |
| <li> |
| <p>X/Open Curses permits most functions it specifies to be |
| made available as macros as well. ncurses does this</p> |
| |
| <ul> |
| <li>to improve performance, e.g., for operations composed |
| of simpler functions such as cursor movement following by |
| adding text to the screen,</li> |
| |
| <li>to simplify the implementation by reusing functions |
| which use common parameters, e.g., the standard screen |
| <code>stdscr</code>, and</li> |
| |
| <li>to provide functions that return values via their |
| parameters</li> |
| </ul> |
| |
| <p>Except for the last case, ncurses provides a non-macro |
| implementation of the function. If the macro definition is |
| disabled with <code>#undef</code>, or by defining |
| <code>NCURSES_NOMACROS</code> the function may be linked (and |
| its calls will be checked against the prototype).</p> |
| </li> |
| |
| <li> |
| <p>Extensive documentation is provided (see the <em><a href= |
| "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">Additional |
| Reading</a></em> section of the <em><a href= |
| "https://invisible-island.net/ncurses/ncurses.faq.html"><span class= |
| "main-name">ncurses</span> FAQ</a></em> for online |
| documentation).</p> |
| </li> |
| </ul> |
| |
| <h2><a name="h2-who-uses" id="h2-who-uses">Applications using |
| <span class="main-name">ncurses</span></a></h2> |
| |
| <p>The <span class="main-name">ncurses</span> distribution |
| includes a selection of test programs (including a few games). |
| These are available separately as <a href= |
| "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p> |
| |
| <p>The ncurses library has been tested with a wide variety of |
| applications including:</p> |
| |
| <blockquote> |
| <dl> |
| <dt><span class="part-name">aptitude</span> |
| </dt> |
| |
| <dd> |
| <p>FrontEnd to Apt, the debian package manager</p> |
| |
| <p><a href= |
| "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> |
| </dd> |
| |
| <dt><span class="part-name">cdk</span> |
| </dt> |
| |
| <dd> |
| <p>Curses Development Kit</p> |
| |
| <p><a href="https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br> |
| </p> |
| </dd> |
| |
| <dt><span class="part-name">ded</span> |
| </dt> |
| |
| <dd> |
| <p>directory-editor</p> |
| |
| <p><a href="https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">dialog</span> |
| </dt> |
| |
| <dd> |
| <p>the underlying application used in Slackware's setup, |
| and the basis for similar install/configure applications on |
| many systems.</p> |
| |
| <p><a href="https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">lynx</span> |
| </dt> |
| |
| <dd> |
| <p>the text WWW browser</p> |
| |
| <p><a href= |
| "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">mutt</span> |
| </dt> |
| |
| <dd> |
| <p>mail utility</p> |
| |
| <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">ncftp</span> |
| </dt> |
| |
| <dd> |
| <p>file-transfer utility</p> |
| |
| <p><a href= |
| "https://www.ncftp.com/">https://www.ncftp.com/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">nvi</span> |
| </dt> |
| |
| <dd> |
| <p>New vi uses ncurses.</p> |
| |
| <p><a href= |
| "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page"> |
| https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br> |
| |
| </p> |
| </dd> |
| |
| <dt><span class="part-name">ranger</span> |
| </dt> |
| |
| <dd> |
| <p>A console file manager with VI key bindings in |
| <em>Python</em>.</p> |
| |
| <p><a href= |
| "https://ranger.github.io/">https://ranger.github.io/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">tin</span> |
| </dt> |
| |
| <dd> |
| <p>newsreader, supporting color, MIME</p> |
| |
| <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">vifm</span> |
| </dt> |
| |
| <dd> |
| <p>File manager with vi like keybindings</p> |
| |
| <p><a href="https://vifm.info/">https://vifm.info/</a></p> |
| </dd> |
| </dl> |
| </blockquote> |
| |
| <p>as well as some that use <span class= |
| "main-name">ncurses</span> for the terminfo support alone:</p> |
| |
| <blockquote> |
| <dl> |
| <dt><span class="part-name">minicom</span> |
| </dt> |
| |
| <dd> |
| <p>terminal emulator for serial modem connections</p> |
| |
| <p><a href= |
| "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p> |
| </dd> |
| |
| <dt><span class="part-name">mosh</span> |
| </dt> |
| |
| <dd> |
| <p>a replacement for <code>ssh</code>.</p> |
| |
| <p><a href="https://mosh.org/">https://mosh.org/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">tack</span> |
| </dt> |
| |
| <dd> |
| <p>terminfo action checker</p> |
| |
| <p><a href="https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p> |
| </dd> |
| |
| <dt><span class="part-name">tmux</span> |
| </dt> |
| |
| <dd> |
| <p>terminal multiplexor</p> |
| |
| <p><a href= |
| "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> |
| </dd> |
| |
| <dt><span class="part-name">vile</span> |
| </dt> |
| |
| <dd> |
| <p><em>vi-like-emacs</em> may be built to use the terminfo, |
| termcap or curses interfaces.</p> |
| |
| <p><a href="https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p> |
| </dd> |
| </dl> |
| </blockquote> |
| |
| <p>and finally, those which use only the termcap interface:</p> |
| |
| <blockquote> |
| <dl> |
| <dt><span class="part-name">emacs</span> |
| </dt> |
| |
| <dd> |
| <p>text editor</p> |
| |
| <p><a href= |
| "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">less</span> |
| </dt> |
| |
| <dd> |
| <p>The most commonly used <em>pager</em> (a program that |
| displays text files).</p> |
| |
| <p><a href= |
| "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">screen</span> |
| </dt> |
| |
| <dd> |
| <p>terminal multiplexor</p> |
| |
| <p><a href= |
| "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> |
| </dd> |
| |
| <dt><span class="part-name">vim</span> |
| </dt> |
| |
| <dd> |
| <p>text editor</p> |
| |
| <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> |
| </dd> |
| </dl> |
| </blockquote> |
| |
| <h2><a name="h2-development" id="h2-development">Development |
| activities</a></h2> |
| |
| <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> |
| from a previous package pcurses, written by Pavel Curtis. Eric S. |
| Raymond continued development. Jürgen Pfeifer wrote most of |
| the form and menu libraries.</p> |
| |
| <p>Ongoing development work is done by <a href= |
| "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas |
| E. Dickey has acted as the maintainer for the Free Software |
| Foundation, which held a <a href= |
| "https://invisible-island.net/ncurses/ncurses-license.html">copyright on ncurses</a> for |
| releases 4.2 through 6.1. Following the release of ncurses 6.1, |
| effective as of release 6.2, copyright for ncurses reverted to |
| Thomas E. Dickey (see the <a href= |
| "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed">ncurses FAQ</a> for |
| additional information).</p> |
| |
| <p>Contact the current maintainers at</p> |
| |
| <blockquote> |
| <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> |
| </blockquote> |
| |
| <p>To join the ncurses mailing list, please write email to</p> |
| |
| <blockquote> |
| <a href= |
| "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> |
| </blockquote> |
| containing the line: |
| <blockquote> |
| <p><code>subscribe</code> |
| <em><name>@<host.domain></em></p> |
| </blockquote> |
| |
| <p>This list is open to anyone interested in helping with the |
| development and testing of this package.</p> |
| |
| <p>Beta versions of <span class="main-name">ncurses</span> are |
| made available at</p> |
| |
| <blockquote> |
| <p><a href= |
| "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a> |
| and<br> |
| <a href= |
| "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a> .</p> |
| </blockquote> |
| |
| <p>Patches to the current release are made available at</p> |
| |
| <blockquote> |
| <p><a href= |
| "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a> |
| and<br> |
| <a href= |
| "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a> .</p> |
| </blockquote> |
| |
| <p>There is an archive of the mailing list here:</p> |
| |
| <blockquote> |
| <p><a href= |
| "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a> .</p> |
| </blockquote> |
| |
| <h2><a name="h2-this-stuff" id="h2-this-stuff">Related |
| resources</a></h2> |
| |
| <p>The release notes make scattered references to these pages, |
| which may be interesting by themselves:</p> |
| |
| <ul> |
| <li><a href="https://invisible-island.net/ncurses/ncurses-license.html"><span class= |
| "main-name">ncurses</span> licensing</a></li> |
| |
| <li><a href="https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol versioning |
| in <span class="main-name">ncurses</span></a></li> |
| |
| <li><a href="https://invisible-island.net/ncurses/ncurses-slang.html">Comments on |
| <span class="main-name">ncurses</span> versus <span class= |
| "main-name">slang</span> (S-Lang)</a></li> |
| |
| <li><a href="https://invisible-island.net/ncurses/ncurses-openbsd.html">Comments on |
| <span class="main-name">OpenBSD</span></a></li> |
| |
| <li><a href="https://invisible-island.net/ncurses/tack.html">tack – terminfo action |
| checker</a></li> |
| |
| <li><a href="https://invisible-island.net/ncurses/tctest.html">tctest – termcap |
| library checker</a></li> |
| |
| <li><a href= |
| "https://invisible-island.net/ncurses/ncurses.html#download_database">Terminal |
| Database</a></li> |
| </ul> |
| |
| <h2><a name="h2-other-stuff" id="h2-other-stuff">Other |
| resources</a></h2> |
| |
| <p>The distribution provides a newer version of the |
| terminfo-format terminal description file once maintained by |
| <a href="http://www.catb.org/~esr/terminfo/">Eric |
| Raymond</a> . Unlike the older version, the termcap and |
| terminfo data are provided in the same file, which also provides |
| several user-definable extensions beyond the X/Open Curses |
| specification.</p> |
| |
| <p>You can find lots of information on terminal-related topics |
| not covered in the terminfo file in <a href= |
| "https://shuford.invisible-island.net/">Richard Shuford's |
| archive</a> (<a href= |
| "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>). |
| The collection of computer manuals at <a href= |
| "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been |
| useful.</p> |
| |
| <div class="nav"> |
| <ul> |
| <li><a href="#h2-overview">Overview</a></li> |
| |
| <li> |
| <a href="#h2-release-notes">Release Notes</a> |
| <ul> |
| <li> |
| <a href="#h3-library">Library improvements</a> |
| <ul> |
| <li><a href="#h4-new-library">New features</a></li> |
| |
| <li><a href="#h4-fixes-library">Other |
| improvements</a></li> |
| </ul> |
| </li> |
| |
| <li> |
| <a href="#h3-programs">Program improvements</a> |
| <ul> |
| <li><a href="#h4-utilities">Utilities</a></li> |
| |
| <li><a href="#h4-examples">Examples</a></li> |
| </ul> |
| </li> |
| |
| <li><a href="#h3-database">Terminal database</a></li> |
| |
| <li><a href="#h3-documentation">Documentation</a></li> |
| |
| <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> |
| |
| <li> |
| <a href="#h3-config-config">Configuration changes</a> |
| <ul> |
| <li><a href="#h4-config-major">Major changes</a></li> |
| |
| <li><a href="#h4-config-options">Configuration |
| options</a></li> |
| </ul> |
| </li> |
| |
| <li><a href="#h3-portability">Portability</a></li> |
| </ul> |
| </li> |
| |
| <li><a href="#h2-features">Features of <span class= |
| "main-name">ncurses</span></a></li> |
| |
| <li><a href="#h2-who-uses">Applications using <span class= |
| "main-name">ncurses</span></a></li> |
| |
| <li><a href="#h2-development">Development activities</a></li> |
| |
| <li><a href="#h2-this-stuff">Related resources</a></li> |
| |
| <li><a href="#h2-other-stuff">Other resources</a></li> |
| </ul> |
| </div> |
| </body> |
| </html> |