Comment by JdeBP
Comment by JdeBP 11 hours ago
It seems to have supported UTF-8 for at least a decade. Although it went the full-on ECMA-35 route of making that an optional switchable character set.
There was an issue back in 2016 where, ironically, it was coming up in Latin-1 mode with everything else around it talking UTF-8, and there have been other similar impedance mis-matches over the years. But they seem to hinge on it actually having UTF-8 support.
* https://github.com/cosmos72/twin/issues/4
* https://github.com/cosmos72/twin/issues/7
* https://github.com/cosmos72/twin/issues/8
However: There was no 256 colours support as of 2021.
* https://github.com/cosmos72/twin/issues/30
And in some places it even required IBM code page 437.
* https://github.com/cosmos72/twin/issues/22
And some of the doco seems to have never been incorporated.
Author here :)
I've been using Twin as my everyday terminal emulator and terminal multiplexer since ~2000, slowly adding features as my free time - and other interests - allowed.
As someone pointed out, the look-and-feel reminds Borland Turbo Vision. The reason is simple: I started writing in in the early '90s on DOS with a Borland C compiler, and I used the Borland Turbo Vision look-and-feel as a visual guideline (never actually looked at the code, though).
The porting to linux happened in 1999 (it was basically dormant before that), and Unicode support was progressively added around 2015-2016 (initially UCS-2 i.e. only the lowest 64k codepoints, then full UTF-32 internally, with terminal emulator accepting UTF-8). There are still some missing features, most notably: no grapheme clusters, no fullwidth (asian etc.) support, no right-to-left support.
Right now I'm adding truecolor support (see https://github.com/cosmos72/twin/tree/truecolor) - it's basically finished, I'm ironing out some remaining bugs, and thinking whether wire compatibility with older versions is worth adding.
And yes, documentation has been stalled for a very long time.
Retrospectively, I should have switched C -> C++ much earlier: lots of ugly preprocessor macros accumulated over time, and while I rewrote the C widget hierarchy as C++ classes, several warts remain.