Color your terminal's output

Johannes Pfau spam at example.com
Sat Oct 8 02:54:36 PDT 2011


Jens Mueller wrote:
>Trass3r wrote:
>> >You could use ANSI codes on posix to avoid a dependency on curses:
>> >http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
>> >But I think using curses is ok. ncurses is MIT licensed and can be
>> >used as a dynamic library, so I don't think there are license
>> >problems.
>> >
>> >However, I'd recommend to load ncurses dynamically with dlopen/dlsym
>> >and fallback to simple text output if the ncurses library cannot be
>> >loaded.
>> 
>> +1
>> There shouldn't be a hard dependency on curses.
>
>I had the impression that even though there is this standard how do I
>know that I have a standard-compliant terminal. Can I just assume this?
>I started using curses because I had the impression there may be
>non-standard terminals. But this seems to be minor issue. I will change
>this if people are happy with Windows and ISO/IEC 6429 compliant
>terminals only.
>Thanks.
>
>Jens

AFAIK the capabilities of a terminal are found using the terminfo
database:
http://en.wikipedia.org/wiki/Terminal_capabilities
But it seems there's no standard stand-alone library to access this
database. Curses seems the only simple way to access this database, so
I'd say:
Try to load curses at runtime, if that fails, fall back to simple
non-colored text output.

BTW: you could also use isatty (http://linux.die.net/man/3/isatty) to
detect if stdout has been redirected and disable color output in that
case.

For windows:
https://forums.embarcadero.com/thread.jspa?threadID=21194
or
http://msdn.microsoft.com/de-de/library/f4s0ddew(v=vs.80).aspx
-- 
Johannes Pfau



More information about the Digitalmars-d mailing list