Existe-t-il un moyen de modifier les couleurs utilisées dans les consoles TTY sous Linux?


14

Par "modifier les couleurs", je veux dire quelque chose comme changer le noir de #000000en #111111et par "console TTY", je veux dire ce que vous obtenez lorsque vous faites Ctrl+ Alt+ à F1partir de X11, pas un émulateur de terminal comme xtermou urxvt.

J'utilise Arch Linux, mais je pense que cela a plus à voir avec le programme fournissant le TTY ( agetty, je pense).


Les terminaux ne fonctionnent pas en termes de couleurs hexadécimales - ils utilisent des codes de couleur comme ceux trouvés dans "/ etc / shell-colours".
new123456

1
@ new123456 - Je n'ai aucun fichier appelé "shell-colours" n'importe où sous/
Austin Hyde

Huh. Vous ne précisez pas votre distribution ici - je gère Zenwalk, donc votre distribution peut varier. Recherchez pour color in bashobtenir une liste de toutes les évasions.
new123456

2
@ new123456 - J'ai mentionné que j'utilisais Arch, et je ne cherche pas de séquences d'échappement bash pour les couleurs, comme \e[0;30mpour le noir, je cherche un moyen de personnaliser la couleur réelle pour chaque couleur nommée.
Austin Hyde

1. Désolé - je regarde d'abord les tags;) 2. Juste des informations, pas entièrement pertinentes pour la question mais pertinentes pour le domaine.
new123456

Réponses:


3

La commande setterm est ce que vous recherchez.

setterm -foreground black -background white

ÉDITER

Non, il n'y a aucun moyen de modifier les noms des couleurs comme vous l'avez demandé. Ils ne sont référencés de cette façon nulle part dans curses, terminfo ou le terminal lui-même. Vous pouvez changer les définitions des index de couleur (0-15 je pense) en éditant la source du noyau et en recompilant.


Non, ce n'est pas ce que je recherche. Je veux changer les définitions des couleurs, pas la couleur de premier plan et d'arrière-plan.
Austin Hyde

13

C'est tout à fait possible et c'est quelque chose que je fais dans ma configuration Arch.

Vous pouvez déposer quelque chose comme ça dans un script shell et l'exécuter lors de la connexion:

if [ "$TERM" = "linux" ]; then
    echo -en "\e]P0151515" # Black
    echo -en "\e]P1ac4142" # Red
    ...
    echo -en "\e]PEac4142" # Bright Cyan
    echo -en "\e]PFac4142" # Bright White
    clear # Clear artifacts
fi

Les \e]P0to \e]PF(base 16) sont les séquences d'échappement dont vous avez besoin pour définir les 16 couleurs (8 demi-lumineuses, 8 lumineuses). Après quoi, vous mettez votre couleur de remplacement souhaitée, par exemple 151515.


ne semble pas fonctionner dans ubuntu 16.04 avec bash fwiw
G Gordon Worley III

2

C'est la meilleure commande que je connaisse:

setterm -clear all -foreground green -bold -store

Pour autant que je sache, vous ne pouvez avoir que 8 couleurs différentes. Peut-être un peu plus en utilisant Bright devant le Basic 8?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.