Instantly share code, notes, and snippets.


Feature Reporting in Terminal Emulators

Many popular utilities or applications require a terminal to run. In order to provide a proper experience to their users, these apps need to know certain details about the terminal, e.g. need to know how to turn on certain modes, or whether a particular feature is supported at all.

50+ years after the appearance of hardware terminals, and 30+ years after the appearance of graphical terminal emulators, apparently the area of feature reporting is still not solved. Existing methods all have noticeable limitations, which results in an ecosystem where user facing incorrect behavior due to misdetection is not uncommon at all.

Certain recent changes to Unicode made this more prominent. Version 9.0 changed the width of many codepoints, a backwards incompatible change that caused plenty of breakages until everyone caught up. Version 8.0 added Emoji support including the VS16 emoji variation sequence, and version 9.0 ([UAX #11 version 31](