web-dev-qa-db-fra.com

Comment activer la sortie couleur RVB dans un terminal?

J'essaie d'imprimer une chaîne colorée sur un terminal gnome à l'aide de codes d'échappement ANSI, mais bien que cela fonctionne pour les couleurs personnalisées, ou même pour les 256 couleurs supplémentaires, cela ne fonctionne pas avec les codes RVB.

Donc, en simplifiant:

cout << "\033[33m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;5;135m" << '.' << "\033[0m"; # prints with color
cout << "\033[38;2;0;135;0m" << '.' << "\033[0m"; # doesn't work, prints with default color

Comment puis-je sortir quelque chose avec un code de couleur RVB dans le terminal gnome?

Je suis ce lien pour les sorties: code d'échappement ANSI de Wikipedia .

J'ai ajouté:

$ export TERM=xterm-256color

À mon fichier .bashrc pour supporter 256 couleurs et:

$ tput colors

Sorties 256, si c'est important.

5
t.pimentel

Les couleurs RVB ne peuvent pas être utilisées dans le terminal pour les raisons suivantes:

  • Bash ne choisit pas les couleurs de la ligne de commande.
  • Bash ne peut spécifier que les couleurs ANSI.

Les deux raisons ci-dessus sont très étroitement liées. La plupart d'entre eux dépendent de votre écran et de la spécification de couleur ANSI. Si vous utilisez un bon émulateur de terminal, vous pourrez peut-être définir des couleurs RVB personnalisées pour certains codes de couleur ANSI.

Bash en tant que Shell est impuissant quant à ce que l'écran peut faire avec les affichages. Il ne fait que transmettre les mots du terminal à votre écran. L’écran peut décider quoi en faire. L'écran peut décider des couleurs que représentent les codes d'échappement ANSI (si le terminal autorise même les couleurs).

Une solution de contournement consiste à modifier les spécifications de couleur du terminal. Cependant, très peu (je ne sais pas) vous permettra de changer de couleur.

5
Kaz Wolfe

Vous avez besoin de vte> = 0.36 pour que les couleurs vraies fonctionnent dans gnome-terminal. Assurez-vous que votre vte est assez récent, et dans ce cas, votre code devrait fonctionner.

(Remarque: lorsque vous éditez des chaînes codées en dur, comme dans votre exemple d'application, la valeur de $ TERM est nécessairement absolument sans importance. Cela n'a d'importance que si vous utilisez des bibliothèques dont le comportement dépend de cela, comme ncurses.)

1
egmont