Comment définir terminal couleur d'arrière-plan sur le terminal linux sans utiliser ncurses?
J'ai écrit une console simple programme en C qui utilise la norme ANSI codes d'échappement à la couleur de son texte.
Est-il un moyen de mettre temporairement de l'arrière-plan de l'ensemble du terminal en noir et la police par défaut de couleur gris clair? Cela peut-il être annulé après la fin du programme?
Je préfère éviter d'utiliser ncurses.
Cette question est si dur à lire...que je n'ai pas lu. Veuillez formater votre question.
OriginalL'auteur user1887348 | 2012-12-08
Vous devez vous connecter pour publier un commentaire.
Probablement la solution la plus simple consiste à définir la couleur d'arrière-plan de votre texte avec la norme ANSI:
Par exemple à l'aide de:
vous donnera le texte en bleu sur un fond rouge (vous pouvez l'utiliser pour tester l'effet dramatique, facile de voir les couleurs).
Alors que
sera mis au premier plan pour le blanc et le fond en noir pour la durée de votre programme.
Si vous trouvez que vous obtenez une sorte de vilain zone de transition entre la couleur de fond et le terminal, il suffit d'imprimer un nombre suffisant de retours à la ligne pour essuyer la totalité de l'écran.
L'utiliser dans C, vous aurez évidemment voulez
printf
au lieu deecho
.La page wiki sur les ANSI codes d'échappement a des informations supplémentaires.
vous pouvez accepter ma réponse, cependant, si vous appuyez sur la grosse coche au-dessous de la flèche à côté de ma réponse.
OriginalL'auteur Richard
La façon de faire dépend du terminal de l'utilisateur. Il peut être ANSI, il peut être VT100, il pourrait être une ligne de l'imprimante. ncurses les résumés de cette horreur pour vous. Il utilise une base de données d'informations sur la façon de parler à différents types de terminaux (voir le contenu de $TERME pour déterminer celui qui vous sont actuellement l'aide) sont normalement stockées dans la
/lib/terminfo
ou/usr/share/terminfo
.Une fois que vous regardez dans ces fichiers, vous aurez probablement envie de revoir utilisez pas ncurses, sauf si vous avez des exigences particulières pour l'éviter (système embarqué avec pas assez de stockage, etc.)
Le problème est que, tout en faisant écho hors des constantes comme une réponse suggérée ne fonctionnera pas si vous n'êtes pas à l'aide d'un terminal qui comprend ces codes. Si c'est assez bon, très bien. Mais les bases de données terminfo (et ncurses comme une interface pour eux) existent de sorte que vous n'avez pas à vous soucier de cela.
Ouais, de traiter directement avec le terminal est moins "standard" et portables que d'utiliser une bibliothèque qui résumés, ce n'est plus. Le fait que vous pouvez la borne de sortie spécifique des codes d'échappement avec une fonction standard de ne pas faire ce que vous faites, standard ou portable.
OriginalL'auteur rjek