Poner fondo blanco en emulador de terminal bash en Debian 9



  • Un cordial saludo a todos/as.

    Quizás me podáis ayudar.

    Estoy siguiendo esta guía de Alejandro:
    https://hardlimit.com/guia-servidor-en-debian/

    Tengo instalado Debian 9 sin entorno gráfico y quiero que la consola (bash) tenga el fondo blanco con las letras negras, pero no hay manera, cuando configuro blanco con setterm u otro tipo de comandos, el blanco no es blanco, sino gris.

    Al aplicar el comando:

    man bash

    al final del texto indica GNU Bash 4.4

    En el foro exDebian he abierto un tema para ver si alguien sabe como hacerlo, y nada.
    https://exdebian.org/foro/poner-fondo-de-color-blanco-en-bash-debian-930-net-install

    También en la lista de correo de Debian en español:
    https://lists.debian.org/debian-user-spanish/2018/01/msg00016.html

    En alguna captura de la guía tiene la consola con el fondo blanco.

    https://hardlimit.com/wp-content/uploads/2017/08/debian-9-ssh-login.png

    Si alguien sabe como hacerlo, le agradecería la ayuda.

    Gracias de antemano.

    Nota: Tras escribirle un email a Alejandro me ha pedido que hiciera la consulta aquí, para que os podáis beneficiar todos/as de la respuesta(s).

    Editado


  • Administrador

    @bienve En el caso concreto de esa guía, se usa Konsole como emulador de la consola (el de KDE 4 para ser más específicos). Este permite configurar perfiles pudiendo elegir el color del fondo y el texto:

    Konsole fondo blanco

    Cada emulador tiene su propia configuración y usando Debian es más que probable que no estés usando KDE o Plasma. ¿Sabes qué emulador usas?



  • Gracias cobito por tu aportación.

    Estoy usando Debian 9 sin entorno gráfico, y el emulador de terminal que usa es GNU Bash 4.4, según indica al final el texto que muestra al aplicar el comando man bash.


  • Administrador

    @bienve Prueba con esto: echo -en "\e]P0ffffff"

    · -en habilita los caracteres de escape
    · \e] es el carácter de escape
    · P0 marca el espacio de color (de 0 a F)
    · ffffff es el blanco más brillante. Son los niveles RGB de 8 bits por canal en hexadecimal.

    Cuando lo hayas escrito, limpia la pantalla con clear.



  • @cobito funciona perfectamente, muchas gracias.

    Con toda la información que he ido analizando estos días, y con las aportaciones que me han hecho también en el foro de exDebian ya puedo personalizarlo como quería.

    Lo único que falta es que los cambios realizados en el color sean permanentes, porque cada vez que reinicio tengo que meter de nuevo el código.



  • Solucionado.

    Explicación.

    De todo esto:

    if [ "$TERM" = "linux" ]; then
    echo -en "\e]P0232323" #black -> this is the background color as well.
    echo -en "\e]P1803232" #darkred
    echo -en "\e]P25b762f" #darkgreen
    echo -en "\e]P3aa9943" #brown
    echo -en "\e]P4324c80" #darkblue
    echo -en "\e]P5706c9a" #darkmagenta
    echo -en "\e]P692b19e" #darkcyan
    echo -en "\e]P7e5e5e5" #lightgray
    echo -en "\e]P8222222" #darkgray
    echo -en "\e]P9982b2b" #red
    echo -en "\e]PA89b83f" #green
    echo -en "\e]PBefef60" #yellow
    echo -en "\e]PC2b4f98" #blue
    echo -en "\e]PD826ab1" #magenta
    echo -en "\e]PEa1cdcd" #cyan
    echo -en "\e]PFdedede" #white -> this is the foreground color as well.
    clear #repaint the whole background with the new color
    fi

    Nos fijamos en "\e]P0 y "\e]P7. Los 6 dígitos siguientes se corresponden con el código de color hexadecimal, donde:

    P0 es el color para el background (fondo), que por defecto es el código hexadecimal: 232323
    P7 es el color para el foreground (texto), que por defecto es el código hexadecimal: e5e5e5
    

    Cuando indicamos:

    setterm --inversescreen on

    lo que hacemos es invertir P0 y P7, de modo que el fondo pasa a ser el gris (e5e5e5) y el texto pasa a ser el negro (232323).

    Cuando indicamos cualquier otro comando de los que hemos analizado haciendo referencia al blanco, mediante white o los códigos numéricos, lo que hace es llamar a P7, y como es gris, pues nunca muestra el blanco.

    De modo que si queremos un fondo blanco con letras negras, buscamos primero en código hexadecimal el tipo de blanco y de negro que queremos. Para ello estos recursos son de utilidad:

    https://es.wikipedia.org/wiki/Colores_web
    https://www.w3schools.com/colors/colors_hexadecimal.asp
    

    Atención: es importante hacer los cambios de color en un orden en que el contraste del fondo y el texto sea legible, o directamente hacer el cambio de P0 y P7 a la vez.

    Como ejemplo utilizaré para P0 el blanco: FFFFFF, y para P7 el negro: 232323. El código hexadecimal puede estar escrito en minúscula y/o mayúscula.

    echo -en "\e]P0FFFFFF" echo -en "\e]P7232323"

    y si no cambia de inmediato ejecutamos:

    clear

    Funciona correctamente en Debian 9 y en CentOS 7.

    Actualización:

    Si queremos que los cambios de color estén por defecto al reiniciar, seguiremos los siguientes pasos:

    Ejecutamos

    ls -a

    Nos mostrará entre otros archivos, el .bashrc y el .bash_profile (este último en Debian 9 yo no lo tenía)

    Ahora editamos o creamos el .bash_profile

    Para editarlo:

    nano ~/.bash_profile

    Para crearlo:

    nano .bash_profile

    ¿Y qué escribimos dentro?, pues depende de cuanto queramos personalizar el bash, podemos desde introducir todo el código que he citado arriba (que afecta desde P0 hasta PF), o para el ejemplo que he indicado en esta solución podemos escribir solo

    echo -en "\e]P0FFFFFF"
    echo -en "\e]P7232323"
    clear

    Guardamos el archivo con Ctrl+O, aceptamos y Ctrl+X para salir de nano. Reiniciamos la máquina y listo.

    A mi me funciona sin darle permisos de ejecución: chmod +x \.bash_profile

    Si posteriormente queremos editar los colores de P0, P7 u otras P, editamos el archivo .bash_profile

    Gracias a todos por vuestras aportaciones (@cobito y compañeros de exDebian).

    Saludos


  • Administrador

    Gracias por la apotación @bienve.

    Para iniciar comandos al arranque de una sesión, puedes intentar editando el archivo .bash_profile que encontrarás en tu carpeta personal. Ahí sólo tienes que incluir los comandos que quieras ejecutar.



  • @cobito gracias de nuevo, pero no tengo el archivo .bash_profile, solo el .bashrc, el cual intenté modificarlo con el siguiente código antes de que me indicaras tu solución. Pero no funcionó.

    if [ "$TERM" = "linux" ]; then
    echo -en "\e]P0232323" #black -> this is the background color as well.
    echo -en "\e]P1803232" #darkred
    echo -en "\e]P25b762f" #darkgreen
    echo -en "\e]P3aa9943" #brown
    echo -en "\e]P4324c80" #darkblue
    echo -en "\e]P5706c9a" #darkmagenta
    echo -en "\e]P692b19e" #darkcyan
    echo -en "\e]P7e5e5e5" #lightgray
    echo -en "\e]P8222222" #darkgray
    echo -en "\e]P9982b2b" #red
    echo -en "\e]PA89b83f" #green
    echo -en "\e]PBefef60" #yellow
    echo -en "\e]PC2b4f98" #blue
    echo -en "\e]PD826ab1" #magenta
    echo -en "\e]PEa1cdcd" #cyan
    echo -en "\e]PFdedede" #white -> this is the foreground color as well.
    clear #repaint the whole background with the new color
    fi

    Ahora estoy intentando con crontab lograr un script que me haga el cambio de color en el fondo y la letra en cada reinicio.


  • Administrador

    @bienve El archivo .bash_profile lo puedes crear si no existe (dale permisos de ejecución). Si has usado ese script tal cual, deberás modificarlo para que aparezca el color que quieres. Es más, yo lo dejaría en su mínima expresión porque al no usar entorno gráfico, es algo que vas a querer ejecutar siempre y así evitas posibles problemas por variables de entorno incorrectas:

    echo -en "\e]P0ffffff"
    clear
    


  • Gracias @cobito, funciona perfectamente.


Accede para responder
 

Has perdido la conexión. Reconectando a Hardlimit.