1<!-- 2 $Id: announce.html.in,v 1.109 2025/12/30 20:21:46 tom Exp $ 3 **************************************************************************** 4 * Copyright 2018-2024,2025 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.8.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>December 30, 2025</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.5; 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 numerous other improvements listed in this 169 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.5 release.</p> 176 177 <h3><a name="h3-library" id="h3-library">Library improvements</a></h3> 178 179 <h4><a name="h4-term-driver" id="h4-term-driver">Terminal driver 180 improvements</a></h4> 181 182 <p>This release focuses on improvements to the MinGW/Windows 183 terminal driver. The terminal driver for MinGW32 was introduced 184 in <a href="@HOMEPAGE@/NEWS.html#t20090214">2009</a>. A new 185 version of the terminal driver to support Windows Terminal was 186 begun in <a href="@HOMEPAGE@/NEWS.html#t20200829">2020</a>. 187 However, there were some differences:</p> 188 189 <ul> 190 <li> 191 <p>Both drivers use <a href= 192 "https://learn.microsoft.com/en-us/windows/console/console-reference"> 193 Console API</a>; the later Windows driver also provides for 194 using character escape sequences.</p> 195 </li> 196 197 <li> 198 <p>The MinGW32 driver was designed to imitate POSIX terminal 199 I/O data types to simplify integration with the existing 200 sources.</p> 201 202 <p>The newer Windows driver did not integrate with the 203 sources in the same way. In particular, the <a href= 204 "@HOMEPAGE@/man/tset.1.html">reset</a> utility was 205 incomplete.</p> 206 </li> 207 208 <li> 209 <p>Windows Terminal support for Console API is incomplete, 210 lacking mouse support. Additionally, its developers took a 211 few years to resolve issues with carriage-return versus 212 line-feed translation.</p> 213 214 <p>Reflecting on these problems, both MinGW and Windows 215 drivers are still provided in ncurses through the current 216 release.</p> 217 </li> 218 219 <li> 220 <p>The two drivers are similar, but in developing the Windows 221 driver some renaming and refactoring was done. That resulted 222 in duplicate source files. This release eliminates the 223 duplication.</p> 224 </li> 225 </ul> 226 227 <p>These improvements have been made to the terminal driver:</p> 228 229 <ul> 230 <li> 231 <p>made <tt>win_driver.c</tt> obsolete in favor of 232 <tt>win32_driver.c</tt></p> 233 </li> 234 235 <li> 236 <p>made <tt>win32_curses.h</tt> obsolete in favor of 237 <tt>nc_win32.h</tt></p> 238 </li> 239 240 <li> 241 <p>added configure check for Win32 named pipes feature, using 242 that to make <tt>nc_mingw.h</tt> obsolete in favor of 243 <tt>nc_win32.h</tt></p> 244 </li> 245 246 <li>separated the <tt>_NC_WINDOWS</tt> platform macro into 247 <tt>_NC_WINDOWS_NATIVE</tt>, for MinGW and other native Win32 248 support, and <tt>_NC_WINDOWS</tt>, to make some Win32 features 249 available under the Cygwin runtime, in this case the 250 term-driver.</li> 251 252 <li> 253 <p>modified MinGW32 configuration to account for its use of 254 Windows-style pathnames in filesystem checks.</p> 255 </li> 256 257 <li> 258 <p>changed <tt>MS_TERMINAL</tt> symbol to 259 <tt>DEFAULT_TERM_VAR</tt></p> 260 </li> 261 262 <li> 263 <p>updated <tt>ncurses/wcwidth.c</tt>, for MinGW ports, from 264 xterm.</p> 265 </li> 266 267 <li> 268 <p>made fixes for reading Unicode characters in MinGW/Windows 269 port</p> 270 </li> 271 272 <li> 273 <p>improved Windows driver by restoring the scroll buffer and 274 console mode, e.g., when <tt>reset_prog_mode</tt> or 275 <tt>endwin</tt> is called</p> 276 </li> 277 278 <li> 279 <p>simplified include for <tt>wchar.h</tt> in Windows port by 280 removing the platform ifdef's</p> 281 </li> 282 283 <li> 284 <p>modified driver for MinGW to handle shift-tab and 285 control-tab as back-tab</p> 286 </li> 287 288 <li> 289 <p>made fixes for port using clang-cl or cl MSVC</p> 290 </li> 291 </ul> 292 293 <h4><a name="h4-fixes-library" id="h4-fixes-library">Other 294 improvements</a></h4> 295 296 <p>These are improvements to existing features:</p> 297 298 <ul> 299 <li> 300 <p>add comments to generated <tt>term.h</tt> to hint the 301 configure options used</p> 302 </li> 303 304 <li> 305 <p>change scope of <tt>TTY</tt>, <tt>GET_TTY</tt> and 306 <tt>SET_TTY</tt> to ncurses-internals</p> 307 </li> 308 309 <li> 310 <p>improved mouse driver</p> 311 312 <ul> 313 <li> 314 <p>modify <tt>handle_wheel</tt> case 2 to ignore the 315 event as in case 1 for mouse version 1, since that 316 corresponds to a button 6 or 7 event which is not 317 supported with ABI 6.</p> 318 </li> 319 320 <li> 321 <p>use separate read/write pointers in the mouse event 322 queue to work with too-close events for the 323 click-detection to work reliably, and further improve 324 that in case <tt>mouseinterval(0)</tt> is used to 325 suppress click-detection.</p> 326 </li> 327 </ul> 328 </li> 329 330 <li> 331 <p>modify treatment of <em>“n”</em> parameter for 332 <tt>waddnstr</tt>, <tt>waddnwstr</tt>, and 333 <tt>wins_nwstr</tt> to return <em>OK</em> when 334 <em>“n”</em> is zero, for consistency with other 335 implementations</p> 336 </li> 337 338 <li> 339 <p>modify <tt>wattron</tt>/<tt>wattroff</tt> calls in 340 <tt>form/m_post.c</tt> to call <tt>wattr_on</tt> and 341 <tt>wattr_off</tt> to omit cast used in the former for X/Open 342 compatibility</p> 343 </li> 344 345 <li> 346 <p>change <tt>winwstr</tt> to a generated function, using the 347 macro definition, moving its handling of negative length 348 parameter into <tt>winnwstr</tt>.</p> 349 </li> 350 351 <li> 352 <p>change <tt>winwstr</tt> to return wide character count 353 instead of <em>OK</em>.</p> 354 </li> 355 356 <li> 357 <p>disallow directories and block/character devices in 358 safe-open.</p> 359 </li> 360 361 <li> 362 <p>amend <tt>scr_restore</tt> and <tt>scr_init</tt> to remove 363 the target window only after validating the source window 364 which will replace the target</p> 365 </li> 366 367 <li> 368 <p>modify <tt>_nc_flush</tt> to also flush <em>stderr</em> to 369 help the <em>flash</em> capability to work in 370 <tt>bash</tt></p> 371 </li> 372 373 <li> 374 <p>trim padding from <em>sgr</em> expression used in 375 <tt>trim_sgr0</tt>, to avoid copying the padding into the 376 resulting sgr0</p> 377 </li> 378 379 <li> 380 <p>modify <tt>misc/Makefile.in</tt> and 381 <tt>misc/run_tic.in</tt> so that <tt>$DESTDIR</tt> is set and 382 used only in the makefile.</p> 383 </li> 384 385 <li> 386 <p>modify <tt>MKfallback.sh</tt> to eliminate 387 <tt>TERMINFO</tt> environment variable.</p> 388 </li> 389 390 <li> 391 <p>add <tt>-x</tt> option to <tt>infocmp</tt> in 392 <tt>MKfallback.sh</tt></p> 393 </li> 394 395 <li> 396 <p>limit value from <tt>ESCDELAY</tt> environment variable to 397 30 seconds, like other delay limits.</p> 398 </li> 399 400 <li> 401 <p>limit values from <tt>LINES</tt> and <tt>COLUMNS</tt> 402 environment variables to 512</p> 403 </li> 404 405 <li> 406 <p>added check in <tt>wresize</tt> for out-of-range 407 dimensions</p> 408 </li> 409 410 <li> 411 <p>improved error-handling in c++ binding</p> 412 </li> 413 414 <li> 415 <p>improved error-reporting in <tt>write_entry.c</tt></p> 416 </li> 417 418 <li> 419 <p>amended limit used in <tt>alloc_pair</tt>, by applying an 420 adjustment for default colors only when the maximum number of 421 color pairs is greater than the maximum number of colors</p> 422 </li> 423 424 <li> 425 <p>added limit-checks in <tt>alloc_entry.c</tt> and 426 <tt>alloc_ttype.c</tt> to avoid indexing errors when using 427 <tt>infocmp</tt> to compare all capabilities when processing 428 a malformed terminfo binary which has a valid header</p> 429 </li> 430 431 <li> 432 <p>added a null pointer check in mouse-initialization, for 433 the Windows driver</p> 434 </li> 435 436 <li> 437 <p>added some null-pointer checks after <tt>malloc</tt>s in 438 test-programs.</p> 439 </li> 440 </ul> 441 442 <p>These are corrections to existing features:</p> 443 444 <ul> 445 <li> 446 <p>removed test in <tt>wgetch</tt> which applied 447 <tt>notimeout</tt> to the initial read of a character</p> 448 </li> 449 450 <li> 451 <p>added check for special case of <tt>wcrtomb</tt> 452 converting a single byte code to a different single byte 453 code, which glibc does for code 160 in the KOI8-R 454 encoding</p> 455 </li> 456 457 <li> 458 <p>corrected <tt>_nc_to_char</tt> for the case when 459 <tt>wctob</tt> is not found by configure script</p> 460 </li> 461 462 <li> 463 <p>revised loop in <tt>wins_nwstr</tt>, to ensure that 464 non-spacing characters are combined with the base spacing 465 character</p> 466 </li> 467 468 <li> 469 <p>modified checks in <tt>delwin</tt> to avoid checking if 470 the window is a pad until first checking if it is still on 471 the active window-list</p> 472 </li> 473 </ul> 474 475 <h3><a name="h3-programs" id="h3-programs">Program 476 improvements</a></h3> 477 478 <h4><a name="h4-utilities" id="h4-utilities">Utilities</a></h4> 479 480 <p>Several improvements were made to the utility programs.</p> 481 482 <dl> 483 <dt><span class="part-name"><a href= 484 "@HOMEPAGE@/man/infocmp.1m.html">infocmp</a></span> 485 </dt> 486 487 <dd> 488 <ul> 489 <li> 490 <p>improved <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt> 491 fallback feature</p> 492 493 <ul> 494 <li>prefix names with “<tt>ti_</tt>” if 495 they begin with a digit, e.g., 9term</li> 496 497 <li>escape backslashes and double-quotes in description 498 fields</li> 499 </ul> 500 </li> 501 502 <li> 503 <p>modified <tt>infocmp</tt> <tt>-E</tt>/<tt>-e</tt> 504 fallback feature to reduce stricter compiler warnings for 505 the extended capability data.</p> 506 </li> 507 508 <li> 509 <p>modified <tt>infocmp</tt> and <tt>tabs</tt> to use 510 actual name in usage and header.</p> 511 </li> 512 513 <li> 514 <p>improved error-message from <tt>infocmp</tt> when a 515 terminal entry cannot be opened</p> 516 </li> 517 </ul> 518 </dd> 519 520 <dt><span class="part-name"><a href= 521 "@HOMEPAGE@/man/tic.1m.html">tic</a></span> 522 </dt> 523 524 <dd> 525 <ul> 526 <li> 527 <p>increased limit on use-clauses from 32 to 40, warn but 528 allow entries which exceed the old limit.</p> 529 </li> 530 531 <li> 532 <p>added check for infinite loop in <tt>tic</tt>'s 533 use-resolution.</p> 534 </li> 535 536 <li> 537 <p>added a buffer-limit check in 538 <tt>postprocess_termcap</tt></p> 539 </li> 540 </ul> 541 </dd> 542 543 <dt><span class="part-name"><a href= 544 "@HOMEPAGE@/man/tput.1m.html">tput</a></span> 545 </dt> 546 547 <dd> 548 <ul> 549 <li> 550 <p>Warn about capabilities which expect parameters where 551 none are given. Also, repair the feature where multiple 552 capabilities can be handled on a single line.</p> 553 </li> 554 </ul> 555 </dd> 556 </dl> 557 558 <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> 559 560 <p>Along with the library and utilities, improvements were made 561 to the <a href= 562 "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a>:</p> 563 564 <ul> 565 <li> 566 <p>add help-popup for <tt>test_instr.c</tt>, 567 <tt>test_inwstr.c</tt></p> 568 </li> 569 570 <li> 571 <p>add options to <tt>test/worm.c</tt> for benchmarking.</p> 572 </li> 573 574 <li> 575 <p>improve <tt>-t</tt> option of <tt>test/gdc.c</tt>, 576 allowing hours only, or hours and minutes only.</p> 577 </li> 578 579 <li> 580 <p>correct dimensions in <tt>test/popup_msg.c</tt>, fixing an 581 overrun.</p> 582 </li> 583 584 <li> 585 <p>modify <tt>test/demo_keyok.c</tt> to accept <tt>^Q</tt> 586 for quit, for consistency.</p> 587 </li> 588 589 <li> 590 <p>add option “<tt>-c</tt>” to test programs to 591 illustrate a non-blank character in the window background 592 property.</p> 593 </li> 594 595 <li> 596 <p>reserve <tt>-c</tt>/<tt>-l</tt> options in 597 <tt>test/*.c</tt> for command/logging like <a href= 598 "@WEBSITE@/vttest/">vttest</a>.</p> 599 </li> 600 </ul> 601 602 <p>There is one new demo/test program:</p> 603 604 <dl> 605 <dt><span class= 606 "part-name"><em>ncurses/report_ctype.c</em></span> 607 </dt> 608 609 <dd> 610 <p>Shows a chart of the first 256 character codes, which are 611 not as consistent across platforms for ctype versus wctype as 612 some suppose.</p> 613 </dd> 614 </dl> 615 616 <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> 617 618 <p>There are several new terminal descriptions:</p> 619 620 <ul> 621 <li> 622 <p><a href= 623 "@HOMEPAGE@/terminfo.src.html#tic-ghostty"><tt>ghostty</tt></a></p> 624 </li> 625 626 <li> 627 <p><a href= 628 "@HOMEPAGE@/terminfo.src.html#tic-illumos"><tt>illumos</tt></a>, 629 <a href= 630 "@HOMEPAGE@/terminfo.src.html#tic-sun-16color"><tt>sun-16color</tt></a>, 631 <a href= 632 "@HOMEPAGE@/terminfo.src.html#tic-sun-256color"><tt>sun-256color</tt></a>, 633 and <a href= 634 "@HOMEPAGE@/terminfo.src.html#tic-sun-direct"><tt>sun-direct</tt></a></p> 635 </li> 636 637 <li> 638 <p><a href= 639 "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal-direct"><tt>ms-terminal-direct</tt></a></p> 640 </li> 641 642 <li> 643 <p><a href= 644 "@HOMEPAGE@/terminfo.src.html#tic-pangoterm"><tt>pangoterm</tt></a></p> 645 </li> 646 647 <li> 648 <p><a href= 649 "@HOMEPAGE@/terminfo.src.html#tic-rlogin-color"><tt>rlogin-color</tt></a></p> 650 </li> 651 652 <li> 653 <p><a href= 654 "@HOMEPAGE@/terminfo.src.html#tic-sclp"><tt>sclp</tt></a></p> 655 </li> 656 657 <li> 658 <p><a href= 659 "@HOMEPAGE@/terminfo.src.html#tic-vt520-w"><tt>vt520-w</tt></a> 660 and <a href= 661 "@HOMEPAGE@/terminfo.src.html#tic-vt525-w"><tt>vt525-w</tt></a></p> 662 </li> 663 </ul> 664 665 <p>along with building blocks</p> 666 667 <ul> 668 <li> 669 <p><a href= 670 "@HOMEPAGE@/terminfo.src.html#tic-linux_lockeys"><tt>linux+lockeys</tt></a>, 671 <a href= 672 "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_lockeys"><tt>xterm+r5+lockeys</tt></a>, 673 <a href= 674 "@HOMEPAGE@/terminfo.src.html#tic-xterm_r5_fkeys"><tt>xterm+r5+fkeys</tt></a></p> 675 </li> 676 677 <li> 678 <p><a href= 679 "@HOMEPAGE@/terminfo.src.html#tic-vt100_pf1-pf4"><tt>vt100+pf1-pf4</tt></a></p> 680 </li> 681 682 <li> 683 <p><a href= 684 "@HOMEPAGE@/terminfo.src.html#tic-vt220_ufkeys"><tt>vt220+ufkeys</tt></a>, 685 <a href= 686 "@HOMEPAGE@/terminfo.src.html#tic-vt220_sfkeys"><tt>vt220+sfkeys</tt></a></p> 687 </li> 688 689 <li> 690 <p><a href= 691 "@HOMEPAGE@/terminfo.src.html#tic-ecma_standout"><tt>ecma+standout</tt></a>, 692 <a href= 693 "@HOMEPAGE@/terminfo.src.html#tic-ecma_underline"><tt>ecma+underline</tt></a></p> 694 </li> 695 696 <li> 697 <p><a href= 698 "@HOMEPAGE@/terminfo.src.html#tic-wyse+cvis"><tt>wyse+cvis</tt></a></p> 699 </li> 700 </ul> 701 702 <p>There are many changes to existing terminal descriptions. Some 703 were updates to several descriptions, using the 704 <code>infocmp</code> “<code>-u</code>” option in a 705 script to determine which <em>building-block</em> entries could 706 be used to replace multiple capability settings (and trim 707 redundant information).</p> 708 709 <p>Other changes include:</p> 710 711 <ul> 712 <li> 713 <p>use <a href= 714 "@HOMEPAGE@/terminfo.src.html#tic-xterm_keypad">xterm+keypad</a> 715 in <a href= 716 "@HOMEPAGE@/terminfo.src.html#tic-pccon_base">pccon+base</a></p> 717 </li> 718 719 <li> 720 <p>use <a href= 721 "@HOMEPAGE@/terminfo.src.html#tic-bracketed_paste">bracketed+paste</a> 722 in <a href= 723 "@HOMEPAGE@/terminfo.src.html#tic-nsterm">nsterm</a>, 724 <a href="@HOMEPAGE@/terminfo.src.html#tic-rlogin-color">rlogin-color</a>, 725 <a href="@HOMEPAGE@/terminfo.src.html#tic-screen">screen</a>, 726 <a href= 727 "@HOMEPAGE@/terminfo.src.html#tic-terminology">terminology</a></p> 728 </li> 729 730 <li> 731 <p>use extended-keys in <a href= 732 "@HOMEPAGE@/terminfo.src.html#tic-djgpp">djgpp</a> 2.05</p> 733 </li> 734 735 <li> 736 <p>update/correct some of the rv/xr strings, checked with</p> 737 738 <p><a href="@HOMEPAGE@/tack.html">tack</a></p> 739 740 <ul> 741 <li>add rv code for <a href= 742 "@HOMEPAGE@/terminfo.src.html#tic-alacritty">alacritty</a></li> 743 744 <li>add xr code for <a href= 745 "@HOMEPAGE@/terminfo.src.html#tic-putty">putty</a></li> 746 747 <li>add rv/xr codes for <a href= 748 "@HOMEPAGE@/terminfo.src.html#tic-domterm">domterm</a>, 749 <a href= 750 "@HOMEPAGE@/terminfo.src.html#tic-mintty">mintty</a>, 751 <a href= 752 "@HOMEPAGE@/terminfo.src.html#tic-mlterm">mlterm</a>, 753 <a href= 754 "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a>, 755 <a href= 756 "@HOMEPAGE@/terminfo.src.html#tic-ghostty">ghostty</a>, 757 <a href= 758 "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iterm2</a>, 759 <a href="@HOMEPAGE@/terminfo.src.html#tic-kitty">kitty</a>, 760 <a href= 761 "@HOMEPAGE@/terminfo.src.html#tic-konsole">konsole</a>, 762 <a href= 763 "@HOMEPAGE@/terminfo.src.html#tic-vscode">vscode</a>, 764 <a href="@HOMEPAGE@/terminfo.src.html#tic-vte">vte</a>, 765 <a href= 766 "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a></li> 767 </ul> 768 </li> 769 770 <li> 771 <p>improve use-clauses: <a href= 772 "@HOMEPAGE@/terminfo.src.html#tic-ansi_cup">ansi+cup</a>, 773 <a href= 774 "@HOMEPAGE@/terminfo.src.html#tic-ansi_idl1">ansi+idl1</a>, 775 <a href= 776 "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a>, 777 <a href= 778 "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca2">ansi+rca2</a>, 779 <a href= 780 "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrso">ansi+sgrso</a>, 781 <a href= 782 "@HOMEPAGE@/terminfo.src.html#tic-ansi_sgrul">ansi+sgrul</a></p> 783 </li> 784 785 <li> 786 <p><a href= 787 "@HOMEPAGE@/terminfo.src.html#tic-sclp">sclp</a>:</p> 788 789 <ul> 790 <li>add kf1 to kf5</li> 791 792 <li>use <a href= 793 "@HOMEPAGE@/terminfo.src.html#tic-ansi_rca">ansi+rca</a></li> 794 795 <li>use <a href= 796 "@HOMEPAGE@/terminfo.src.html#tic-vt220_pcedit">vt220+pcedit</a></li> 797 </ul> 798 </li> 799 800 <li> 801 <p><a href="@HOMEPAGE@/terminfo.src.html#tic-vt525">vt525</a></p> 802 803 <ul> 804 <li>add color</li> 805 806 <li>add op</li> 807 </ul> 808 </li> 809 810 <li> 811 <p><a href= 812 "@HOMEPAGE@/terminfo.src.html#tic-wezterm">wezterm</a>:</p> 813 814 <ul> 815 <li>use <a href= 816 "@HOMEPAGE@/terminfo.src.html#tic-xterm_alt_title">xterm+alt+title</a></li> 817 818 <li>omit its broken left/right margin feature</li> 819 </ul> 820 </li> 821 822 <li>update <a href= 823 "@HOMEPAGE@/terminfo.src.html#tic-contour">contour</a></li> 824 825 <li> 826 <p>update <a href= 827 "@HOMEPAGE@/terminfo.src.html#tic-ms-terminal">ms-terminal</a></p> 828 829 <ul> 830 <li>add XM/xm to ms-terminal, to enable mouse with 831 experimental Windows driver</li> 832 </ul> 833 </li> 834 835 <li> 836 <p>update <a href= 837 "@HOMEPAGE@/terminfo.src.html#tic-st">st</a> to 0.8.5</p> 838 </li> 839 840 <li> 841 <p>update <a href= 842 "@HOMEPAGE@/terminfo.src.html#tic-teraterm">teraterm</a> to 843 5.0</p> 844 </li> 845 846 <li> 847 <p>update <a href= 848 "@HOMEPAGE@/terminfo.src.html#tic-foot">foot</a> to 849 1.18.1</p> 850 </li> 851 852 <li> 853 <p>update <a href= 854 "@HOMEPAGE@/terminfo.src.html#tic-iterm2">iTerm2</a> to 855 3.5.0</p> 856 </li> 857 </ul> 858 859 <h3><a name="h3-documentation" id= 860 "h3-documentation">Documentation</a></h3> 861 862 <p>As usual, this release</p> 863 864 <ul> 865 <li> 866 <p>improves documentation by describing new features,</p> 867 </li> 868 869 <li> 870 <p>attempts to improve the description of features which 871 users have found confusing</p> 872 </li> 873 874 <li> 875 <p>fills in overlooked descriptions of features which were 876 described in the <a href="@HOMEPAGE@/NEWS.html">NEWS</a> file 877 but treated sketchily in manual pages.</p> 878 </li> 879 </ul> 880 881 <p>In addition to providing background information to explain 882 these features and show how they evolved, there are corrections, 883 clarifications, etc.:</p> 884 885 <ul> 886 <li> 887 <p>Corrections:</p> 888 889 <ul> 890 <li> 891 <p>corrected note about box() in curs_border.3x</p> 892 </li> 893 894 <li> 895 <p>added note on scrolling and lower-right corner to 896 waddch and wadd_wch manual pages.</p> 897 </li> 898 </ul> 899 </li> 900 901 <li> 902 <p>Other improvements:</p> 903 904 <ul> 905 <li> 906 <p>This release has many changes to improve the 907 formatting and style of the man pages.</p> 908 </li> 909 910 <li> 911 <p>Table layout in the man pages has been revised.</p> 912 </li> 913 914 <li> 915 <p>The <a href= 916 "@HOMEPAGE@/howto/NCURSES-Programming-HOWTO.html">ncurses 917 HOWTO</a> and its sample programs has been updated.</p> 918 </li> 919 </ul> 920 </li> 921 </ul> 922 923 <p>There are no new manual pages (all of the manual page updates 924 are to existing pages).</p> 925 926 <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting 927 bug-fixes</a></h3> 928 929 <h3><a name="h3-config-config" id= 930 "h3-config-config">Configuration changes</a></h3> 931 932 <h4><a name="h4-config-major" id="h4-config-major">Major 933 changes</a></h4> 934 935 <p>Improvements made to configure checks include</p> 936 937 <ul> 938 <li> 939 <p>improve configure check for “install”.</p> 940 </li> 941 942 <li> 943 <p>add check for build-time utilities, in case 944 cross-compiling is setup with an invalid 945 <tt>$BUILD_CC</tt></p> 946 </li> 947 948 <li> 949 <p>add configure check for <tt><sys/fsuid.h></tt>, 950 which may be needed for flatpacks</p> 951 </li> 952 953 <li> 954 <p>add a consistency-check for termio(s)/tty headers, to help 955 with cross-compiles</p> 956 </li> 957 958 <li> 959 <p>modify configure check for 960 <tt>MAKEFLAGS</tt>/<tt>MFLAGS</tt> to ignore existing value 961 of these environment variables</p> 962 </li> 963 964 <li> 965 <p>improve configurability of <tt>alloca</tt> as used in 966 Windows ports.</p> 967 </li> 968 969 <li> 970 <p>modify configure script checks for <tt>stdbool.h</tt> to 971 fix build with older gcc version.</p> 972 </li> 973 974 <li> 975 <p>add <new> to the possible headers declaring the C++ 976 <tt>std::bad_alloc</tt>.</p> 977 </li> 978 979 <li> 980 <p>modify check for <tt>stdbool.h</tt> to be more 981 conservative in case the headers are used with a compiler 982 other than that which was used to configure</p> 983 </li> 984 985 <li> 986 <p>remove dependency on <tt>stdbool.h</tt> from configure 987 script check for type of <em>bool</em> when C++ binding is 988 omitted.</p> 989 </li> 990 </ul> 991 992 <h4><a name="h4-config-options" id= 993 "h4-config-options">Configuration options</a></h4> 994 995 <p>There are a few new configure options:</p> 996 997 <dl> 998 <dt><a href= 999 "@HOMEPAGE@/INSTALL.html#option:enable-install-prefix"><tt>--enable-install-prefix</tt></a> 1000 </dt> 1001 1002 <dd> 1003 <p>Modify behavior of <tt>$DESTDIR</tt> to merge or replace 1004 the value set by <tt>--prefix</tt>.</p> 1005 </dd> 1006 1007 <dt><a href= 1008 "@HOMEPAGE@/INSTALL.html#option:enable-named-pipes"><tt>--enable-named-pipes</tt></a> 1009 </dt> 1010 1011 <dd> 1012 <p>The Windows driver uses named pipes for communicating with 1013 a pseudo console, allowing it to use escape sequences rather 1014 than Console API. This works well with mintty. On the 1015 downside, this feature may not work well with the Windows 1016 Terminal due to a longstanding bug in <tt>conhost.exe</tt> 1017 (<a href= 1018 "https://github.com/microsoft/terminal/issues/9461">#9461</a>).</p> 1019 </dd> 1020 </dl> 1021 1022 <p>These configure options are modified:</p> 1023 1024 <dl> 1025 <dt><a href= 1026 "@HOMEPAGE@/INSTALL.html#option:enable-exp-win32"><tt>--enable-exp-win32</tt></a> 1027 </dt> 1028 1029 <dd> 1030 <p>This option is obsolete, replaced by 1031 <tt>--enable-named-pipes</tt>.</p> 1032 </dd> 1033 1034 <dt><a href= 1035 "@HOMEPAGE@/INSTALL.html#option:enable-term-driver"><tt>--enable-term-driver</tt></a> 1036 </dt> 1037 1038 <dd> 1039 <p>This is enabled by default on platforms where the Windows 1040 driver can be compiled, e.g., Cygwin, MinGW32 and MSYS2.</p> 1041 </dd> 1042 </dl> 1043 1044 <h4><a name="h4-config-package" id="h4-config-package">Package 1045 configuration scripts</a></h4> 1046 1047 <p>The configure script and makefiles optionally generate a 1048 script which reports the compiler and linker options needed to 1049 build a program with ncurses, as well as a data file which is 1050 used via pkg-config for the same purpose. Several improvements 1051 were made for these scripts:</p> 1052 1053 <ul> 1054 <li> 1055 <p>improved filtering of <tt>-L</tt> options in 1056 <tt>misc/gen-pkgconfig.in</tt> and in 1057 <tt>misc/ncurses-config.in</tt></p> 1058 </li> 1059 1060 <li> 1061 <p>modified <tt>ncurses*-config</tt> to add <tt>-I</tt> 1062 option in <tt>--cflag</tt> where needed for 1063 <tt>--disable-overwrite</tt> to match ".pc" files.</p> 1064 </li> 1065 1066 <li> 1067 <p>suppressed <tt>-g</tt> and <tt>-fXXX</tt> flags from 1068 <tt>CFLAGS</tt> in <tt>misc/ncurses-config.in</tt></p> 1069 </li> 1070 1071 <li> 1072 <p>modified configure script to allow for <tt>pkg-config</tt> 1073 using DOS/Windows pathname syntax</p> 1074 </li> 1075 1076 <li> 1077 <p>modified <tt>misc/ncurses-config.in</tt>, improved match 1078 with <tt>pkg-config output</tt>.</p> 1079 </li> 1080 1081 <li> 1082 <p>adjusted naming of test packages for MinGW 1083 <tt>*-config</tt> scripts to match the <tt>pkg-config</tt> 1084 names</p> 1085 </li> 1086 1087 <li> 1088 <p>added <tt>--cflags-only-I</tt> and 1089 <tt>--cflags-only-other</tt> options to 1090 <tt>misc/ncurses-config.in</tt></p> 1091 </li> 1092 </ul> 1093 1094 <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> 1095 1096 <p>Many of the portability changes are implemented via the 1097 configure script:</p> 1098 1099 <ul> 1100 <li> 1101 <p>disallow configure options which apply only to multiuser 1102 systems, to improve ports to single-user systems such as 1103 Haiku</p> 1104 </li> 1105 1106 <li> 1107 <p>add warning to configure script to address conflict 1108 between the <tt>--enable-lp64</tt> option and the options for 1109 overriding the types used for <tt>chtype</tt> and 1110 <tt>mmask_t</tt>.</p> 1111 </li> 1112 1113 <li> 1114 <p>modify configure script cases for $host_os, to accommodate 1115 64-bit big-endian POWER Linux with glibc</p> 1116 </li> 1117 1118 <li> 1119 <p>modify configure script and misc/Makefile to accept glob 1120 expressions that include Windows/DOS drive-letters</p> 1121 </li> 1122 1123 <li> 1124 <p>change <tt>Ada95/configure</tt> to use 1125 <tt>--with-screen</tt> option rather than 1126 <tt>--enable-widec</tt>, to provide more choices of 1127 underlying curses library.</p> 1128 </li> 1129 1130 <li> 1131 <p>modify configure script to work around broken gnatgcc 1132 script found in gcc-13 builds.</p> 1133 </li> 1134 </ul> 1135 1136 <p>Other portability fixes include:</p> 1137 1138 <ul> 1139 <li> 1140 <p>improve pattern used for configure 1141 <tt>--with-xterm-kbs</tt> option.</p> 1142 </li> 1143 1144 <li> 1145 <p>modify recursive make rules to avoid interference with GNU 1146 make's "-j" option</p> 1147 </li> 1148 1149 <li> 1150 <p>when installing the terminfo database, check if symbolic 1151 links are supported before attemping to link lib/terminfo 1152 from share/terminfo</p> 1153 </li> 1154 1155 <li> 1156 <p>improve logic in misc/run_tic.in for constructing symbolic 1157 link when <tt>$DESTDIR</tt> is set.</p> 1158 </li> 1159 1160 <li> 1161 <p>build-fix for ncurses-examples with newer PDCurses, which 1162 no longer has stubs for unimplemented features.</p> 1163 </li> 1164 1165 <li> 1166 <p>change <tt>etip.h.in</tt> to include either/both of 1167 <tt><new></tt> and <tt><exception></tt>, needed 1168 for another old BSD.</p> 1169 </li> 1170 1171 <li> 1172 <p>correct conditional-compile for a case when the C compiler 1173 does not have a bool type.</p> 1174 </li> 1175 1176 <li> 1177 <p>improve <tt>MKlib_gen.sh</tt> handling of 1178 “bool” type, for building link_test.</p> 1179 </li> 1180 1181 <li> 1182 <p>modify <tt>ncurses/tinfo/MKfallback.sh</tt> to work with 1183 MacOS <tt>sed</tt>, which lacks BSD-style <tt>\<</tt> and 1184 <tt>\></tt>.</p> 1185 </li> 1186 1187 <li> 1188 <p>modify <tt>MKlib_gen.c</tt> to allow for Solaris's 1189 definition of <tt>NULL</tt> as <tt>0L</tt>.</p> 1190 </li> 1191 1192 <li> 1193 <p>widen pattern in pc/*-config scripts to disallow more 1194 linker options.</p> 1195 </li> 1196 1197 <li> 1198 <p>avoid redefining bool in <tt>curses.h</tt> if the platform 1199 already supports that type.</p> 1200 </li> 1201 1202 <li> 1203 <p>move include <tt><curses.h></tt> from 1204 <tt>etip.h.in</tt> to <tt>cursesw.h</tt>, to work around 1205 breakage in Apple's port of ncurses.</p> 1206 </li> 1207 </ul> 1208 1209 <hr> 1210 1211 <h2><a name="h2-features" id="h2-features">Features of 1212 <span class="main-name">ncurses</span></a></h2> 1213 1214 <p>The <span class="main-name">ncurses</span> package is fully 1215 upward-compatible with SVr4 (System V Release 4) curses:</p> 1216 1217 <ul> 1218 <li> 1219 <p>All of the SVr4 calls have been implemented (and are 1220 documented).</p> 1221 </li> 1222 1223 <li> 1224 <p><span class="main-name">ncurses</span> supports the 1225 features of SVr4 curses including keyboard mapping, color, 1226 form drawing with ACS characters, and automatic recognition 1227 of keypad and function keys.</p> 1228 </li> 1229 1230 <li> 1231 <p><span class="main-name">ncurses</span> provides work-alike 1232 replacements of SVr4 supplemental libraries based on curses, 1233 but which were not specified by X/Open Curses:</p> 1234 1235 <ul> 1236 <li> 1237 <p>the panel library, permitting windows to stack and 1238 overlap</p> 1239 </li> 1240 1241 <li> 1242 <p>the menu library, supporting a uniform but flexible 1243 interface for menu programming</p> 1244 </li> 1245 1246 <li> 1247 <p>the form library, supporting data collection through 1248 on-screen forms</p> 1249 </li> 1250 </ul> 1251 </li> 1252 1253 <li> 1254 <p><span class="main-name">ncurses</span>'s terminal database 1255 is fully compatible with that used by SVr4 curses.</p> 1256 1257 <ul> 1258 <li> 1259 <p><span class="main-name">ncurses</span> supports 1260 user-defined capabilities that it can see, but which are 1261 hidden from SVr4 curses applications using the 1262 <em>same</em> terminal database.</p> 1263 </li> 1264 1265 <li> 1266 <p>It can be optionally configured to match the format 1267 used in related systems such as AIX and Tru64.</p> 1268 </li> 1269 1270 <li> 1271 <p>Alternatively, <span class="main-name">ncurses</span> 1272 can be configured to use hashed databases rather than the 1273 directory of files used by SVr4 curses.</p> 1274 </li> 1275 </ul> 1276 </li> 1277 1278 <li> 1279 <p>The <span class="main-name">ncurses</span> utilities have 1280 options to allow you to filter terminfo entries for use with 1281 less capable <em>curses</em>/<em>terminfo</em> versions such 1282 as the HP-UX and AIX ports.</p> 1283 </li> 1284 </ul> 1285 1286 <p>The <span class="main-name">ncurses</span> package also has 1287 many useful extensions over SVr4:</p> 1288 1289 <ul> 1290 <li> 1291 <p>The API is 8-bit clean and base-level conformant with the 1292 X/Open Curses specification, XSI curses (that is, it 1293 implements all <em>BASE</em> level features, and almost all 1294 <em>EXTENDED</em> features). It includes many function calls 1295 not supported under SVr4 curses (but portability of all calls 1296 is documented so you can use the SVr4 subset only).</p> 1297 </li> 1298 1299 <li> 1300 <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> 1301 can write to the rightmost-bottommost corner of the screen if 1302 your terminal has an insert-character capability.</p> 1303 </li> 1304 1305 <li> 1306 <p>Ada95 and C++ bindings.</p> 1307 </li> 1308 1309 <li> 1310 <p>Support for mouse event reporting with X Window xterm and 1311 FreeBSD and OS/2 console windows.</p> 1312 </li> 1313 1314 <li> 1315 <p>Extended mouse support via Alessandro Rubini's gpm 1316 package.</p> 1317 </li> 1318 1319 <li> 1320 <p>The function <code>wresize</code> allows you to resize 1321 windows, preserving their data.</p> 1322 </li> 1323 1324 <li> 1325 <p>The function <code>use_default_colors</code> allows you to 1326 use the terminal's default colors for the default color pair, 1327 achieving the effect of transparent colors.</p> 1328 </li> 1329 1330 <li> 1331 <p>The functions <code>keyok</code> and 1332 <code>define_key</code> allow you to better control the use 1333 of function keys, e.g., disabling the <span class= 1334 "main-name">ncurses</span> KEY_MOUSE, or by defining more 1335 than one control sequence to map to a given key code.</p> 1336 </li> 1337 1338 <li> 1339 <p>Support for direct-color terminals, such as modern 1340 xterm.</p> 1341 </li> 1342 1343 <li> 1344 <p>Support for 256-color terminals, such as modern xterm.</p> 1345 </li> 1346 1347 <li> 1348 <p>Support for 16-color terminals, such as <em>aixterm</em> 1349 and <em>modern xterm</em>.</p> 1350 </li> 1351 1352 <li> 1353 <p>Better cursor-movement optimization. The package now 1354 features a cursor-local-movement computation more efficient 1355 than either BSD's or System V's.</p> 1356 </li> 1357 1358 <li> 1359 <p>Super hardware scrolling support. The screen-update code 1360 incorporates a novel, simple, and cheap algorithm that 1361 enables it to make optimal use of hardware scrolling, 1362 line-insertion, and line-deletion for screen-line movements. 1363 This algorithm is more powerful than the 4.4BSD curses 1364 <code>quickch</code> routine.</p> 1365 </li> 1366 1367 <li> 1368 <p>Real support for terminals with the magic-cookie glitch. 1369 The screen-update code will refrain from drawing a highlight 1370 if the magic- cookie unattributed spaces required just before 1371 the beginning and after the end would step on a non-space 1372 character. It will automatically shift highlight boundaries 1373 when doing so would make it possible to draw the highlight 1374 without changing the visual appearance of the screen.</p> 1375 </li> 1376 1377 <li> 1378 <p>It is possible to generate the library with a list of 1379 pre-loaded fallback entries linked to it so that it can serve 1380 those terminal types even when no terminfo tree or termcap 1381 file is accessible (this may be useful for support of 1382 screen-oriented programs that must run in single-user 1383 mode).</p> 1384 </li> 1385 1386 <li> 1387 <p>The <a href="@HOMEPAGE@/man/tic.1m.html"><span class= 1388 "part-name">tic</span></a>/<a href= 1389 "@HOMEPAGE@/man/captoinfo.1m.html">captoinfo</a> utility 1390 provided with <span class="main-name">ncurses</span> has the 1391 ability to translate many termcaps from the XENIX, IBM and 1392 AT&T extension sets.</p> 1393 </li> 1394 1395 <li> 1396 <p>A BSD-like <a href= 1397 "@HOMEPAGE@/man/tset.1.html"><span class= 1398 "part-name">tset</span></a> utility is provided.</p> 1399 </li> 1400 1401 <li> 1402 <p>The <span class="main-name">ncurses</span> library and 1403 utilities will automatically read terminfo entries from 1404 $HOME/.terminfo if it exists, and compile to that directory 1405 if it exists and the user has no write access to the system 1406 directory. This feature makes it easier for users to have 1407 personal terminfo entries without giving up access to the 1408 system terminfo directory.</p> 1409 </li> 1410 1411 <li> 1412 <p>You may specify a path of directories to search for 1413 compiled descriptions with the environment variable 1414 TERMINFO_DIRS (this generalizes the feature provided by 1415 TERMINFO under stock System V.)</p> 1416 </li> 1417 1418 <li> 1419 <p>In terminfo source files, use capabilities may refer not 1420 just to other entries in the same source file (as in System 1421 V) but also to compiled entries in either the system terminfo 1422 directory or the user's $HOME/.terminfo directory.</p> 1423 </li> 1424 1425 <li> 1426 <p>The table-of-entries utility <a href= 1427 "@HOMEPAGE@/man/toe.1m.html"><span class= 1428 "part-name">toe</span></a> makes it easy for users to see 1429 exactly what terminal types are available on the system.</p> 1430 </li> 1431 1432 <li> 1433 <p>X/Open Curses permits most functions it specifies to be 1434 made available as macros as well. ncurses does this</p> 1435 1436 <ul> 1437 <li>to improve performance, e.g., for operations composed 1438 of simpler functions such as cursor movement following by 1439 adding text to the screen,</li> 1440 1441 <li>to simplify the implementation by reusing functions 1442 which use common parameters, e.g., the standard screen 1443 <code>stdscr</code>, and</li> 1444 1445 <li>to provide functions that return values via their 1446 parameters</li> 1447 </ul> 1448 1449 <p>Except for the last case, ncurses provides a non-macro 1450 implementation of the function. If the macro definition is 1451 disabled with <code>#undef</code>, or by defining 1452 <code>NCURSES_NOMACROS</code> the function may be linked (and 1453 its calls will be checked against the prototype).</p> 1454 </li> 1455 1456 <li> 1457 <p>Extensive documentation is provided (see the <em><a href= 1458 "@HOMEPAGE@/ncurses.faq.html#additional_reading">Additional 1459 Reading</a></em> section of the <em><a href= 1460 "@HOMEPAGE@/ncurses.faq.html"><span class= 1461 "main-name">ncurses</span> FAQ</a></em> for online 1462 documentation).</p> 1463 </li> 1464 </ul> 1465 1466 <h2><a name="h2-who-uses" id="h2-who-uses">Applications using 1467 <span class="main-name">ncurses</span></a></h2> 1468 1469 <p>The <span class="main-name">ncurses</span> distribution 1470 includes a selection of test programs (including a few games). 1471 These are available separately as <a href= 1472 "@HOMEPAGE@/ncurses-examples.html">ncurses-examples</a></p> 1473 1474 <p>The ncurses library has been tested with a wide variety of 1475 applications including:</p> 1476 1477 <blockquote> 1478 <dl> 1479 <dt><span class="part-name">aptitude</span> 1480 </dt> 1481 1482 <dd> 1483 <p>FrontEnd to Apt, the debian package manager</p> 1484 1485 <p><a href= 1486 "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> 1487 </dd> 1488 1489 <dt><span class="part-name">cdk</span> 1490 </dt> 1491 1492 <dd> 1493 <p>Curses Development Kit</p> 1494 1495 <p><a href="@WEBSITE@/cdk/">@WEBSITE@/cdk/</a><br> 1496 </p> 1497 </dd> 1498 1499 <dt><span class="part-name">ded</span> 1500 </dt> 1501 1502 <dd> 1503 <p>directory-editor</p> 1504 1505 <p><a href="@WEBSITE@/ded/">@WEBSITE@/ded/</a></p> 1506 </dd> 1507 1508 <dt><span class="part-name">dialog</span> 1509 </dt> 1510 1511 <dd> 1512 <p>the underlying application used in Slackware's setup, 1513 and the basis for similar install/configure applications on 1514 many systems.</p> 1515 1516 <p><a href="@WEBSITE@/dialog/">@WEBSITE@/dialog/</a></p> 1517 </dd> 1518 1519 <dt><span class="part-name">lynx</span> 1520 </dt> 1521 1522 <dd> 1523 <p>the text WWW browser</p> 1524 1525 <p><a href= 1526 "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> 1527 </dd> 1528 1529 <dt><span class="part-name">mutt</span> 1530 </dt> 1531 1532 <dd> 1533 <p>mail utility</p> 1534 1535 <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> 1536 </dd> 1537 1538 <dt><span class="part-name">ncftp</span> 1539 </dt> 1540 1541 <dd> 1542 <p>file-transfer utility</p> 1543 1544 <p><a href= 1545 "https://www.ncftp.com/">https://www.ncftp.com/</a></p> 1546 </dd> 1547 1548 <dt><span class="part-name">nvi</span> 1549 </dt> 1550 1551 <dd> 1552 <p>New vi uses ncurses.</p> 1553 1554 <p><a href= 1555 "https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page"> 1556 https://sites.google.com/a/bostic.com/keithbostic/the-berkeley-vi-editor-home-page</a><br> 1557 1558 </p> 1559 </dd> 1560 1561 <dt><span class="part-name">ranger</span> 1562 </dt> 1563 1564 <dd> 1565 <p>A console file manager with VI key bindings in 1566 <em>Python</em>.</p> 1567 1568 <p><a href= 1569 "https://ranger.github.io/">https://ranger.github.io/</a></p> 1570 </dd> 1571 1572 <dt><span class="part-name">tin</span> 1573 </dt> 1574 1575 <dd> 1576 <p>newsreader, supporting color, MIME</p> 1577 1578 <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> 1579 </dd> 1580 1581 <dt><span class="part-name">vifm</span> 1582 </dt> 1583 1584 <dd> 1585 <p>File manager with vi like keybindings</p> 1586 1587 <p><a href="https://vifm.info/">https://vifm.info/</a></p> 1588 </dd> 1589 </dl> 1590 </blockquote> 1591 1592 <p>as well as some that use <span class= 1593 "main-name">ncurses</span> for the terminfo support alone:</p> 1594 1595 <blockquote> 1596 <dl> 1597 <dt><span class="part-name">minicom</span> 1598 </dt> 1599 1600 <dd> 1601 <p>terminal emulator for serial modem connections</p> 1602 1603 <p><a href= 1604 "https://salsa.debian.org/minicom-team/minicom">https://salsa.debian.org/minicom-team/minicom</a></p> 1605 </dd> 1606 1607 <dt><span class="part-name">mosh</span> 1608 </dt> 1609 1610 <dd> 1611 <p>a replacement for <code>ssh</code>.</p> 1612 1613 <p><a href="https://mosh.org/">https://mosh.org/</a></p> 1614 </dd> 1615 1616 <dt><span class="part-name">tack</span> 1617 </dt> 1618 1619 <dd> 1620 <p>terminfo action checker</p> 1621 1622 <p><a href="@HOMEPAGE@/tack.html">@HOMEPAGE@/tack.html</a></p> 1623 </dd> 1624 1625 <dt><span class="part-name">tmux</span> 1626 </dt> 1627 1628 <dd> 1629 <p>terminal multiplexor</p> 1630 1631 <p><a href= 1632 "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> 1633 </dd> 1634 1635 <dt><span class="part-name">vile</span> 1636 </dt> 1637 1638 <dd> 1639 <p><em>vi-like-emacs</em> may be built to use the terminfo, 1640 termcap or curses interfaces.</p> 1641 1642 <p><a href="@WEBSITE@/vile/">@WEBSITE@/vile/</a></p> 1643 </dd> 1644 </dl> 1645 </blockquote> 1646 1647 <p>and finally, those which use only the termcap interface:</p> 1648 1649 <blockquote> 1650 <dl> 1651 <dt><span class="part-name">emacs</span> 1652 </dt> 1653 1654 <dd> 1655 <p>text editor</p> 1656 1657 <p><a href= 1658 "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> 1659 </dd> 1660 1661 <dt><span class="part-name">less</span> 1662 </dt> 1663 1664 <dd> 1665 <p>The most commonly used <em>pager</em> (a program that 1666 displays text files).</p> 1667 1668 <p><a href= 1669 "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> 1670 </dd> 1671 1672 <dt><span class="part-name">screen</span> 1673 </dt> 1674 1675 <dd> 1676 <p>terminal multiplexor</p> 1677 1678 <p><a href= 1679 "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> 1680 </dd> 1681 1682 <dt><span class="part-name">vim</span> 1683 </dt> 1684 1685 <dd> 1686 <p>text editor</p> 1687 1688 <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> 1689 </dd> 1690 </dl> 1691 </blockquote> 1692 1693 <h2><a name="h2-development" id="h2-development">Development 1694 activities</a></h2> 1695 1696 <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> 1697 from a previous package pcurses, written by Pavel Curtis. Eric S. 1698 Raymond continued development. Jürgen Pfeifer wrote most of 1699 the form and menu libraries.</p> 1700 1701 <p>Ongoing development work is done by <a href= 1702 "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas 1703 E. Dickey has acted as the maintainer for the Free Software 1704 Foundation, which held a <a href= 1705 "@HOMEPAGE@/ncurses-license.html">copyright on ncurses</a> for 1706 releases 4.2 through 6.1. Following the release of ncurses 6.1, 1707 effective as of release 6.2, copyright for ncurses reverted to 1708 Thomas E. Dickey (see the <a href= 1709 "@HOMEPAGE@/ncurses.faq.html#relicensed">ncurses FAQ</a> for 1710 additional information).</p> 1711 1712 <p>Contact the current maintainers at</p> 1713 1714 <blockquote> 1715 <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> 1716 </blockquote> 1717 1718 <p>To join the ncurses mailing list, please write email to</p> 1719 1720 <blockquote> 1721 <a href= 1722 "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> 1723 </blockquote> 1724 containing the line: 1725 <blockquote> 1726 <p><code>subscribe</code> 1727 <em><name>@<host.domain></em></p> 1728 </blockquote> 1729 1730 <p>This list is open to anyone interested in helping with the 1731 development and testing of this package.</p> 1732 1733 <p>Beta versions of <span class="main-name">ncurses</span> are 1734 made available at</p> 1735 1736 <blockquote> 1737 <p><a href= 1738 "https://invisible-island.net/archives/ncurses/current/">https://invisible-island.net/archives/ncurses/current/</a> 1739 and<br> 1740 <a href= 1741 "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a> .</p> 1742 </blockquote> 1743 1744 <p>Patches to the current release are made available at</p> 1745 1746 <blockquote> 1747 <p><a href= 1748 "https://invisible-island.net/archives/ncurses/6.5/">https://invisible-island.net/archives/ncurses/6.5/</a> 1749 and<br> 1750 <a href= 1751 "https://invisible-mirror.net/archives/ncurses/6.5/">https://invisible-mirror.net/archives/ncurses/6.5/</a> .</p> 1752 </blockquote> 1753 1754 <p>There is an archive of the mailing list here:</p> 1755 1756 <blockquote> 1757 <p><a href= 1758 "https://lists.gnu.org/archive/html/bug-ncurses">https://lists.gnu.org/archive/html/bug-ncurses</a> .</p> 1759 </blockquote> 1760 1761 <h2><a name="h2-this-stuff" id="h2-this-stuff">Related 1762 resources</a></h2> 1763 1764 <p>The release notes make scattered references to these pages, 1765 which may be interesting by themselves:</p> 1766 1767 <ul> 1768 <li><a href="@HOMEPAGE@/ncurses-license.html"><span class= 1769 "main-name">ncurses</span> licensing</a></li> 1770 1771 <li><a href="@HOMEPAGE@/ncurses-mapsyms.html">Symbol versioning 1772 in <span class="main-name">ncurses</span></a></li> 1773 1774 <li><a href="@HOMEPAGE@/ncurses-slang.html">Comments on 1775 <span class="main-name">ncurses</span> versus <span class= 1776 "main-name">slang</span> (S-Lang)</a></li> 1777 1778 <li><a href="@HOMEPAGE@/ncurses-openbsd.html">Comments on 1779 <span class="main-name">OpenBSD</span></a></li> 1780 1781 <li><a href="@HOMEPAGE@/tack.html">tack – terminfo action 1782 checker</a></li> 1783 1784 <li><a href="@HOMEPAGE@/tctest.html">tctest – termcap 1785 library checker</a></li> 1786 1787 <li><a href= 1788 "@HOMEPAGE@/ncurses.html#download_database">Terminal 1789 Database</a></li> 1790 </ul> 1791 1792 <h2><a name="h2-other-stuff" id="h2-other-stuff">Other 1793 resources</a></h2> 1794 1795 <p>The distribution provides a newer version of the 1796 terminfo-format terminal description file once maintained by 1797 <a href="http://www.catb.org/~esr/terminfo/">Eric 1798 Raymond</a> . Unlike the older version, the termcap and 1799 terminfo data are provided in the same file, which also provides 1800 several user-definable extensions beyond the X/Open Curses 1801 specification.</p> 1802 1803 <p>You can find lots of information on terminal-related topics 1804 not covered in the terminfo file in <a href= 1805 "https://shuford.invisible-island.net/">Richard Shuford's 1806 archive</a> (<a href= 1807 "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal">original</a>). 1808 The collection of computer manuals at <a href= 1809 "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been 1810 useful.</p> 1811 1812 <div class="nav"> 1813 <ul> 1814 <li><a href="#h2-overview">Overview</a></li> 1815 1816 <li> 1817 <a href="#h2-release-notes">Release Notes</a> 1818 <ul> 1819 <li> 1820 <a href="#h3-library">Library improvements</a> 1821 <ul> 1822 <li><a href="#h4-term-driver">Terminal driver</a></li> 1823 1824 <li><a href="#h4-fixes-library">Other 1825 improvements</a></li> 1826 </ul> 1827 </li> 1828 1829 <li> 1830 <a href="#h3-programs">Program improvements</a> 1831 <ul> 1832 <li><a href="#h4-utilities">Utilities</a></li> 1833 1834 <li><a href="#h4-examples">Examples</a></li> 1835 </ul> 1836 </li> 1837 1838 <li><a href="#h3-database">Terminal database</a></li> 1839 1840 <li><a href="#h3-documentation">Documentation</a></li> 1841 1842 <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> 1843 1844 <li> 1845 <a href="#h3-config-config">Configuration changes</a> 1846 <ul> 1847 <li><a href="#h4-config-major">Major changes</a></li> 1848 1849 <li><a href="#h4-config-options">Configuration 1850 options</a></li> 1851 1852 <li><a href="#h4-config-package">Package 1853 configuration scripts</a></li> 1854 </ul> 1855 </li> 1856 1857 <li><a href="#h3-portability">Portability</a></li> 1858 </ul> 1859 </li> 1860 1861 <li><a href="#h2-features">Features of <span class= 1862 "main-name">ncurses</span></a></li> 1863 1864 <li><a href="#h2-who-uses">Applications using <span class= 1865 "main-name">ncurses</span></a></li> 1866 1867 <li><a href="#h2-development">Development activities</a></li> 1868 1869 <li><a href="#h2-this-stuff">Related resources</a></li> 1870 1871 <li><a href="#h2-other-stuff">Other resources</a></li> 1872 </ul> 1873 </div> 1874</body> 1875</html> 1876