Check out my first novel, midnight's simulacra!

Terminfo: Difference between revisions

From dankwiki
No edit summary
Line 1: Line 1:
libterminfo provides something of an abstraction layer over various terminals; its support for old physical terminals is especially rich and essential. Some will tell you that the introduction of the ANSI standards have rendered terminfo unnecessary; they lie. With that said, it is not perfect, nor complete.
Terminal differences that aren't really handled in terminfo include:
Terminal differences that aren't really handled in terminfo include:



Revision as of 00:04, 3 July 2021

libterminfo provides something of an abstraction layer over various terminals; its support for old physical terminals is especially rich and essential. Some will tell you that the introduction of the ANSI standards have rendered terminfo unnecessary; they lie. With that said, it is not perfect, nor complete.

Terminal differences that aren't really handled in terminfo include:

  • Precise mechanisms of setaf/setbf and interactions with palette-indexed color
  • Whether ANSI 39 "Default foreground color" / ANSI 49 "Default background color" can be used distinctly (you just get op, often defined as op=\E[39;49m
  • Strikethrough (sgr 9)
  • Kitty's weird replacement of RGB matching the default background color
  • Ordering of x/y coordinates when retrieving cursor location (this might be u6?)

Desired additions

  • A string which can match the terminal's reply to XTVERSION, to test whether we've got a terminfo database which doesn't correspond to the terminal we're actually using.
  • RGB default background discovery query
  • Individual enable/disable for each style. In particular, the ANSI CSI 22 m escape that disables bold/dim ought have a terminfo entry.
  • XTPOPCOLORS/XTPUSHCOLORS
  • An abstraction over DECSDM

Community extensions

These capabilities are not described in the most recent terminfo man page at the time of this writing, but are more or less widespread.

  • smxx/rmxx begin and end strikeout mode (terminfo has os, a boolean capability indicating that the terminal supports strikeout)
  • Smulx/rmulx begin and end extended underline mode (supports multiple underline forms)
  • Su scrolls up some number of lines
  • Sync Synchronized Update Mode (currently discovered via $2026 query) header and footer
    • \E[?2026%?%p1%{1}%-%tl%eh