|
- $Id$
-
- o Colour does not work with all backends and all terminals. I tested
- many terminal emulators and tried to summarise which combinations
- worked properly and which ones did not.
-
- From termcap(5):
-
- set_a_background setab AB Set background
- color to #1, using
- ANSI escape
- set_a_foreground setaf AF Set foreground
- color to #1, using
- ANSI escape
- From the xterm terminfo:
-
- setab=\E[4%p1%dm, setaf=\E[3%p1%dm
-
- From the xterm-16color terminfo:
- (http://www.sct.gu.edu.au/~anthony/info/X/Xterm_xf86.terminfo)
-
- setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm,
- setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm,
-
- These values can be simply retrieved with a tigetstr() call.
-
- o I tested the following terminals:
-
- name $TERM $COLORTERM
- ------------------------------------------
- Linux console linux
- pterm xterm
- aterm xterm rxvt-xpm
- wterm xterm wterm-xpm
- Eterm xterm Eterm
- xterm xterm
- gnome-terminal xterm
- konsole xterm
- mlterm mlterm
- uxterm xterm
-
- o In most terminals, \e[3xm and \[4xm respectively set the foreground
- and background colours. x is a colour between 0 and 7 or the value
- 9 for default colour (may be transparent).
-
- \e[0m sets everything to normal, \e[1m sets bold, \e[5m sets blink
- and \e[7m sets inverse video.
-
- In ncurses, only 64 colour pairs are created, and A_BOLD (\e[1m) and
- A_BLINK (\e[5m) are used for foreground/background colour highlighting,
- hence creating 256 possible colour pairs.
-
- Different tests of blue on yellow:
-
- for invert in '' '\e[7m'; do
- for blink in '' '\e[5m'; do
- for bold in '' '\e[1m'; do
- echo -ne "$bold$blink$invert"'\e[33m\e[44m'hop'\e[0m '
- echo "($bold$blink$invert)"
- done
- done
- done
-
- Successfully works on:
- + Linux console
- + pterm
- + Eterm
- + aterm, wterm, rxvt
-
- Almost works on:
- + xterm (bright bg only works when fg is bright and then inverted,
- but then fg is not bright)
-
- Fails on:
- + mlterm (no bright colours, neither fg nor bg)
- + gnome-terminal (no bright bg)
- + konsole (no bright bg, $blink really blinks)
-
- o In an XTerm-compatible terminal, \e[9xm sets bright foreground
- and \e[10xm bright background colours. Documentation on this can be
- found at http://ftp.xfree86.org/pub/XFree86/4.2.1/doc/ctlseqs.TXT .
- Unfortunately all terminals don't support these escape sequences. Here
- is a testcase:
-
- for fgpre in 3 9; do for fg in 0 4 2 6 1 5 3 7; do
- for bgpre in 4 10; do
- echo -ne '\e['$fgpre$fg'm'
- for bg in 0 4 2 6 1 5 3 7; do echo -ne '\e['$bgpre$bg'm# '; done
- echo -ne '\e[0m '
- done
- echo ''
- done; echo ''; done
-
- Successfully tested on:
- + gnome-terminal
- + konsole
- + xterm
- + pterm
-
- Failed (\e[9x and \e[10x don't do anything) on:
- + Eterm
- + aterm, wterm, rxvt
- + mlterm
- + Linux console
-
- o How to draw bright colours on any terminal?
-
- '\e[93;104m' -> bright yellow on bright blue
- doesn't work on mlterm, gnome-terminal, konsole
-
- '\e[5;1;33;44m' -> bright yellow on bright blue
- doesn't work on mlterm, aterm/wterm/rxvt, Eterm, console
-
- '\e[5;1;33;44;93;104m' -> bright yellow on bright blue
- works on gnome-terminal, xterm, pterm, aterm/wterm/rxvt, console
- doesn't work on konsole
-
- o S-Lang:
-
- 256 character pairs are definable, but only 128 can be used. This is
- because slsmg.c's This_Color variable uses its 8th bit to indicate an
- alternate character set. Replacing a few 0x7F with 0xFF in sldisply.c
- works around the problem but gets rid of the alternate charset.
-
- o MS-DOS: all bright colours, bright backgrounds, and bright combinations
- work using <conio.h>. No need to kludge anything.
|