capabilities: What capabilities describe current terminals
For #8 (Feature Reporting in Terminal Emulators) we need some kind of idea what features describe current terminal emulators.
I believe we should try to condense the features down to a manageable set. How far do we want to go back? Or should this just cover modern still maintained terminal implementations that can themselves expose their capabilities?
I think we should just set some standards that just exposing this information should imply:
- Can properly parse valid DCS, SOS, CSI, OSC, APC and PM sequences and ignores unknown sequences.
- Has support for basic sequences like DEL, BS, TAB, LF, CR, Save Cursor (DECSC), Restore Cursor (DECRC), Index (IND), Next Line (NEL), Reverse Index (RI), Cursor Up/Down/Right/Left, Set Cursor Position (CUP), Erase Display 0-2, Erase Line 0-2, Insert Line (IL), Delete Line (DL), Delete Character (DCH), Scroll Up (SU), Scroll Down (SD), Erase Character (ECH), Primary Device Attributes (DA1), Cursor Vertical Position Absolute (VPA), Select Graphic Rendition (SGR), Request Operating Status, Request Cursor Postion Report (CPR)
- Has support for the basic attributes (SGR) like bold, underline, inverse, basic colors (8 + bright 8), color reset,
- Has support for modes: 4 (Insert Mode (IRM)), ?7 (Wraparound Mode (DECAWM)), ?25 (Cursor visible (DECTCEM))
Traditional flags might include:
- background color erase
- "DEC private" Request Cursor Postion Report (?) (DECXCPR)
- faint
- italic
- blink
- double underline
- overline
- invisible
- strikethrough
- 256 color mode
- 88 color mode?
- cursor shape and blink control
- mouse reporting (1000 and 1006 ideally)
- Alternate Screen Buffer (1049?)
- Bracketed Paste Mode
Fancy new flags might include:
- RGB direct color (would need some exact definition)
- curly underlining
- decoration color
And likely a lot more. What are applications interested in? Where do modern implementation differ substantially?
Anything in the basics list that common implementations don't support or that could be hard to implement?