Je veux créer des dialogues graphiques pour mon script mais je ne sais pas comment. J'entends quelque chose à propos de GTK-Server ou quelque chose comme ça. Si quelqu'un sait comment associer Bash à tcl/tk, je suis également satisfait.
Merci de ne pas publier quelque chose comme "changer en C++" car mon projet doit être un script en Bash; Il n'y a pas d'autres options.
Des idées?
EDIT: Merci pour les réponses mais je ne veux pas de "graphismes" comme dans les couleurs de la console, mais des fenêtres graphiques que je peux déplacer, réduire au minimum, etc. Je vais tester xmessage
, mais Je ne pense pas que ce sera ce que je recherche.
EDIT 2: Je ne veux pas créer un dialogue simple comme oui/non, mais certaines interfaces comme des barres de progression et des boutons, un peu comme un jeu.
Avant d'utiliser réellement les dialogues d'interface graphique, envisagez d'utiliser les invites de la console. Assez souvent, vous pouvez vous en tirer avec un simple "y/n?" les invites que vous obtiendrez en utilisant la commande read
..
read -p "Do something? ";
if [ $REPLY == "y" ]; then
echo yay;
fi
Si l'invite de la console ne suffit pas, Zenity est vraiment facile à utiliser , par exemple:
zenity --error --text="Testing..."
zenity --question --text="Continue?"
Cela ne fonctionne que sur Linux/Gnome (ou plutôt, il ne sera installé par défaut que sur de tels systèmes). La méthode read
fonctionnera sur pratiquement toutes les plateformes (y compris les machines sans tête ou via SSH)
Si vous avez besoin de quelque chose de plus complexe que ce que read ou Zenity fournit, "changer en C++" est vraiment la meilleure méthode (bien que je recommande Python/Ruby sur C++ pour de telles tâches de remplacement de scripts Shell)
Je veux faire une interface simple pour un jeu étrange, la barre de progression pour la santé ou quelque chose est l'exemple de ce que je veux. La variable "SANTÉ" vaut 34, alors remplissez la barre de progression 34/100
En tant que script de ligne de commande, il utiliserait Python:
$ export HEALTH=34
$ python -c "import os; print '*' * int(os.environ.get('HEALTH', 0))"
**********************************
Ou pour normaliser les valeurs comprises entre 1 et 78 (afin d'éviter les retours à la ligne sur une taille de terminal standard):
$ python -c "import os; print '*' * int((int(os.environ.get('HEALTH', 0)) / 100.0) * 78)"
Zenity a également un dialogue de progression ,
#!/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
Comme je l'ai déjà dit, si Zenity ne peut pas faire ce dont vous avez besoin, envisagez d'écrire votre jeu en tant que script "approprié" en Python/Ruby/Perl/C++/etc. -script peut faire ..
Si vous voulez écrire une interface utilisateur graphique en bash, zenity est la voie à suivre. Voici ce que vous pouvez en faire:
Application Options:
--calendar Display calendar dialog
--entry Display text entry dialog
--error Display error dialog
--info Display info dialog
--file-selection Display file selection dialog
--list Display list dialog
--notification Display notification
--progress Display progress indication dialog
--question Display question dialog
--warning Display warning dialog
--scale Display scale dialog
--text-info Display text information dialog
En combinant ces widgets, vous pouvez créer de jolies interfaces graphiques utilisables. Bien sûr, ce n'est pas aussi flexible qu'une boîte à outils intégrée dans un langage de programmation, mais dans certains cas, c'est vraiment utile.
il existe une commande appelée dialog
qui utilise la bibliothèque ncurses. " Dialog est un programme qui vous permet de présenter diverses questions ou d'afficher des messages à l'aide de boîtes de dialogue à partir d'un script Shell. Ces types de boîtes de dialogue sont implémentés (même si tous ne sont pas nécessairement compilés dans dialogue) "
Eh bien, si vous pouvez utiliser Tcl/Tk dans votre environnement, vous devriez probablement écrire un script TCL et l'utiliser. Vous pourriez aussi regarder souhait .
Consultez ma bibliothèque: http://sites.google.com/site/easybashgui
Il est destiné à gérer, avec les mêmes commandes, indifféremment les quatre gros outils "kdialog", "Xdialog", "cdialog" et "zenity", selon que X fonctionne ou non, si D.E. est KDE ou Gnome ou autre. Il y a 15 fonctions différentes (dont deux appelées "progrès" et "ajustement") ...
Au revoir :-)
Vous pouvez gtk-server pour cela. Gtk-server est un programme qui fonctionne en arrière-plan et fournit une interface textuelle permettant à d'autres programmes (y compris les scripts bash) de le contrôler. Il a des exemples pour Bash ( http://www.gtk-server.org/demo-ipc.bash.txt , http://www.gtk-server.org/demo -fifo.bash.txt )
Si vous avez Qt/KDE installé, vous pouvez utiliser kdialog , ce qui ouvre une fenêtre de dialogue Qt. Vous pouvez facilement spécifier d'afficher une boîte de dialogue Oui/Non, OK/Annuler, une saisie de texte simple, un mot de passe, etc. Vous avez alors accès aux valeurs de retour de ces boîtes de dialogue sur le shell.
Apparemment, quelqu'un a écrit une interface bash pour GTK +. Je ne suis pas sûr que vous puissiez le faire fonctionner facilement, mais cela vaut la peine d'essayer. Vous pouvez le trouver ici: