Hi,
Not sure how relevant it is after almost 3 years. I came across this thread using a Google search, and thought you might be interested:
Recently the
Kitty terminal emulator has added support for undercurl as well as colored underline/undercurl, and
VTE (the terminal emulator widget behind GNOME Terminal, Terminator, Tilix and quite a few more) also followed. I've also filed feature requests for
iTerm2 and
Konsole.
Apparently vim and neovim have already / are about to support these, see e.g.
vim undercurl,
vim color,
neovim.
Undercurl:The new SGR 4:3 (\e[4:3m) attribute, strictly with a colon as separator, was introduced to start a curly underline.
In the mean time, 4:0, 4:1 and 4:2 were also added as aliases for the standard 24 (turn off all kinds of underlining), 4 (single underline) and 21 (double underline), respectively.
At some point in the future, probably 4:4 and 4:5 could also stand for dotted and dashed underlines in some order (these are the five types of underlining supported by HTML/CSS).
Colors:Tthe new SGR 58 (just as you proposed in this thread) and 59 sequences specify the color of the underline, following the pattern of 38 and 39. That is, 58;5;idx for an entry of the 256-color palette, or 58;2;r;g;b for direct RGB. There's no shortcut notation for the first 16 entries (corresponding to SGR 30-37 and 90-97), use the 256-color mode with indices of 0-15 instead.
59 reverts to the default, that is, the underline's color auto-following the text color.
In case you're short of bits, I believe it's okay to drop some precision, e.g. store only 4 bits per color channel. We were also considering this in the VTE bug.
Cheers,
egmont