De la couleur dans un Xterm avec un printf
idk
-
aNas10.fr -
aNas10.fr -
Je voudrai afficher du texte en couleur dans un Xterm ! Et bien sur, j y arrive pas!
J'ai bien vu que y a Ncurses, mais ca me plait pas, d'ailleur ca a du mal sur ma red hat. Et apres au joie,bohneur inegalable, je vois qu'on peux faire ca en sortant avec printf des truc comme ca : [33/24m ....;, genial ca marche sous le SHELL, mais pas sous Xterm! Snif ! Bon, si qqun sait comment afficher en couleur dans un Xterm, Merci de me le dire! A++
J'ai bien vu que y a Ncurses, mais ca me plait pas, d'ailleur ca a du mal sur ma red hat. Et apres au joie,bohneur inegalable, je vois qu'on peux faire ca en sortant avec printf des truc comme ca : [33/24m ....;, genial ca marche sous le SHELL, mais pas sous Xterm! Snif ! Bon, si qqun sait comment afficher en couleur dans un Xterm, Merci de me le dire! A++
A voir également:
- De la couleur dans un Xterm avec un printf
- La boite a couleur - Télécharger - Divers Photo & Graphisme
- Changer la couleur de la barre des taches - Guide
- Un mot est caché dans l’en-tête du document. pour le trouver, modifiez sa couleur. - Forum Word
- Excel cellule couleur si condition texte - Guide
- Dans le code de la page, modifiez la couleur de fond de la classe .pix. un code de 4 chiffres doit apparaître dans la grille. lequel ? - Forum Réseaux sociaux
4 réponses
man tgetent et tgetstr:
[...]
#include <termcap.h>
char PC;
char *BC;
char *UP;
short ospeed;
struct tinfo *info;
int
tgetent(char *bp, char *name);
[...]
char *
tgetstr(char *id, char **area);
[...]
The tgetent() function extracts the entry for terminal name into the
buffer at bp. The bp argument should be a character buffer of size 1024
and must be retained through all subsequent calls to tgetnum(),
tgetflag(), and tgetstr().
[...]
man 5 termcap
[...]
AB str Set background colour to #1 using ANSI
escape.
[...]
AF str Set foreground colour to #1 using ANSI
escape.
Ce qui nous donne (sans les gestions d'erreurs):
char *name;
char bp[1024];
char t[4096];
char *area;
char *AB, *AF;
name = getenv("TERM");
tgetent(bp, name);
area = t;
AF = tgetstr("AF", &area);
AB = tgetstr("AB", &area);
En fin de compte dans les chaine AB et AF il y a une chaine de
format qui attends un int:
ESC[4%dm
ESC[3%dm
Pour les numero des couleurs:
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define PINK 5
#define L_BLUE 6
#define NORMAL 7
---------------------------------------------------------
#include <termcap.h>
#include <stdlib.h>
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define PINK 5
#define L_BLUE 6
#define NORMAL 7
int main(void)
{
char *name;
char bp[1024];
char t[4096];
char *area;
char *AB, *AF;
name = getenv("TERM");
tgetent(bp, name);
area = t;
AF = tgetstr("AF", &area);
AB = tgetstr("AB", &area);
printf(AF, GREEN);
printf("bonjour(s)\n");
return (0);
}
------------------------------------------------------------
cc 0 ~>gcc main.c -ltermcap
cc 0 ~>./a.out
--> ecrit bonjour(s) en vert.
--
julien barbier
[...]
#include <termcap.h>
char PC;
char *BC;
char *UP;
short ospeed;
struct tinfo *info;
int
tgetent(char *bp, char *name);
[...]
char *
tgetstr(char *id, char **area);
[...]
The tgetent() function extracts the entry for terminal name into the
buffer at bp. The bp argument should be a character buffer of size 1024
and must be retained through all subsequent calls to tgetnum(),
tgetflag(), and tgetstr().
[...]
man 5 termcap
[...]
AB str Set background colour to #1 using ANSI
escape.
[...]
AF str Set foreground colour to #1 using ANSI
escape.
Ce qui nous donne (sans les gestions d'erreurs):
char *name;
char bp[1024];
char t[4096];
char *area;
char *AB, *AF;
name = getenv("TERM");
tgetent(bp, name);
area = t;
AF = tgetstr("AF", &area);
AB = tgetstr("AB", &area);
En fin de compte dans les chaine AB et AF il y a une chaine de
format qui attends un int:
ESC[4%dm
ESC[3%dm
Pour les numero des couleurs:
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define PINK 5
#define L_BLUE 6
#define NORMAL 7
---------------------------------------------------------
#include <termcap.h>
#include <stdlib.h>
#define BLACK 0
#define RED 1
#define GREEN 2
#define YELLOW 3
#define BLUE 4
#define PINK 5
#define L_BLUE 6
#define NORMAL 7
int main(void)
{
char *name;
char bp[1024];
char t[4096];
char *area;
char *AB, *AF;
name = getenv("TERM");
tgetent(bp, name);
area = t;
AF = tgetstr("AF", &area);
AB = tgetstr("AB", &area);
printf(AF, GREEN);
printf("bonjour(s)\n");
return (0);
}
------------------------------------------------------------
cc 0 ~>gcc main.c -ltermcap
cc 0 ~>./a.out
--> ecrit bonjour(s) en vert.
--
julien barbier
Pas la peine de se prendre la tête avec des termcaps, comme tu le dit avec un printf c'est possible :
exemple :
on peut en mettre 3 séparé par des ;
\033[COL;COL;COLm
les couleurs vont de 30 a 37
les couleurs de fond vont de 40 a 47
les diverses options vont de 0 a 7 (si ma mémoire est bonne)
PS: je sais que le sujet date mais comme c'est le premier sur lequel les gens tombent en général, c'est préférable que la réponse y figure ^^.
exemple :
/* Affichera Hello en violet si ma mémoire et bonne */
printf("\033[34mHello\n");
/* Affichera Hello en rouge sur fond bleu */
printf("\033[45;31mHello");
/* Affichera Hello en rouge sur fond bleu en clignotant */
printf("\033[45;31;5mHello");
on peut en mettre 3 séparé par des ;
\033[COL;COL;COLm
les couleurs vont de 30 a 37
les couleurs de fond vont de 40 a 47
les diverses options vont de 0 a 7 (si ma mémoire est bonne)
PS: je sais que le sujet date mais comme c'est le premier sur lequel les gens tombent en général, c'est préférable que la réponse y figure ^^.