Wie kann man die Hintergrundfarbe für Whiptail spontan ändern? Zum Beispiel rot, grün oder gelb, Blau scheint ein Mangel an Farbe zu sein. Ich habe nachgeprüftWie wird man die violette Hintergrundfarbe in Newt-Apps los?was das System wirklich kaputt macht. Wenn Sie permanentes Blau wollen, ist das OK.
Ich weiß, dass es möglich ist, da bei der Installation von Ubuntu beispielsweise die Hintergrundfarbe geändert wird, wenn keine passenden Passwörter angezeigt werden. In keinem der Handbücher für Whiptail wird erläutert, wie das geht.
Ich weiß, dass es mit Molchen zu tun hat, da dies seine Basis ist, aber selbst dort wird einem nicht gesagt, wie.
Antwort1
Die interne Farbpalette von Whiptail kann bei der Kompilierung überschrieben werden, indem ein Pfad zu einer Datei mit Farbdefinitionen angegeben wird.
In Ubuntu sudo update-alternatives --config newt-palette
gibt es eine Möglichkeit, zwischen der Ubuntu-Palette und der Originalpalette auszuwählen.
Der Speicherort dieser Datei kann überschrieben werden, indem der NEWT_COLORS_FILE
Verweis auf eine alternative Datei festgelegt wird.
Darüber hinaus können beide vorherigen Überschreibungen durch Festlegen der NEWT_COLORS
Umgebungsvariable überschrieben werden.
Der Aufbau der Definitionen ist:
name=[fg],[bg][;|:|\n|\r|\t]name2=[fg],[bg]]...
name
kann sein:
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
und fg
kann sein:
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
Beispiel für die Anzeige eines Meldungsfelds mit rotem Fensterhintergrund:
#!/bin/sh
NEWT_COLORS='
window=,red
border=white,red
textbox=white,red
button=black,white
' \
whiptail --msgbox "passwords don't match" 0 0
Anhängen an Ubuntu-Farben:
#!/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