¿Whiptail cambia el color de fondo dinámicamente de magenta?

¿Whiptail cambia el color de fondo dinámicamente de magenta?

¿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-paletteproporciona 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_FILEapunte a un archivo alternativo.

Además, ambas anulaciones anteriores se pueden anular configurando la NEWT_COLORSvariable de entorno.

La estructura de las definiciones es:

name=[fg],[bg][;|:|\n|\r|\t]name2=[fg],[bg]]...

namepuede 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

bgy fgpuede 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

información relacionada