Я хотел бы изменить программу, чтобы автоматически определять, поддерживает ли терминал цветопередачу или нет, поэтому, когда я запускаю указанную программу из не-цветного терминала (скажем, Mx shell in (X) Emacs), цвет автоматически выключен.Как определить, совместим ли терминал с цветом?
Я не хочу жестко программировать программу для обнаружения TERM = {emacs, dumb}.
Я думаю, что termcap/terminfo должен быть в состоянии помочь с этим, но до сих пор мне удалось только совместить этот (n) проклятия, используя фрагмент кода, который плохо работает, когда он не может найти терминал:
#include <stdlib.h>
#include <curses.h>
int main(void) {
int colors=0;
initscr();
start_color();
colors=has_colors() ? 1 : 0;
endwin();
printf(colors ? "YES\n" : "NO\n");
exit(0);
}
Т.е. Т.е. Я получаю это:
$ gcc -Wall -lncurses -o hep hep.c
$ echo $TERM
xterm
$ ./hep
YES
$ export TERM=dumb
$ ./hep
NO
$ export TERM=emacs
$ ./hep
Error opening terminal: emacs.
$
который ... субоптимальный.
В конечном счете вы не можете, потому что вы не можете сказать, с каким ЭЛТ-терминалом реализован терминал. – 2010-03-17 20:01:47
Меня интересует, говорит ли терминал (тип), что он способен к цвету или нет - не в анализе спектра света, исходящего из ЭЛТ :-) – asjo