github dankamongmen/notcurses v2.4.9
v2.4.9—bears that dance

latest releases: v3.0.9, v3.0.8, v3.0.7...
2 years ago

The judge set the bottle on the bar. Hear me, man, he said. There is room on the stage for one beast and one alone. All others are destined for a night that is eternal and without name. One by one they will step down into the darkness before the footlamps. Bears that dance, bears that dont.—Cormac McCarthy, Blood Meridian


This is the final release planned for the 2.x.x series. The next release will be 3.0.0, shipping SONAME 3. This will be an API break, as well; all functionality currently marked deprecated will be removed. So long as you are not using deprecated functions, impact ought be minimal, perhaps requiring only a recompile.


  • ncvgeom now has its rcellx and rcelly fields filled in, providing the rendered dimensions in terms of cells. This is thus immediately available to callers of ncdirectf_geom(). The new function ncvisual_geom() replaces ncvisual_blitter_geom(), which has been deprecated, and fills in an ncvgeom with this and other information.
  • notcurses_mice_enable() and notcurses_mice_disable() have been added, replacing notcurses_mouse_enable() and notcurses_mouse_disable(). notcurses_mice_disable() is a static inline wrapper for notcurses_mice_enable(NCMICE_NO_EVENTS). notcurses_mice_enable() accepts a bitmask over types of mouse event. Mouse movement without a button pressed can now be tracked with NCMICE_MOVE_EVENT. For the old behavior (report only when a button is pressed), use notcurses_mice_enable(NCMICE_BUTTON_EVENT).
  • On transitions between ncplanes during rendering, on terminals known to have complex handling of glyphs, Notcurses will now sometimes issue hpa ("horizontal position absolute") control sequences that ought not be necessary, but ought normalize position when Notcurses and the terminal disagree about glyph width. The number of sequences thus issued is available as the new stat hpa_gratuitous. This fixes some longstanding bugs in e.g. the [whiteout] and [uniblock] demos.
  • Some improvements to ZWJ handling and Unicode segmentation.
  • Clean up ncdirect_cursor_yx thanks to new input system.
  • Only send XTMODKEYS if the Kitty keyboard protocol is not available.
  • Prefer XTVERSION results to the TN value of XTGETTCAP.
  • Fix bug when width was 2 in ncdirect_box().
  • [mojibake] add the Unicode 7.0 emoji, which were missing for whatever reason.
  • Eliminate recursion in ncplane_polyfill_yx() and ncvisual_polyfill_yx(), fixing bug on environments with small stacks.
  • Stop issuing LTR forcings following RTL bidi Unicode.
  • FIx regression in [fission] demo that drew background over previous material
  • Cap size of orca in [intro] demo at 1/4 width, 1/3 height of screen
  • Fix small memory leak in nctree
  • Wait for input at end of procroller PoC
  • Use NCSCALE_STRETCH instead of NCSCALE_NONE in some unit tests so they work on small screens
  • Use rgb with XTGETTCAP to detect DirectColor unambiguously on supporting terminals
  • Properly flush the clear before completing raster in notcurses_refresh()
  • Use u7 for cursor location reports on Microsoft Windows

Don't miss a new notcurses release

NewReleases is sending notifications on new releases.