Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

Whiptail change background color dynamically from magenta?

Writer Emily Wong

How would one change the background color on the fly for Whiptail. For example red, green, or yellow, Blue seams to be a lack of color. I checked How to get rid of purple background color in newt apps? which really breaks the system. If you want permanent blue it is OK.

I know that it can be done as when you install Ubuntu they change the background color when you don't get matching passwords for example. Non of the manuals for Whiptail discuss how.

I do know that it deal with newt as this is its base, but even there they don't tell you how.

1 Answer

Internal colour palette of whiptail may be overwritten at compilation by providing a path to a file containing color definitions.

In ubuntu sudo update-alternatives --config newt-palette provides a way of selecting between ubuntu palette and original palette.

The location of this file can be overriden by setting the NEWT_COLORS_FILE to point to an alternative file.

Furthermore both previous overrides can be overriden by setting the NEWT_COLORS environment variable.

The structure of the definitions is:

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

name can be:

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 and fg can be:

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

Example displaying a message box with red window background:

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

Appending to ubuntu colors:

#!/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
9

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy