web-dev-qa-db-fra.com

Whiptail change la couleur de fond dynamiquement du magenta?

Comment changer la couleur de fond à la volée pour Whiptail? Par exemple, rouge, vert ou jaune, le bleu semble être un manque de couleur. J'ai vérifié Comment se débarrasser de la couleur de fond pourpre dans les applications newt? qui casse vraiment le système. Si vous voulez le bleu permanent c'est OK.

Je sais que cela peut être fait, par exemple, lorsque vous installez Ubuntu, la couleur d'arrière-plan change lorsque vous n'obtenez pas les mots de passe correspondants. Pas des manuels pour Whiptail discuter comment.

Je sais qu’il s’agit de triton, car c’est sa base, mais même là, ils ne vous disent pas comment.

2
Eric

La palette de couleurs interne de whiptail peut être écrasée lors de la compilation en fournissant un chemin d'accès à un fichier contenant des définitions de couleurs.

Dans ubuntu, Sudo update-alternatives --config newt-palette permet de choisir entre la palette ubuntu et la palette d'origine.

L'emplacement de ce fichier peut être remplacé en définissant le NEWT_COLORS_FILE pour qu'il pointe vers un autre fichier.

De plus, les deux remplacements précédents peuvent être remplacés en définissant la variable d'environnement NEWT_COLORS.

La structure des définitions est la suivante:

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

name peut être:

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 et fg peuvent être:

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

Exemple affichant une boîte de message avec un arrière-plan de fenêtre rouge:

#!/bin/sh

NEWT_COLORS='
  window=,red
  border=white,red
  textbox=white,red
  button=black,white
' \
whiptail --msgbox "passwords don't match" 0 0

Ajouter aux couleurs 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
4
user448115