Linux – Scripting: Cajas de diálogos en shell scripts (GUI en script sh) – O Esteroides para scripts
Posted in Scripting, Sistemas, Utilidades on Dec 12th, 2009
Andaba buscando como mejorar la interactividad con el usuario en un script de shell ( .sh ). y encontré algo como:
xmessage -print -buttons Si:1,No:2,Cancelar:3 -default No -center "Elige Si / No / Cancelar"
Pero buscando, descubrí que los chicos de Sun, por el 2.003, creo, ya habían dado con una vistosa solución, que al menos para gnome funciona muy bien.: Zenity … o como poner esteroides a tus scripts.
Estupendo manual.Por cierto, si no estuviera online, con ejecutar en consola: zenity –about y luego pinchar el botón de ayuda lo tendrías.
Tras leerme el manual. he implementado una prueba de concepto en el siguiente script:
#!/bin/bash
#http://library.gnome.org/users/zenity/stable/zenity-introduction.html.es
# by JavCasta - 2.009 - http://javcasta.wordpress.com
function zcalendar() {
if zenity --calendar \
--title="Selecciona una fecha " \
--text="Pulsa sobre una fecha para seleccionar esa fecha." \
--day=11 --month=12 --year=2009 2>&1 > /tmp/fecha.txt
fecha=$(head /tmp/fecha.txt);
then zenity --info --text="has seleccionado la fecha $fecha"
else echo "No has seleccionado ninguna fecha."
fi
}
function zfile() {
FILE=`zenity --file-selection --title="Seleccione un archivo"`
case $? in
0)
zenity --info --text="has seleccionado el fichero $FILE";;
#echo "\"$FILE\" seleccionado.";;
1)
echo "No ha seleccionado ningún archivo.";;
-1)
echo "No ha seleccionado ningún archivo.";;
esac
}
function zlist() {
zenity --list \
--title="Elija la opción deseada" \
--column="Número" --column="Nombre" --column="Descripción" \
0001 Alto "Más de 2.00 metros" \
0002 Medio "Entre 1.60 y 2.00 metros" \
0003 Bajo "Menos de 1.60 metros" \
2>&1 > /tmp/eleccion.txt
eleccion=$(head /tmp/eleccion.txt);
zenity --info --text="has seleccionado la opcion $eleccion"
}
# ************ Begin P.P. ********************
(
echo "10"
echo "# Veamos el selector de fechas de Zenity: Zenity --Calendar" ; zcalendar
echo "20" ; sleep 1
echo "# Veamos el selector de ficheros de zenity: Zenity --file-selection" ; zfile
echo "50" ; sleep 1
echo "Esta linea sera ignorada" ; sleep 1
echo "75" ; sleep 1
echo "# Veamos el selector de lista de Zenity: zenity --list" ; zlist
echo "100" ; sleep 1
) |
zenity --progress \
--title="Script demo de funcionalidades de Zenity" \
--text="Barra de progreso..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Se ha cancelado la demo."
fi
Tambien hay zenity –question, zenity –entry con la opcion –hide-text para contraseñas … En resumen una gran ayuda visual (GUI) para los scripts de shell que interactúen con el usuario.

Necesito trabajo, si tienes una propuesta de trabajo mail-me to: trabajo.job@javcasta.com
Soy técnico de sistemas, comunicaciones y soporte informático. (CV online). Formación
– realizo scripts por encargo. ver CustomScript –


































