Ultrix-11

Peter Corlett abuse at cabal.org.uk
Thu Aug 26 06:24:50 CDT 2021


On Wed, Aug 25, 2021 at 12:04:34PM -0400, Douglas Taylor via cctalk wrote:
[...]
> In the video on youtube and in my experience the screen formating codes
> seem to be incorrect.  You can see this in the video when a man page is
> brought up.  The bolding does not occur.  I get the same result after
> installing.  The same with vi, it doesn't work in the video and doesn't
> work after installation.  I've tried Teraterm, putty, xterm all with the
> same result.  Haven't tried an actual terminal yet.  What was your
> experience?

Terminal styling control codes are hit-and-miss even when exclusively using
modern tools. These days, I pretty much exclusively use iTerm2 as my
terminal emulator, which has a bewildering array of compatibility-tweaking
controls to fiddle with, because everything seems to interpret the alleged
standards differently.

When I was relatively new to Linux I just put teminal oddities down to me
not knowing what I was doing and configuring it wrong, but then had the
opportunity to connect a real VT100 to it. "export TERM=vt100" is all that's
needed, right? There were *loads* of rendering errors, and I got my first
lesson into how well-tested Linux's termcap/terminfo database was.

Fast-forward a quarter-century and our terminal emulators are expected to
handle Unicode, which brings variable-width characters to our fixed-grid
terminal emulators, yet not break too badly if the endpoint is not
Unicode-aware and sends something like Latin-1 instead.

Bold and so on are set via SGR ("Select Graphic Rendition") sequences, and
Wikipedia gives a summary at
<https://en.wikipedia.org/wiki/ANSI_escape_code#SGR_(Select_Graphic_Rendition)_parameters>.
Here's a quick bash one-liner to display them on your terminal:

for i in $(seq 1 127) ; do printf '\033[%dm SGR %d \033[0m\n' $i $i ; done

(Progressively reduce that 127 if your terminal doesn't have scrollback and
you can't see the earlier entries.)

My *terminal* (i.e. iTerm2) supports 1-5, 7, 9, 30-39, 40-49, 90-97 and
100-107, i.e. bold, dim, italic, underline, blink, inverse, strikethrough,
and all of the colours.

However, a lot of useful software includes its own nested terminal emulator,
and support is less good: connecting to a remote server using mosh(1) loses
dim and strikethrough; tmux(1) turns italic into inverse, except on FreeBSD
where it also loses dim, blink and strikethrough and mysteriously gives me
another underline at 21 (probably due to it knowing about double-underline,
but doing a substitution for the benefit of my terminal which doesn't). And
if I use "watch -dc" to run a command repeatedly and highlight the changes,
it only supports the 8 basic colours.

If you test your own systems you may well come up with different results,
because this nested emulation relies on termcap/terminfo databases knowing
about the full capabilities of your terminal (MacOS doesn't include
sitm/ritm for italic, for example) and TERM being set correctly at each
level of nesting, so good luck with that.



More information about the cctalk mailing list