¿Cómo se cambiaría el color de fondo sobre la marcha para Whiptail? Por ejemplo, rojo, verde o amarillo, el azul parece ser una falta de color. lo comprobé¿Cómo deshacerse del color de fondo morado en las aplicaciones de tritón?lo que realmente rompe el sistema. Si quieres azul permanente, está bien.
Sé que se puede hacer, ya que cuando instalas Ubuntu, cambian el color de fondo cuando no obtienes contraseñas coincidentes, por ejemplo. Ninguno de los manuales de Whiptail explica cómo hacerlo.
Sé que se ocupa del tritón ya que esta es su base, pero ni siquiera ahí te dicen cómo.
Respuesta1
La paleta de colores interna de Whiptail se puede sobrescribir durante la compilación proporcionando una ruta a un archivo que contiene definiciones de color.
En Ubuntu sudo update-alternatives --config newt-palette
proporciona una forma de seleccionar entre la paleta de Ubuntu y la paleta original.
La ubicación de este archivo se puede anular estableciendo que NEWT_COLORS_FILE
apunte a un archivo alternativo.
Además, ambas anulaciones anteriores se pueden anular configurando la NEWT_COLORS
variable de entorno.
La estructura de las definiciones es:
name=[fg],[bg][;|:|\n|\r|\t]name2=[fg],[bg]]...
name
puede ser:
root root fg, bg
border border fg, bg
window window fg, bg
shadow shadow fg, bg
title title fg, bg
button button fg, bg
actbutton active button fg, bg
checkbox checkbox fg, bg
actcheckbox active checkbox fg, bg
entry entry box fg, bg
label label fg, bg
listbox listbox fg, bg
actlistbox active listbox fg, bg
textbox textbox fg, bg
acttextbox active textbox fg, bg
helpline help line
roottext root text
emptyscale scale full
fullscale scale empty
disentry disabled entry fg, bg
compactbutton compact button fg, bg
actsellistbox active & sel listbox
sellistbox selected listbox
bg
y fg
puede ser:
color0 or black
color1 or red
color2 or green
color3 or brown
color4 or blue
color5 or magenta
color6 or cyan
color7 or lightgray
color8 or gray
color9 or brightred
color10 or brightgreen
color11 or yellow
color12 or brightblue
color13 or brightmagenta
color14 or brightcyan
color15 or white
Ejemplo que muestra un cuadro de mensaje con un fondo de ventana rojo:
#!/bin/sh
NEWT_COLORS='
window=,red
border=white,red
textbox=white,red
button=black,white
' \
whiptail --msgbox "passwords don't match" 0 0
Agregando a los colores de ubuntu:
#!/bin/bash
readarray -t newtcols < /etc/newt/palette
newtcols_error=(
window=,red
border=white,red
textbox=white,red
button=black,white
)
NEWT_COLORS="${newtcols[@]} ${newtcols_error[@]}" \
whiptail --msgbox "passwords don't match" 0 0