Color your terminal's output

Jens Mueller jens.k.mueller at gmx.de
Sun Oct 9 03:32:52 PDT 2011


Johannes Pfau wrote:
> 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

That's how it seems to be.

> I'd say:
> Try to load curses at runtime, if that fails, fall back to simple
> non-colored text output.

I'd better throw an exception.

> 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

Nice idea. Thanks.

Jens


More information about the Digitalmars-d mailing list