Cambiar colores en consola/terminal virtual

Cambiar colores en consola/terminal virtual

¿Hay alguna forma de modificar todos los colores disponibles en la consola/terminal virtual?
Por consola, me refiero a lo que obtienes después de presionar CTRL + ALT + F1 y nada como xterm o urxvt. Entonces, supongo que eso significaría alterar

Puedo cambiar 8 de los colores usando secuencias de escape como esta:

echo -en "\e]PY######"

donde Y es la identificación numérica del color (0 a 7) y ###### es el valor del color hexadecimal.

Mi objetivo final es trasladar el esquema de color solarizado a la consola, porque quiero lucir vim de todos modos independientemente de si estoy en la consola o en la X.

¿Alguna sugerencia sobre esto?

htop en xterm:
htop en xterm, colores solarizados

htop en consola, después de aplicar los 8 colores:
htop en consola, después de aplicar los 8 colores pude

Respuesta1

La consola TTY framebuffer no tiene forma de tener más de 8 a 16 colores sin piratear el kernel; consulte esta cita: "Aunque el frame-buffer de Linux admite 256 (o más) colores, el controlador de la consola Linux no; por lo tanto, las aplicaciones de la consola aún son limitado a 16 colores en la consola Linux, con frame-buffer o no."

Entonces no puedes tener más de 16 u 8 colores. Hay un tutorial sobre cómo cambiar los colores del terminal framebuffer (también conocido como ctrl+alt+1) usando los mismos comandos que describió en ~/.bashrc:colores en tutorial TTY

Respuesta2

Pruebe esta función bash en la consola. Oportunamente, no funciona en una terminal X (creo que por las pestañas). Consulte especialmente los tres archivos utilizados por última vez, a saber

/sys/module/vt/parameters/default_red
/sys/module/vt/parameters/default_grn
/sys/module/vt/parameters/default_blu

clr () {
    clear # GFX bug otherwise
    setterm -regtabs 4
    Color_names="bla red gre yel blu mag cya whi"
    Color_arr=($Color_names)

    tput setaf 4
    tput setab 7
    echo -n "            normal             "
    tput sgr0

    echo -n " "

    tput setaf 7
    tput setab 4   
    echo "            bright             "

    tput sgr0
    for cmd in sgr0 bold
    do
        tput $cmd
        for m in 0 1 2 3 4 5 6 7
        do
            tput setaf $m
            echo -n ${Color_arr[$m]}" "
        done
    done
    echo

    tput sgr0
    cat /sys/module/vt/parameters/default_red \
        /sys/module/vt/parameters/default_grn \
        /sys/module/vt/parameters/default_blu | sed s/,0/", "/g | \
                                                sed s/^0/" "/g | \
                                                tr "," "\t"
}

Editar en respuesta al comentario

Por ejemplo, cambie el segundo dígito en el archivo verde ( sys/module/vt/parameters/default_grn) a 170: esto le dará al segundo color (con índice 1) tanto verde como rojo, y nada de azul (al menos en mi caso, porque tengo el dígito correspondiente en default_red 170, y 0en default_blu).

Ahora, escribe tput setaf 1; echo hi. Aquí le pones el color de primer plano al color con índice 1 (el que cambiaste), luego lo imprimes. (Tenga en cuenta la línea con dos puntos para separar los comandos; de lo contrario, el mensaje puede restablecer el tputintervalo).

Si te aparece igual que siempre, intenta echo -n '\033]R'y luego tputvuelve a marcar la línea. Ahora,ambosLos "hola" deberían ser algo amarillos.

Avísame si logras que funcione (o no).

información relacionada