1<!-- 2 $Id: announce.html.in,v 1.107 2024/04/27 16:45:27 tom Exp $ 3 **************************************************************************** 4 * Copyright 2018-2023,2024 Thomas E. Dickey * 5 * * 6 * Permission is hereby granted, free of charge, to any person obtaining a * 7 * copy of this software and associated documentation files (the * 8 * "Software"), to deal in the Software without restriction, including * 9 * without limitation the rights to use, copy, modify, merge, publish, * 10 * distribute, distribute with modifications, sublicense, and/or sell * 11 * copies of the Software, and to permit persons to whom the Software is * 12 * furnished to do so, subject to the following conditions: * 13 * * 14 * The above copyright notice and this permission notice shall be included * 15 * in all copies or substantial portions of the Software. * 16 * * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * 18 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * 19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * 20 * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * 21 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * 22 * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * 23 * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * 24 * * 25 * Except as contained in this notice, the name(s) of the above copyright * 26 * holders shall not be used in advertising or otherwise to promote the * 27 * sale, use or other dealings in this Software without prior written * 28 * authorization. * 29 **************************************************************************** 30--> 31<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> 32<html> 33<head> 34 <meta name="generator" content= 35 "HTML Tidy for HTML5 for Linux version 5.6.0"> 36 <title>Announcing ncurses @VERSION@</title> 37 <link rel="author" href="mailto:bug-ncurses@gnu.org"> 38 <meta http-equiv="Content-Type" content= 39 "text/html; charset=us-ascii"> 40 <style type="text/css"> 41 p,li { max-width:700px; } 42 dd { max-width:630px; } 43 *.main-name { 44 font-style: italic; 45 font-variant: small-caps; 46 } 47 *.part-name { 48 font-family: "Andale Mono", "Monotype.com", monospace; 49 font-size: 12pt; 50 font-weight: bold; 51 } 52 *.demo-name { 53 font-family: "Andale Mono", "Monotype.com", monospace; 54 font-size: 10pt; 55 } 56 </style> 57</head> 58<body> 59 <h1 class="no-header">Announcing ncurses @VERSION@</h1> 60 61 <h2><a name="h2-overview" id="h2-overview">Overview</a></h2> 62 63 <p>The <span class="main-name">ncurses</span> (new curses) 64 library is a free software emulation of curses in System V 65 Release 4.0 (SVr4), and more. It uses terminfo format, supports 66 pads and color and multiple highlights and forms characters and 67 function-key mapping, and has all the other SVr4-curses 68 enhancements over BSD curses. SVr4 curses became the basis of 69 X/Open Curses.</p> 70 71 <p>In mid-June 1995, the maintainer of 4.4BSD curses declared 72 that he considered 4.4BSD curses obsolete, and encouraged the 73 keepers of <span class="main-name">unix</span> releases such as 74 BSD/OS, FreeBSD and NetBSD to switch over to <span class= 75 "main-name">ncurses</span>.</p> 76 77 <p>Since 1995, <span class="main-name">ncurses</span> has been 78 ported to many systems:</p> 79 80 <ul> 81 <li>It is used in almost every system based on the Linux kernel 82 (aside from some embedded applications).</li> 83 84 <li>It is used as the system curses library on OpenBSD, FreeBSD 85 and MacOS.</li> 86 87 <li>It is used in environments such as Cygwin and MinGW. The 88 first of these was EMX on OS/2 Warp.</li> 89 90 <li>It is used (though usually not as the <em>system</em> 91 curses) on all of the vendor <span class= 92 "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO, 93 Solaris, Tru64.</li> 94 95 <li>It should work readily on any ANSI/POSIX-conforming 96 <span class="main-name">unix</span>.</li> 97 </ul> 98 99 <p>The distribution includes the library and support utilities, 100 including</p> 101 102 <ul> 103 <li><a href="@HOMEPAGE@/man/captoinfo.1m.html"><span class= 104 "part-name">captoinfo</span></a>, a termcap conversion 105 tool</li> 106 107 <li><a href="@HOMEPAGE@/man/clear.1.html"><span class= 108 "part-name">clear</span></a>, utility for clearing the 109 screen</li> 110 111 <li><a href="@HOMEPAGE@/man/infocmp.1m.html"><span class= 112 "part-name">infocmp</span></a>, the terminfo decompiler</li> 113 114 <li><a href="@HOMEPAGE@/man/tabs.1.html"><span class= 115 "part-name">tabs</span></a>, set tabs on a terminal</li> 116 117 <li><a href="@HOMEPAGE@/man/tic.1m.html"><span class= 118 "part-name">tic</span></a>, the terminfo compiler</li> 119 120 <li><a href="@HOMEPAGE@/man/toe.1m.html"><span class= 121 "part-name">toe</span></a>, list (table of) terminfo 122 entries</li> 123 124 <li><a href="@HOMEPAGE@/man/tput.1.html"><span class= 125 "part-name">tput</span></a>, utility for retrieving terminal 126 capabilities in shell scripts</li> 127 128 <li><a href="@HOMEPAGE@/man/tset.1.html"><span class= 129 "part-name">tset</span></a>, to initialize the terminal</li> 130 </ul> 131 132 <p>Full manual pages are provided for the library and tools.</p> 133 134 <p>The <span class="main-name">ncurses</span> distribution is 135 available at <span class="main-name">ncurses</span>' <a href= 136 "@HOMEPAGE@/">homepage</a>:</p> 137 138 <blockquote> 139 <p><a href= 140 "https://invisible-island.net/archives/ncurses/">https://invisible-island.net/archives/ncurses/</a> 141 or<br> 142 <a href= 143 "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a> .</p> 144 </blockquote> 145 146 <p>It is also available at the GNU distribution site</p> 147 148 <blockquote> 149 <p><a href= 150 "https://ftp.gnu.org/gnu/ncurses/">https://ftp.gnu.org/gnu/ncurses/</a> .</p> 151 </blockquote> 152 153 <h2><a name="h2-release-notes" id="h2-release-notes">Release 154 Notes</a></h2> 155 156 <p>These notes are for <span class="main-name">ncurses</span> 157 @VERSION@, released <strong>April 27, 2024</strong>.</p> 158 159 <p>This release is designed to be source-compatible with 160 <span class="main-name">ncurses</span> 5.0 through 6.4; providing 161 extensions to the application binary interface (ABI). Although 162 the source can still be configured to support the <span class= 163 "main-name">ncurses</span> 5 ABI, the reason for the release is 164 to reflect improvements to the <span class= 165 "main-name">ncurses</span> 6 ABI and the supporting utility 166 programs.</p> 167 168 <p>There are, of course, numerous other improvements, listed in 169 this announcement.</p> 170 171 <p>The most <a href="#h3-bug-fixes">important 172 bug-fixes/improvements</a> dealt with robustness issues. The 173 release notes also mention some other bug-fixes, but are focused 174 on new features and improvements to existing features since 175 <span class="main-name">ncurses</span> 6.4 release.</p> 176 177 <h3><a name="h3-library" id="h3-library">Library improvements</a></h3> 178 179 <h4><a name="h4-new-library" id="h4-new-library">New features</a></h4> 180 181 <p>These are new features:</p> 182 183 <ul> 184 <li> 185 <p>The low-level terminfo and termcap interfaces are used 186 both by the higher-level curses library, as well as by many 187 applications.</p> 188 189 <p>The functions which convert parameterized terminal 190 capability strings for output to the terminal 191 (<code>tiparm</code> and <code>tparm</code>) analyze the 192 capability string to determine which parameters are strings 193 (i.e., addresses), versus numbers (not addresses).</p> 194 195 <p>The library's analysis of a capability string may differ 196 from the calling application's design if environment 197 variables are used to point to an invalid terminal database. 198 This is a longstanding problem with <em>all</em> 199 implementations of terminfo, dating from the early 1980s.</p> 200 201 <p>Two new functions address this problem: by providing a 202 function which allows the calling application to tell ncurses 203 how many string-parameters to expect:</p> 204 205 <ul> 206 <li><code>tiscan_s</code> helps applications check 207 formatting capabilities that would be passed to 208 <code>tiparm_s</code>.</li> 209 210 <li><code>tiparm_s</code> provides applications a way to 211 tell ncurses what the expected parameters are for a 212 capability.</li> 213 </ul> 214 </li> 215 216 <li> 217 <p>The ncurses library supports a compile-time feature 218 (enabled with the configure <code>--enable-check-size</code> 219 option) which simplifies initialization with terminals which 220 do not negotiate window (screen) size. This is done in 221 <code>setupterm</code>, by providing for using ANSI 222 cursor-position report (in user6/user7 terminfo capabilities) 223 to obtain the screen size if neither environment variables or 224 ioctl is used.</p> 225 226 <p>The ncurses test-program with options 227 “<code>-E -T</code>” demonstrates this 228 feature.</p> 229 </li> 230 231 <li>add functions to query tty-flags in 232 <code>SCREEN</code></li> 233 </ul> 234 235 <p>This release drops compatibility with obsolete versions of 236 <a href="@HOMEPAGE@/tack/">tack</a>, e.g., pre-1.08</p> 237 238 <h4><a name="h4-fixes-library" id="h4-fixes-library">Other 239 improvements</a></h4> 240 241 <p>These are improvements to existing features:</p> 242 243 <ul> 244 <li> 245 <p>In addition to the new, safer function 246 <code>tiparm_s</code>, ncurses adds checks to make the older 247 <code>tiparm</code>, <code>tparm</code> and 248 <code>tgoto</code> functions safer:</p> 249 250 <ul> 251 <li> 252 <p>the terminfo functions <code>tiparm</code> and 253 <code>tparm</code> ensure that the capability string 254 comes from the terminal description which ncurses loads, 255 rather than from random data which the application 256 happens to have.</p> 257 </li> 258 259 <li> 260 <p>the <code>tgoto</code> function disallows capabilities 261 which its analysis shows will attempt to use string 262 parameters.</p> 263 </li> 264 265 <li> 266 <p>ncurses uses internal functions which correspond to 267 <code>tiparm</code>, and <code>tgoto</code> which ensure 268 that the capability strings which are passed to these 269 functions come from the loaded terminal description.</p> 270 </li> 271 </ul> 272 </li> 273 274 <li> 275 <p>improve check in <code>lib_tparm.c</code>, ensuring that a 276 char* fits into a <code>TPARM_ARG</code></p> 277 </li> 278 279 <li> 280 <p>modify <code>_nc_syserr_abort</code> to use 281 <code>_nc_env_access</code>, rather than only checking root 282 uid</p> 283 </li> 284 285 <li> 286 <p>improve thread lock in <code>lib_trace.c</code></p> 287 </li> 288 289 <li> 290 <p>modify <code>flushinp</code> to use file descriptors in 291 <code>SCREEN</code>, rather than from <code>TERMINAL</code>, 292 and check if they are for a terminal, like SVr4</p> 293 </li> 294 295 <li> 296 <p>modify <code>mcprint</code> to use file descriptor in 297 <code>SCREEN</code>, for consistency</p> 298 </li> 299 300 <li> 301 <p>modify internal function <code>_nc_read_file_entry</code> 302 to show relevant filename in warnings</p> 303 </li> 304 305 <li> 306 <p>improve checks in internal function 307 <code>convert_string</code> for corrupt terminfo entry</p> 308 </li> 309 310 <li> 311 <p>review/improve handling of out-of-memory conditions</p> 312 </li> 313 314 <li> 315 <p>limit delays to 30 seconds, i.e., padding delays in 316 terminfo, as well as <code>napms</code> and 317 <code>delay_output</code> functions</p> 318 </li> 319 320 <li> 321 <p>fix reallocation loop for <code>vsnprintf</code> in 322 <code>_nc_sprintf_string</code> by copying the va_list 323 variable</p> 324 </li> 325 326 <li> 327 <p>modify <code>delscreen</code> to limit the windows which 328 it creates to just those associated with the screen</p> 329 </li> 330 331 <li> 332 <p>modify <code>endwin</code> to return an error if it is 333 called again without an intervening screen update</p> 334 </li> 335 336 <li> 337 <p>modify <code>wenclose</code> to handle pads</p> 338 </li> 339 340 <li> 341 <p>eliminate use of <code>PATH_MAX</code> in 342 <code>lib_trace.c</code></p> 343 </li> 344 345 <li> 346 <p>provide for any <code>CCHARW_MAX</code> greater than 1</p> 347 </li> 348 </ul> 349 350 <p>These are corrections to existing features:</p> 351 352 <ul> 353 <li> 354 <p>correct loop termination condition in 355 <code>waddnstr</code> and <code>waddnwstr</code></p> 356 </li> 357 358 <li> 359 <p>improve parsing in internal function 360 <code>_nc_msec_cost</code>, allowing a single decimal 361 point</p> 362 </li> 363 364 <li> 365 <p>amend parameter check for entire string versus specific 366 length in <code>winsnstr</code> and <code>wins_nwstr</code> 367 to match Solaris; make similar correction to 368 <code>wins_nwstr</code></p> 369 </li> 370 371 <li> 372 <p>correct internal function <code>wadd_wch_literal</code> 373 when adding a non-spacing character to a double-width 374 character</p> 375 </li> 376 377 <li> 378 <p>correct definition of <code>Charable</code> macro for 379 non-wide ncurses library .</p> 380 </li> 381 </ul> 382 383 <h3><a name="h3-programs" id="h3-programs">Program 384 improvements</a></h3> 385 386 <p id="h4-utilities">Several improvements were made to the 387 utility programs. Some were done to make the <code>infocmp</code> 388 option “<tt>-u</tt>” option help refactor the 389 terminal database.</p> 390 391 <dl> 392 <dt><span class="part-name"><a href= 393 "@HOMEPAGE@/man/infocmp.1m.html">infocmp</a></span> 394 </dt> 395 396 <dd> 397 <ul> 398 <li> 399 <p>add limit checks for processing extended capabilities 400 with the “<code>-u</code>” option</p> 401 </li> 402 403 <li> 404 <p>correct initial alignment of extended capabilities, so 405 that the “<code>-u</code>” option can be used 406 for more than two terminal types</p> 407 </li> 408 409 <li> 410 <p>modify “<code>-u</code>” option to not 411 report cancels for strings which were already cancelled 412 in a use'd chunk.</p> 413 </li> 414 415 <li> 416 <p>correct an assignment “<code>-u</code>” 417 for detecting if a boolean is unset in a base entry and 418 set in a use'd chunk, i.e., if it was cancelled.</p> 419 </li> 420 </ul> 421 </dd> 422 423 <dt><span class="part-name"><a href= 424 "@HOMEPAGE@/man/tic.1m.html">tic</a></span> 425 </dt> 426 427 <dd> 428 <ul> 429 <li> 430 <p>correct limit-check when dumping tc/use clause via 431 “<code>-I</code>”</p> 432 </li> 433 434 <li> 435 <p>check return value of <code>_nc_save_str</code>, in 436 special case where extended capabilities are processed 437 but the terminal description was not initialized</p> 438 </li> 439 440 <li> 441 <p>modify check for multiply defined aliases to report 442 problems within the current runtime rather than for 443 conflicts with pre-existing terminal descriptions.</p> 444 </li> 445 446 <li> 447 <p>disallow using <code>$TERMINFO</code> or 448 <code>$HOME/.terminfo</code> when 449 “<code>-o</code>” option is used</p> 450 </li> 451 </ul> 452 </dd> 453 454 <dt><span class="part-name"><a href= 455 "@HOMEPAGE@/man/tput.1.html">tput</a></span> and <span class= 456 "part-name"><a href= 457 "@HOMEPAGE@/man/tset.1.html">tset</a></span></dt> 458 459 <dd> 460 <ul> 461 <li> 462 <p>add “<code>-v</code>” option to tput, to 463 show warnings</p> 464 </li> 465 466 <li> 467 <p>modify <em>reset</em> command to avoid altering clocal 468 if the terminal uses a modem</p> 469 </li> 470 471 <li> 472 <p>modify <em>reset</em> feature to avoid 1-second sleep 473 if running in a pseudo-terminal</p> 474 </li> 475 </ul> 476 </dd> 477 </dl> 478 479 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> 480 481 <p>Along with the library and utilities, improvements were made 482 to the <a href= 483 "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>:</p> 484 485 <ul> 486 <li> 487 <p>modify <code>test_tparm</code> to account for extended 488 capabilities</p> 489 </li> 490 491 <li> 492 <p>corrected mouse mask in <code>test/testcurs.c</code></p> 493 </li> 494 495 <li> 496 <p>modify <code>test/clip_printw.c</code> to optionally test 497 non-wrapped updates</p> 498 </li> 499 500 <li> 501 <p>modify <code>test/test_mouse.c</code> to use curses api 502 for raw/noraw</p> 503 </li> 504 505 <li> 506 <p>modify <code>test/clip_printw.c</code> to optionally test 507 non-wrapped updates</p> 508 </li> 509 </ul> 510 511 <p>There is one new demo/test programs:</p> 512 513 <dl> 514 <dt><span class="part-name"><em>test/test_endwin.c</em></span> 515 </dt> 516 517 <dd> 518 <p>This program shows the return-status from 519 <code>endwin</code> with different combinations of 520 <code>endwin</code> (repeated), <code>initscr</code>, 521 <code>newterm</code>.</p> 522 </dd> 523 </dl> 524 525 <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> 526 527 <p>There are several new terminal descriptions:</p> 528 529 <ul> 530 <li> 531 <p><a href= 532 "@HOMEPAGE@/terminfo.src.html#tic-ansi_apparrows"><tt>ansi+apparrows</tt></a></p> 533 </li> 534 535 <li> 536 <p><a href= 537 "@HOMEPAGE@/terminfo.src.html#tic-contour"><tt>contour</tt></a></p> 538 </li> 539 540 <li> 541 <p><a href= 542 "@HOMEPAGE@/terminfo.src.html#tic-linux_kbs"><tt>linux+kbs</tt></a> 543 for terminals which imitate xterm's behavior with Linux</p> 544 </li> 545 546 <li> 547 <p><a href= 548 "@HOMEPAGE@/terminfo.src.html#tic-rio"><tt>rio</tt></a>, 549 <a href= 550 "@HOMEPAGE@/terminfo.src.html#tic-rio-direct"><tt>rio-direct</tt></a></p> 551 </li> 552 553 <li> 554 <p><a href= 555 "@HOMEPAGE@/terminfo.src.html#tic-mostlike"><tt>mostlike</tt></a></p> 556 </li> 557 558 <li> 559 <p><a href= 560 "@HOMEPAGE@/terminfo.src.html#tic-ms-vt100-16color"><tt>ms-vt100-16color</tt></a>, 561 <a href= 562 "@HOMEPAGE@/terminfo.src.html#tic-winconsole"><tt>winconsole</tt></a></p> 563 </li> 564 565 <li> 566 <p><a href= 567 "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp"><tt>vt100+noapp</tt></a>, 568 <a href= 569 "@HOMEPAGE@/terminfo.src.html#tic-vt100_noapp_pc"><tt>vt100+noapp+pc</tt></a>, 570 <a href= 571 "@HOMEPAGE@/terminfo.src.html#tic-xterm_app_pc"><tt>xterm+app+pc</tt></a>, 572 <a href= 573 "@HOMEPAGE@/terminfo.src.html#tic-xterm_decedit"><tt>xterm+decedit</tt></a> 574 from <a href="@WEBSITE@/xterm/xterm.log.html#xterm_389">xterm 575 #389</a></p> 576 </li> 577 578 <li> 579 <p><a href= 580 "@HOMEPAGE@/terminfo.src.html#tic-putty_cursor"><tt>putty+cursor</tt></a> 581 to reflect amending of modified cursor-keys in 2021</p> 582 </li> 583 584 <li> 585 <p><a href= 586 "@HOMEPAGE@/terminfo.src.html#tic-wezterm"><tt>wezterm</tt></a></p> 587 </li> 588 </ul> 589 590 <p>There are many changes to existing terminal descriptions. Some 591 were updates to several descriptions, using the 592 <code>infocmp</code> “<code>-u</code>” option in a 593 script to determine which <em>building-block</em> entries could 594 be used to replace multiple capability settings (and trim 595 redundant information).</p> 596 597 <p>Other changes include:</p> 598 599 <ul> 600 <li> 601 <p><a href= 602 "@HOMEPAGE@/terminfo.src.html#toc-_X_T_E_R_M__Extensions_">document</a> 603 XF, kxIN and kxOUT</p> 604 </li> 605 606 <li> 607 <p>add note on <a href= 608 "@HOMEPAGE@/terminfo.src.html#tic-sun"><tt>sun</tt></a> 609 regarding wscons/cmdtool/shelltool</p> 610 </li> 611 612 <li> 613 <p>remove DECCOLM+DECSCLM from <a href= 614 "@HOMEPAGE@/terminfo.src.html#tic-foot"><tt>foot</tt></a></p> 615 </li> 616 617 <li> 618 <p>add xterm+focus to <a href= 619 "@HOMEPAGE@/terminfo.src.html#tic-foot_base"><tt>foot+base</tt></a></p> 620 </li> 621 622 <li> 623 <p>add ecma+strikeout to <a href= 624 "@HOMEPAGE@/terminfo.src.html#tic-putty"><tt>putty</tt></a></p> 625 </li> 626 627 <li> 628 <p>use CSI 3J in <a href= 629 "@HOMEPAGE@/terminfo.src.html#tic-vte-2017"><tt>vte-2017</tt></a></p> 630 </li> 631 632 <li> 633 <p>use oldxterm+sm+1006 in <a href= 634 "@HOMEPAGE@/terminfo.src.html#tic-vte-2014"><tt>vte-2014</tt></a></p> 635 </li> 636 637 <li> 638 <p>modify <a href= 639 "@HOMEPAGE@/terminfo.src.html#tic-xgterm"><tt>xgterm</tt></a> 640 to work around line-drawing bug</p> 641 </li> 642 643 <li> 644 <p>add xterm focus mode 1004 to <a href= 645 "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> 646 as fe/fd capabilities, like vim.</p> 647 </li> 648 649 <li> 650 <p>add xterm+focus to <a href= 651 "@HOMEPAGE@/terminfo.src.html#tic-alacritty_common"><tt>alacritty+common</tt></a></p> 652 </li> 653 654 <li> 655 <p>add XR/xr, to work with vim, and use RV/rv to denote DA2 656 and its response</p> 657 </li> 658 659 <li> 660 <p>add XF flag to <a href= 661 "@HOMEPAGE@/terminfo.src.html#tic-xterm_focus"><tt>xterm+focus</tt></a> 662 so that termcap applications can be aware of terminals which 663 may support focus in/out</p> 664 </li> 665 666 <li> 667 <p>use xterm+focus in <a href= 668 "@HOMEPAGE@/terminfo.src.html#tic-xterm-p370"><tt>xterm-p370</tt></a> 669 and <a href= 670 "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> 671 </li> 672 673 <li> 674 <p>remove xterm+sm+1006 from <a href= 675 "@HOMEPAGE@/terminfo.src.html#tic-tmux"><tt>tmux</tt></a></p> 676 </li> 677 678 <li> 679 <p>NetBSD-related fixes for <a href= 680 "@HOMEPAGE@/terminfo.src.html#tic-x68k"><tt>x68k</tt></a> and 681 <a href= 682 "@HOMEPAGE@/terminfo.src.html#tic-wsvt25"><tt>wsvt25</tt></a></p> 683 </li> 684 </ul> 685 686 <h3><a name="h3-documentation" id= 687 "h3-documentation">Documentation</a></h3> 688 689 <p>As usual, this release</p> 690 691 <ul> 692 <li> 693 <p>improves documentation by describing new features,</p> 694 </li> 695 696 <li> 697 <p>attempts to improve the description of features which 698 users have found confusing</p> 699 </li> 700 701 <li> 702 <p>fills in overlooked descriptions of features which were 703 described in the <a href="@HOMEPAGE@/NEWS.html">NEWS</a> file 704 but treated sketchily in manual pages.</p> 705 </li> 706 </ul> 707 708 <p>In addition to providing background information to explain 709 these features and show how they evolved, there are corrections, 710 clarifications, etc.:</p> 711 712 <ul> 713 <li> 714 <p>Corrections:</p> 715 716 <ul> 717 <li> 718 <p>add assignment in <code>CF_MAN_PAGES</code> to fill in 719 value for <code>TERMINFO_DIRS</code> in ncurses, terminfo 720 and tic manpages.</p> 721 </li> 722 723 <li> 724 <p>clarify interaction of <code>-R</code> option versus 725 <code>-C</code>, <code>-I</code> and <code>-r</code> in 726 <code>infocmp</code> manpage.</p> 727 </li> 728 729 <li> 730 <p>correct manpage description of panel_hidden.</p> 731 </li> 732 733 <li> 734 <p>improve manpage description for addch versus unctrl 735 format used for non-printable characters.</p> 736 </li> 737 738 <li> 739 <p>improve manpages discussing file descriptors in 740 low-level functions.</p> 741 </li> 742 743 <li> 744 <p>improve description of search rules for terminal 745 descriptions in terminfo manpage.</p> 746 </li> 747 748 <li> 749 <p>modify dist.mk to avoid passing developer's comments 750 in manpages into the generated html documentation.</p> 751 </li> 752 753 <li> 754 <p>modify test-package "ncurses6-doc" to use 755 manpage-aliases, which in turn required a change to the 756 configure script to factor in the extra-suffix option 757 when deriving alias names.</p> 758 </li> 759 </ul> 760 </li> 761 762 <li> 763 <p>New/improved history and portability sections:</p> 764 765 <ul> 766 <li> 767 <p>add information about "ttycap", termcap's forerunner, 768 to tset.1</p> 769 </li> 770 771 <li> 772 <p>document limitations of tparm, and error-returns in 773 curs_terminfo.3x</p> 774 </li> 775 776 <li> 777 <p>document limitations of tgoto, and error-returns in 778 curs_termcap.3x</p> 779 </li> 780 </ul> 781 </li> 782 783 <li> 784 <p>Other improvements:</p> 785 786 <ul> 787 <li> 788 <p>This release has many changes to improve the 789 formatting and style of the manpages.</p> 790 </li> 791 792 <li> 793 <p>Manpages now use consistent section-naming, page 794 headers and footers (including the modification date for 795 each page).</p> 796 </li> 797 798 <li> 799 <p>Table layout has been revised.</p> 800 </li> 801 </ul> 802 </li> 803 </ul> 804 805 <p>There are no new manual pages (all of the manual page updates 806 are to existing pages).</p> 807 808 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting 809 bug-fixes</a></h3> 810 811 <p>The changes to <tt>tparm</tt>, <tt>tgoto</tt> which improve 812 the design of the low-level interfaces are <em>interesting</em>, 813 but are not bug-fixes <em>per se</em>.</p> 814 815 <h3><a name="h3-config-config" id= 816 "h3-config-config">Configuration changes</a></h3> 817 818 <h4><a name="h4-config-major" id="h4-config-major">Major 819 changes</a></h4> 820 821 <p>These are the major changes (aside from introducing <a href= 822 "#h4-new-library"><tt>tiparm_s</tt></a>):</p> 823 824 <ul> 825 <li> 826 <p>use wide-character (ncursesw) by default</p> 827 </li> 828 829 <li> 830 <p>use opaque typedefs by default</p> 831 </li> 832 </ul> 833 834 <p>However, most of the work on configure scripts was done to 835 reduce warnings within the configure script:</p> 836 837 <ul> 838 <li> 839 <p>intrusive warnings from GNU grep regarding fgrep and 840 egrep</p> 841 </li> 842 843 <li> 844 <p>fatal errors in compile-checks, arising from recent 845 “Modern C” efforts by some developers which 846 caused longstanding configure checks to fail.</p> 847 848 <p>After repairing the configure script, none of that 849 activity affected ncurses because stricter warnings are used 850 routinely in development.</p> 851 </li> 852 </ul> 853 854 <p>Other improvements made to configure checks include</p> 855 856 <ul> 857 <li> 858 <p>use <a href= 859 "@HOMEPAGE@/INSTALL.html#option:enable-string-hacks">string-hacks</a> 860 in alloc_entry.c, alloc_type.c and hardscroll.c, overlooked 861 due to compiler changes in recent OpenBSD releases</p> 862 </li> 863 864 <li> 865 <p>revise progs.priv.h to provide for NC_ISATTY reuse</p> 866 </li> 867 868 <li> 869 <p>configure check for MB_LEN_MAX provides warning as 870 needed</p> 871 </li> 872 873 <li> 874 <p>trim a space after some "-R" options, fixing builds for 875 applications built using clang and ncurses on Solaris</p> 876 </li> 877 878 <li> 879 <p>work around misconfiguration of MacPorts gcc13, which 880 exposes invalid definition of <tt>MB_LEN_MAX</tt> in gcc's 881 fallback copy of <tt>limits.h</tt></p> 882 </li> 883 884 <li> 885 <p>modified experimental Windows driver works with xterm 886 mouse protocol</p> 887 </li> 888 </ul> 889 890 <h4><a name="h4-config-options" id= 891 "h4-config-options">Configuration options</a></h4> 892 893 <p>There are a few new configure options:</p> 894 895 <dl> 896 <dt><a href= 897 "@HOMEPAGE@/INSTALL.html#option:disable-setuid-environ"><tt>--disable-setuid-environ</tt></a> 898 </dt> 899 900 <dd> 901 <p>Compile with environment restriction, so certain 902 environment variables are not available when running via a 903 setuid/setgid application. These are (for example 904 <tt>$TERMINFO</tt>) those that allow the search path for the 905 terminfo or termcap entry to be customized.</p> 906 907 <p>A setuid/setgid application inherits its environment 908 variables from the current user, in contrast to sudo which 909 may limit the environment variables that ncurses uses.</p> 910 </dd> 911 912 <dt><a href= 913 "@HOMEPAGE@/INSTALL.html#option:enable-check-size"><tt>--enable-check-size</tt></a> 914 </dt> 915 916 <dd> 917 <p>Compile-in feature to detect screensize for terminals 918 which do not advertise their screensize, e.g., serial 919 terminals.</p> 920 </dd> 921 922 <dt><a href= 923 "@HOMEPAGE@/INSTALL.html#option:with-abi-altered"><tt>--with-abi-altered=<em>NUM</em></tt></a> 924 </dt> 925 926 <dd> 927 <p>Override the displayed (rather than compiled-in) ABI. Only 928 packagers who have created configurations where the ABI 929 differs from ncurses should be interested in this option.</p> 930 </dd> 931 932 <dt><a href= 933 "@HOMEPAGE@/INSTALL.html#option:with-strip-program"><tt>--with-strip-program=<em>XXX</em></tt></a> 934 </dt> 935 936 <dd> 937 <p>When stripping executables during install, use the 938 specified program rather than “strip” overriding 939 program chosen by the install program for stripping 940 executables.</p> 941 </dd> 942 </dl> 943 944 <p>These configure options are modified:</p> 945 946 <dl> 947 <dt><a href= 948 "@HOMEPAGE@/INSTALL.html#option:with-pkg-config-libdir"><tt>--with-pkg-config-libdir[=<em>DIR</em>]</tt></a> 949 </dt> 950 951 <dd> 952 <p>The optional <em>DIR</em> parameter can now be 953 “auto” to automatically use pkg-config's library 954 directory.</p> 955 956 <p>The default is <tt>$(libdir)</tt>.</p> 957 </dd> 958 959 <dt><a href= 960 "@HOMEPAGE@/INSTALL.html#option:with-xterm-kbs"><tt>--with-xterm-kbs[=<em>XXX</em>]</tt></a> 961 </dt> 962 963 <dd> 964 <p>The default is “auto” which tells the 965 configure script to choose BS or DEL according to platform 966 defaults.</p> 967 </dd> 968 </dl> 969 970 <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> 971 972 <p>Many of the portability changes are implemented via the 973 configure script:</p> 974 975 <ul> 976 <li> 977 <p>add/use configure check for <code>clock_gettime</code>, to 978 supersede <code>gettimeofday</code>.</p> 979 </li> 980 981 <li> 982 <p>modify configure script check for pkg-config library 983 directory to take into account an older version 0.15.0 which 984 used PKG_CONFIG_PATH but not PKG_CONFIG_LIBDIR</p> 985 </li> 986 987 <li> 988 <p>allow for MinGW32-/64-bit configurations to use 989 _DEFAULT_SOURCE</p> 990 </li> 991 992 <li> 993 <p>modify CF_XOPEN_SOURCE macro's amend default case to avoid 994 undefining _XOPEN_SOURCE if _POSIX_C_SOURCE is defined</p> 995 </li> 996 997 <li> 998 <p>updated configure script macro CF_XOPEN_SOURCE, for 999 uClibc-ng</p> 1000 </li> 1001 1002 <li> 1003 <p>modify version-check for gcc/g++, now works for msys2</p> 1004 </li> 1005 1006 <li> 1007 <p>build-fixes related to configure-options and/or 1008 platform:</p> 1009 1010 <ul> 1011 <li>fix for <tt>--enable-fvisibility</tt></li> 1012 1013 <li>fix for unusual values of 1014 <tt>--with-rel-version</tt></li> 1015 1016 <li>fix for unusual values of 1017 <tt>--with-abi-version</tt></li> 1018 1019 <li>fix for <tt>--disable-tcap-names</tt></li> 1020 1021 <li>fix for termcap in <tt>nc_access.h</tt></li> 1022 </ul> 1023 </li> 1024 1025 <li> 1026 <p>other configure-script improvements:</p> 1027 1028 <ul> 1029 <li>recent msys2 headers work with 1030 <tt>_DEFAULT_SOURCE</tt>; amend check</li> 1031 1032 <li>use <tt>$ac_includes_default</tt> in most cases where 1033 stdlib.h should work</li> 1034 1035 <li>use <tt>#error</tt> consistently vs "make an 1036 error"</li> 1037 1038 <li>add configure macro for <tt>gettimeofday</tt> vs inline 1039 check</li> 1040 </ul> 1041 </li> 1042 </ul> 1043 1044 <p>Here are some of the other portability fixes:</p> 1045 1046 <ul> 1047 <li> 1048 <p>modify configure scripts/makefiles to omit 1049 <tt>KEY_RESIZE</tt> if the corresponding <tt>SIGWINCH</tt> 1050 feature is disabled</p> 1051 </li> 1052 1053 <li> 1054 <p>increase <tt>MB_CUR_MAX</tt> to 16, matching glibc's 1055 <tt>MB_LEN_MAX</tt></p> 1056 </li> 1057 1058 <li> 1059 <p>add BSD <tt>erase2</tt> to characters handled by 1060 tset/reset</p> 1061 </li> 1062 1063 <li> 1064 <p>use <tt>getauxval</tt> when available, to improve 1065 <tt>setuid</tt>/<tt>setgid</tt> checks</p> 1066 </li> 1067 1068 <li> 1069 <p>set <tt>dwShareMode</tt> in calls to 1070 <tt>CreateConsoleScreenBuffer</tt></p> 1071 </li> 1072 1073 <li> 1074 <p>use <tt>CreateFile</tt> with "<tt>CONIN$</tt>", 1075 "<tt>CONOUT$</tt>" rather than <tt>GetStdHandle</tt> to 1076 obtain a handle on the actual console, avoiding redirection 1077 in the MinGW/Win32 configurations</p> 1078 </li> 1079 1080 <li> 1081 <p>modify MinGW driver to return <tt>KEY_BACKSPACE</tt> when 1082 an unmodified <tt>VK_BACK</tt> virtual key is entered</p> 1083 </li> 1084 1085 <li> 1086 <p>modify MinGW configuration to provide for running in 1087 MSYS/MSYS2 shells, assuming ConPTY support</p> 1088 </li> 1089 </ul> 1090 1091 <hr> 1092 1093 <h2><a name="h2-features" id="h2-features">Features of 1094 <span class="main-name">ncurses</span></a></h2> 1095 1096 <p>The <span class="main-name">ncurses</span> package is fully 1097 upward-compatible with SVr4 (System V Release 4) curses:</p> 1098 1099 <ul> 1100 <li> 1101 <p>All of the SVr4 calls have been implemented (and are 1102 documented).</p> 1103 </li> 1104 1105 <li> 1106 <p><span class="main-name">ncurses</span> supports the 1107 features of SVr4 curses including keyboard mapping, color, 1108 form drawing with ACS characters, and automatic recognition 1109 of keypad and function keys.</p> 1110 </li> 1111 1112 <li> 1113 <p><span class="main-name">ncurses</span> provides work-alike 1114 replacements of SVr4 supplemental libraries based on curses, 1115 but which were not specified by X/Open Curses:</p> 1116 1117 <ul> 1118 <li> 1119 <p>the panel library, supporting a stack of windows with 1120 backing store</p> 1121 </li> 1122 1123 <li> 1124 <p>the menu library, supporting a uniform but flexible 1125 interface for menu programming</p> 1126 </li> 1127 1128 <li> 1129 <p>the form library, supporting data collection through 1130 on-screen forms</p> 1131 </li> 1132 </ul> 1133 </li> 1134 1135 <li> 1136 <p><span class="main-name">ncurses</span>'s terminal database 1137 is fully compatible with that used by SVr4 curses.</p> 1138 1139 <ul> 1140 <li> 1141 <p><span class="main-name">ncurses</span> supports 1142 user-defined capabilities that it can see, but which are 1143 hidden from SVr4 curses applications using the 1144 <em>same</em> terminal database.</p> 1145 </li> 1146 1147 <li> 1148 <p>It can be optionally configured to match the format 1149 used in related systems such as AIX and Tru64.</p> 1150 </li> 1151 1152 <li> 1153 <p>Alternatively, <span class="main-name">ncurses</span> 1154 can be configured to use hashed databases rather than the 1155 directory of files used by SVr4 curses.</p> 1156 </li> 1157 </ul> 1158 </li> 1159 1160 <li> 1161 <p>The <span class="main-name">ncurses</span> utilities have 1162 options to allow you to filter terminfo entries for use with 1163 less capable <em>curses</em>/<em>terminfo</em> versions such 1164 as the HP-UX and AIX ports.</p> 1165 </li> 1166 </ul> 1167 1168 <p>The <span class="main-name">ncurses</span> package also has 1169 many useful extensions over SVr4:</p> 1170 1171 <ul> 1172 <li> 1173 <p>The API is 8-bit clean and base-level conformant with the 1174 X/Open Curses specification, XSI curses (that is, it 1175 implements all <em>BASE</em> level features, and almost all 1176 <em>EXTENDED</em> features). It includes many function calls 1177 not supported under SVr4 curses (but portability of all calls 1178 is documented so you can use the SVr4 subset only).</p> 1179 </li> 1180 1181 <li> 1182 <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> 1183 can write to the rightmost-bottommost corner of the screen if 1184 your terminal has an insert-character capability.</p> 1185 </li> 1186 1187 <li> 1188 <p>Ada95 and C++ bindings.</p> 1189 </li> 1190 1191 <li> 1192 <p>Support for mouse event reporting with X Window xterm and 1193 FreeBSD and OS/2 console windows.</p> 1194 </li> 1195 1196 <li> 1197 <p>Extended mouse support via Alessandro Rubini's gpm 1198 package.</p> 1199 </li> 1200 1201 <li> 1202 <p>The function <code>wresize</code> allows you to resize 1203 windows, preserving their data.</p> 1204 </li> 1205 1206 <li> 1207 <p>The function <code>use_default_colors</code> allows you to 1208 use the terminal's default colors for the default color pair, 1209 achieving the effect of transparent colors.</p> 1210 </li> 1211 1212 <li> 1213 <p>The functions <code>keyok</code> and 1214 <code>define_key</code> allow you to better control the use 1215 of function keys, e.g., disabling the <span class= 1216 "main-name">ncurses</span> KEY_MOUSE, or by defining more 1217 than one control sequence to map to a given key code.</p> 1218 </li> 1219 1220 <li> 1221 <p>Support for direct-color terminals, such as modern 1222 xterm.</p> 1223 </li> 1224 1225 <li> 1226 <p>Support for 256-color terminals, such as modern xterm.</p> 1227 </li> 1228 1229 <li> 1230 <p>Support for 16-color terminals, such as <em>aixterm</em> 1231 and <em>modern xterm</em>.</p> 1232 </li> 1233 1234 <li> 1235 <p>Better cursor-movement optimization. The package now 1236 features a cursor-local-movement computation more efficient 1237 than either BSD's or System V's.</p> 1238 </li> 1239 1240 <li> 1241 <p>Super hardware scrolling support. The screen-update code 1242 incorporates a novel, simple, and cheap algorithm that 1243 enables it to make optimal use of hardware scrolling, 1244 line-insertion, and line-deletion for screen-line movements. 1245 This algorithm is more powerful than the 4.4BSD curses 1246 <code>quickch</code> routine.</p> 1247 </li> 1248 1249 <li> 1250 <p>Real support for terminals with the magic-cookie glitch. 1251 The screen-update code will refrain from drawing a highlight 1252 if the magic- cookie unattributed spaces required just before 1253 the beginning and after the end would step on a non-space 1254 character. It will automatically shift highlight boundaries 1255 when doing so would make it possible to draw the highlight 1256 without changing the visual appearance of the screen.</p> 1257 </li> 1258 1259 <li> 1260 <p>It is possible to generate the library with a list of 1261 pre-loaded fallback entries linked to it so that it can serve 1262 those terminal types even when no terminfo tree or termcap 1263 file is accessible (this may be useful for support of 1264 screen-oriented programs that must run in single-user 1265 mode).</p> 1266 </li> 1267 1268 <li> 1269 <p>The <a href="@HOMEPAGE@/man/tic.1m.html"><span class= 1270 "part-name">tic</span></a>/<a href= 1271 "@HOMEPAGE@/man/captoinfo.1m.html">captoinfo</a> utility 1272 provided with <span class="main-name">ncurses</span> has the 1273 ability to translate many termcaps from the XENIX, IBM and 1274 AT&T extension sets.</p> 1275 </li> 1276 1277 <li> 1278 <p>A BSD-like <a href= 1279 "@HOMEPAGE@/man/tset.1.html"><span class= 1280 "part-name">tset</span></a> utility is provided.</p> 1281 </li> 1282 1283 <li> 1284 <p>The <span class="main-name">ncurses</span> library and 1285 utilities will automatically read terminfo entries from 1286 $HOME/.terminfo if it exists, and compile to that directory 1287 if it exists and the user has no write access to the system 1288 directory. This feature makes it easier for users to have 1289 personal terminfo entries without giving up access to the 1290 system terminfo directory.</p> 1291 </li> 1292 1293 <li> 1294 <p>You may specify a path of directories to search for 1295 compiled descriptions with the environment variable 1296 TERMINFO_DIRS (this generalizes the feature provided by 1297 TERMINFO under stock System V.)</p> 1298 </li> 1299 1300 <li> 1301 <p>In terminfo source files, use capabilities may refer not 1302 just to other entries in the same source file (as in System 1303 V) but also to compiled entries in either the system terminfo 1304 directory or the user's $HOME/.terminfo directory.</p> 1305 </li> 1306 1307 <li> 1308 <p>The table-of-entries utility <a href= 1309 "@HOMEPAGE@/man/toe.1m.html"><span class= 1310 "part-name">toe</span></a> makes it easy for users to see 1311 exactly what terminal types are available on the system.</p> 1312 </li> 1313 1314 <li> 1315 <p>X/Open Curses permits most functions it specifies to be 1316 made available as macros as well. ncurses does this</p> 1317 1318 <ul> 1319 <li>to improve performance, e.g., for operations composed 1320 of simpler functions such as cursor movement following by 1321 adding text to the screen,</li> 1322 1323 <li>to simplify the implementation by reusing functions 1324 which use common parameters, e.g., the standard screen 1325 <code>stdscr</code>, and</li> 1326 1327 <li>to provide functions that return values via their 1328 parameters</li> 1329 </ul> 1330 1331 <p>Except for the last case, ncurses provides a non-macro 1332 implementation of the function. If the macro definition is 1333 disabled with <code>#undef</code>, or by defining 1334 <code>NCURSES_NOMACROS</code> the function may be linked (and 1335 its calls will be checked against the prototype).</p> 1336 </li> 1337 1338 <li> 1339 <p>Extensive documentation is provided (see the <em><a href= 1340 "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional 1341 Reading</a></em> section of the <em><a href= 1342 "@HOMEPAGE@/ncurses.faq.html"><span class= 1343 "main-name">ncurses</span> FAQ</a></em> for online 1344 documentation).</p> 1345 </li> 1346 </ul> 1347 1348 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using 1349 <span class="main-name">ncurses</span></a></h2> 1350 1351 <p>The <span class="main-name">ncurses</span> distribution 1352 includes a selection of test programs (including a few games). 1353 These are available separately as <a href= 1354 "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a></p> 1355 1356 <p>The ncurses library has been tested with a wide variety of 1357 applications including:</p> 1358 1359 <blockquote> 1360 <dl> 1361 <dt><span class="part-name">aptitude</span> 1362 </dt> 1363 1364 <dd> 1365 <p>FrontEnd to Apt, the debian package manager</p> 1366 1367 <p><a href= 1368 "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> 1369 </dd> 1370 1371 <dt><span class="part-name">cdk</span> 1372 </dt> 1373 1374 <dd> 1375 <p>Curses Development Kit</p> 1376 1377 <p><a href="@WEBSITE@/cdk/">@WEBSITE@/cdk/</a><br> 1378 </p> 1379 </dd> 1380 1381 <dt><span class="part-name">ded</span> 1382 </dt> 1383 1384 <dd> 1385 <p>directory-editor</p> 1386 1387 <p><a href="@WEBSITE@/ded/">@WEBSITE@/ded/</a></p> 1388 </dd> 1389 1390 <dt><span class="part-name">dialog</span> 1391 </dt> 1392 1393 <dd> 1394 <p>the underlying application used in Slackware's setup, 1395 and the basis for similar install/configure applications on 1396 many systems.</p> 1397 1398 <p><a href="@WEBSITE@/dialog/">@WEBSITE@/dialog/</a></p> 1399 </dd> 1400 1401 <dt><span class="part-name">lynx</span> 1402 </dt> 1403 1404 <dd> 1405 <p>the text WWW browser</p> 1406 1407 <p><a href= 1408 "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> 1409 </dd> 1410 1411 <dt><span class="part-name">mutt</span> 1412 </dt> 1413 1414 <dd> 1415 <p>mail utility</p> 1416 1417 <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> 1418 </dd> 1419 1420 <dt><span class="part-name">ncftp</span> 1421 </dt> 1422 1423 <dd> 1424 <p>file-transfer utility</p> 1425 1426 <p><a href= 1427 "https://www.ncftp.com/">https://www.ncftp.com/</a></p> 1428 </dd> 1429 1430 <dt><span class="part-name">nvi</span> 1431 </dt> 1432 1433 <dd> 1434 <p>New vi uses ncurses.</p> 1435 1436 <p><a href= 1437 "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page"> 1438 https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br> 1439 1440 </p> 1441 </dd> 1442 1443 <dt><span class="part-name">ranger</span> 1444 </dt> 1445 1446 <dd> 1447 <p>A console file manager with VI key bindings in 1448 <em>Python</em>.</p> 1449 1450 <p><a href= 1451 "https://ranger.github.io/">https://ranger.github.io/</a></p> 1452 </dd> 1453 1454 <dt><span class="part-name">tin</span> 1455 </dt> 1456 1457 <dd> 1458 <p>newsreader, supporting color, MIME</p> 1459 1460 <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> 1461 </dd> 1462 1463 <dt><span class="part-name">vifm</span> 1464 </dt> 1465 1466 <dd> 1467 <p>File manager with vi like keybindings</p> 1468 1469 <p><a href="https://vifm.info/">https://vifm.info/</a></p> 1470 </dd> 1471 </dl> 1472 </blockquote> 1473 1474 <p>as well as some that use <span class= 1475 "main-name">ncurses</span> for the terminfo support alone:</p> 1476 1477 <blockquote> 1478 <dl> 1479 <dt><span class="part-name">minicom</span> 1480 </dt> 1481 1482 <dd> 1483 <p>terminal emulator for serial modem connections</p> 1484 1485 <p><a href= 1486 "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p> 1487 </dd> 1488 1489 <dt><span class="part-name">mosh</span> 1490 </dt> 1491 1492 <dd> 1493 <p>a replacement for <code>ssh</code>.</p> 1494 1495 <p><a href="https://mosh.org/">https://mosh.org/</a></p> 1496 </dd> 1497 1498 <dt><span class="part-name">tack</span> 1499 </dt> 1500 1501 <dd> 1502 <p>terminfo action checker</p> 1503 1504 <p><a href="@HOMEPAGE@/tack.html">@HOMEPAGE@/tack.html</a></p> 1505 </dd> 1506 1507 <dt><span class="part-name">tmux</span> 1508 </dt> 1509 1510 <dd> 1511 <p>terminal multiplexor</p> 1512 1513 <p><a href= 1514 "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> 1515 </dd> 1516 1517 <dt><span class="part-name">vile</span> 1518 </dt> 1519 1520 <dd> 1521 <p><em>vi-like-emacs</em> may be built to use the terminfo, 1522 termcap or curses interfaces.</p> 1523 1524 <p><a href="@WEBSITE@/vile/">@WEBSITE@/vile/</a></p> 1525 </dd> 1526 </dl> 1527 </blockquote> 1528 1529 <p>and finally, those which use only the termcap interface:</p> 1530 1531 <blockquote> 1532 <dl> 1533 <dt><span class="part-name">emacs</span> 1534 </dt> 1535 1536 <dd> 1537 <p>text editor</p> 1538 1539 <p><a href= 1540 "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> 1541 </dd> 1542 1543 <dt><span class="part-name">less</span> 1544 </dt> 1545 1546 <dd> 1547 <p>The most commonly used <em>pager</em> (a program that 1548 displays text files).</p> 1549 1550 <p><a href= 1551 "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> 1552 </dd> 1553 1554 <dt><span class="part-name">screen</span> 1555 </dt> 1556 1557 <dd> 1558 <p>terminal multiplexor</p> 1559 1560 <p><a href= 1561 "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> 1562 </dd> 1563 1564 <dt><span class="part-name">vim</span> 1565 </dt> 1566 1567 <dd> 1568 <p>text editor</p> 1569 1570 <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> 1571 </dd> 1572 </dl> 1573 </blockquote> 1574 1575 <h2><a name="h2-development" id="h2-development">Development 1576 activities</a></h2> 1577 1578 <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> 1579 from a previous package pcurses, written by Pavel Curtis. Eric S. 1580 Raymond continued development. Jürgen Pfeifer wrote most of 1581 the form and menu libraries.</p> 1582 1583 <p>Ongoing development work is done by <a href= 1584 "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas 1585 E. Dickey has acted as the maintainer for the Free Software 1586 Foundation, which held a <a href= 1587 "@HOMEPAGE@/ncurses-license.html">copyright on ncurses</a> for 1588 releases 4.2 through 6.1. Following the release of ncurses 6.1, 1589 effective as of release 6.2, copyright for ncurses reverted to 1590 Thomas E. Dickey (see the <a href= 1591 "@HOMEPAGE@/ncurses.faq.html#relicensed">ncurses FAQ</a> for 1592 additional information).</p> 1593 1594 <p>Contact the current maintainers at</p> 1595 1596 <blockquote> 1597 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> 1598 </blockquote> 1599 1600 <p>To join the ncurses mailing list, please write email to</p> 1601 1602 <blockquote> 1603 <a href= 1604 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> 1605 </blockquote> 1606 containing the line: 1607 <blockquote> 1608 <p><code>subscribe</code> 1609 <em><name>@<host.domain></em></p> 1610 </blockquote> 1611 1612 <p>This list is open to anyone interested in helping with the 1613 development and testing of this package.</p> 1614 1615 <p>Beta versions of <span class="main-name">ncurses</span> are 1616 made available at</p> 1617 1618 <blockquote> 1619 <p><a href= 1620 "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a> 1621 and<br> 1622 <a href= 1623 "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a> .</p> 1624 </blockquote> 1625 1626 <p>Patches to the current release are made available at</p> 1627 1628 <blockquote> 1629 <p><a href= 1630 "https://invisible-island.net/archives/ncurses/6.4/">https://invisible-island.net/archives/ncurses/6.4/</a> 1631 and<br> 1632 <a href= 1633 "https://invisible-mirror.net/archives/ncurses/6.4/">https://invisible-mirror.net/archives/ncurses/6.4/</a> .</p> 1634 </blockquote> 1635 1636 <p>There is an archive of the mailing list here:</p> 1637 1638 <blockquote> 1639 <p><a href= 1640 "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a> .</p> 1641 </blockquote> 1642 1643 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related 1644 resources</a></h2> 1645 1646 <p>The release notes make scattered references to these pages, 1647 which may be interesting by themselves:</p> 1648 1649 <ul> 1650 <li><a href="@HOMEPAGE@/ncurses-license.html"><span class= 1651 "main-name">ncurses</span> licensing</a></li> 1652 1653 <li><a href="@HOMEPAGE@/ncurses-mapsyms.html">Symbol versioning 1654 in <span class="main-name">ncurses</span></a></li> 1655 1656 <li><a href="@HOMEPAGE@/ncurses-slang.html">Comments on 1657 <span class="main-name">ncurses</span> versus <span class= 1658 "main-name">slang</span> (S-Lang)</a></li> 1659 1660 <li><a href="@HOMEPAGE@/ncurses-openbsd.html">Comments on 1661 <span class="main-name">OpenBSD</span></a></li> 1662 1663 <li><a href="@HOMEPAGE@/tack.html">tack – terminfo action 1664 checker</a></li> 1665 1666 <li><a href="@HOMEPAGE@/tctest.html">tctest – termcap 1667 library checker</a></li> 1668 1669 <li><a href= 1670 "@HOMEPAGE@/ncurses.html#download_database">Terminal 1671 Database</a></li> 1672 </ul> 1673 1674 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other 1675 resources</a></h2> 1676 1677 <p>The distribution provides a newer version of the 1678 terminfo-format terminal description file once maintained by 1679 <a href="http://www.catb.org/~esr/terminfo/">Eric 1680 Raymond</a> . Unlike the older version, the termcap and 1681 terminfo data are provided in the same file, which also provides 1682 several user-definable extensions beyond the X/Open Curses 1683 specification.</p> 1684 1685 <p>You can find lots of information on terminal-related topics 1686 not covered in the terminfo file in <a href= 1687 "https://shuford.invisible-island.net/">Richard Shuford's 1688 archive</a> (<a href= 1689 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>). 1690 The collection of computer manuals at <a href= 1691 "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been 1692 useful.</p> 1693 1694 <div class="nav"> 1695 <ul> 1696 <li><a href="#h2-overview">Overview</a></li> 1697 1698 <li> 1699 <a href="#h2-release-notes">Release Notes</a> 1700 <ul> 1701 <li> 1702 <a href="#h3-library">Library improvements</a> 1703 <ul> 1704 <li><a href="#h4-new-library">New features</a></li> 1705 1706 <li><a href="#h4-fixes-library">Other 1707 improvements</a></li> 1708 </ul> 1709 </li> 1710 1711 <li> 1712 <a href="#h3-programs">Program improvements</a> 1713 <ul> 1714 <li><a href="#h4-utilities">Utilities</a></li> 1715 1716 <li><a href="#h4-examples">Examples</a></li> 1717 </ul> 1718 </li> 1719 1720 <li><a href="#h3-database">Terminal database</a></li> 1721 1722 <li><a href="#h3-documentation">Documentation</a></li> 1723 1724 <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> 1725 1726 <li> 1727 <a href="#h3-config-config">Configuration changes</a> 1728 <ul> 1729 <li><a href="#h4-config-major">Major changes</a></li> 1730 1731 <li><a href="#h4-config-options">Configuration 1732 options</a></li> 1733 </ul> 1734 </li> 1735 1736 <li><a href="#h3-portability">Portability</a></li> 1737 </ul> 1738 </li> 1739 1740 <li><a href="#h2-features">Features of <span class= 1741 "main-name">ncurses</span></a></li> 1742 1743 <li><a href="#h2-who-uses">Applications using <span class= 1744 "main-name">ncurses</span></a></li> 1745 1746 <li><a href="#h2-development">Development activities</a></li> 1747 1748 <li><a href="#h2-this-stuff">Related resources</a></li> 1749 1750 <li><a href="#h2-other-stuff">Other resources</a></li> 1751 </ul> 1752 </div> 1753</body> 1754</html> 1755