Antes de utilizar realmente los diálogos de GUI, considere usar los mensajes de la consola. Muy a menudo puede salirse con la simple "y/n?" le pide, que en bash a alcanzar a través de la read
command ..
read -p "Do something? ";
if [ $REPLY == "y" ]; then
echo yay;
fi
Si indicador de la consola es sólo no se corte, Zenity es realmente easy to use, por ejemplo:
zenity --error --text="Testing..."
zenity --question --text="Continue?"
Esto sólo funciona en Linux/Gnome (o más bien, solo se instalará por defecto en tales sistemas).El método read
funcionará prácticamente en cualquier plataforma (incluidas las máquinas sin cabeza oa través de SSH)
Si necesita algo más complejo que lo que lee o proporciona Zenity, "cambiar a C++" es realmente el mejor método (aunque yo ' d recomendar Python/Ruby sobre C++ para tales tareas de reemplazo de guiones de shell)
Quiero hacer interfaz simple para un juego extraño, la barra de progreso para la salud o algo así es el ejemplo de lo que quiero. Variable "salud" es 34, así que la barra de progreso rellena 34/100
como un script de línea de comandos, que haría uso de Python:
$ export HEALTH=34
$ python -c "import os; print '*' * int(os.environ.get('HEALTH', 0))"
**********************************
O para normalizar los valores entre 1 y 78 (para que no se obtiene al ajuste de líneas en un terminal de tamaño estándar):
$ python -c "import os; print '*' * int((int(os.environ.get('HEALTH', 0))/100.0) * 78)"
Zenity también tiene un Progress Dialog,
#!/bin/sh
(
echo "10" ; sleep 1
echo "# Updating mail logs" ; sleep 1
echo "20" ; sleep 1
echo "# Resetting cron jobs" ; sleep 1
echo "50" ; sleep 1
echo "This line will just be ignored" ; sleep 1
echo "75" ; sleep 1
echo "# Rebooting system" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Update System Logs" \
--text="Scanning mail logs..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Update canceled."
fi
Como dije antes, si Zenity no puede hacer lo que necesita, analice su escritura de juego como una secuencia de comandos "adecuada" en Python/Ruby/Perl/C++/etc, ya que parece que está superando los límites de qué puede hacer un script de shell.
Definitivamente quiere 'zenity'. – jmc
En los viejos tiempos había "dtksh" una implementación ksh-93 con acceso a bibliotecas Motif. Puede establecer devoluciones de llamadas de funciones de shell y realizar una aplicación gráfica completa con scripts de shell. Contenía diálogo, botón, cuadro de texto, botón de radio, ... – Emmanuel
Eche un vistazo a ['tkbash'.] (Https://github.com/phil294/tkbash) – Blauhirn