Je voudrais changer un programme pour détecter automatiquement si un terminal est compatible couleur ou non, donc quand j'exécute le programme à partir d'un terminal non compatible couleur (disons Mx shell dans (X) Emacs), la couleur est automatiquement éteindre.Comment déterminer si un terminal est compatible couleur?
Je ne veux pas coder en dur le programme pour détecter TERM = {emacs, dumb}. Je pense que termcap/terminfo devrait être en mesure d'aider avec ceci, mais jusqu'ici je n'ai réussi qu'à bricoler ensemble ce (n) extrait de code à l'aide de curses, qui échoue quand il ne trouve pas le terminal:
#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);
}
Ie Je reçois ceci:
$ 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.
$
qui est ... suboptimal.
En dernière analyse, vous ne pouvez pas, car vous ne pouvez pas dire quel type de CRT le terminal est implémenté. –
Je suis intéressé de savoir si le terminal (type) dit qu'il est compatible couleur ou non - pas dans une analyse du spectre de la lumière émanant d'un CRT :-) – asjo