Question

J'écris quelques petits scripts bash sous Ubuntu Linux.Je veux pouvoir les exécuter à partir de l'interface graphique sans avoir besoin d'une fenêtre de terminal pour saisir une entrée ou afficher une sortie.

Jusqu'à présent, la seule entrée requise est un mot de passe pour sudo - et gksudo gère cela très bien.Mais je n'ai pas encore trouvé de moyen simple d'afficher une boîte de message.Existe-t-il une sorte de commande « gkmessage » disponible ?Je préférerais quelque chose présent dans une installation Ubuntu par défaut, mais cela ne me dérange pas d'installer un nouveau package si nécessaire.

Était-ce utile?

La solution

Je crois Zénité tu feras ce que tu veux.Il est spécialement conçu pour afficher les boîtes de dialogue GTK à partir de la ligne de commande et est disponible sous forme de Paquet Ubuntu.

Autres conseils

Si vous utilisez Ubuntu de nombreuses distributions notify-send La commande lancera une de ces jolies notifications périssables dans le coin supérieur droit.Ainsi:

notify-send "My name is bash and I rock da house"

Beau!

Tout le monde évoque la zénité, il semble y en avoir bien d’autres.Une liste confuse mais intéressante se trouve à http://alternativeto.net/software/zenity/

Tout d’abord, un exemple de zenity comprenant le balisage de formatage du texte, le titre de la fenêtre et l’étiquette du bouton.

zenity \
--info \
--text="<span size=\"xx-large\">Time is $(date +%Hh%M).</span>\n\nGet your <b>coffee</b>." \
--title="Coffee time" \
--ok-label="Sip"

message gx

gxmessage "my text"

message x

xmessage est très ancien donc il est stable et probablement disponible dans toutes les distributions qui utilisent X (puisqu'il est distribué avec X).Il est personnalisable via les ressources X, pour ceux qui utilisent Linux ou Unix depuis suffisamment longtemps pour savoir ce que cela signifie (.Xdefaults, n'importe qui ?).

xmessage -buttons Ok:0,"Not sure":1,Cancel:2 -default Ok -nearmouse "Is xmessage enough for the job ?" -timeout 10

kdialogue

(pas testé)

Dans un PPA

YAD :Zenity On Steroids [Afficher les boîtes de dialogue graphiques à partir des scripts Shell] ~ Web Upd8 :Blog Ubuntu/Linux.Ne semble pas dimensionner automatiquement les boîtes de dialogue.

echo My text | yad \
--text-info \
--width=400 \
--height=200

Un exemple plus grand

yad \
--title="Desktop entry editor" \
--text="Simple desktop entry editor" \
--form \
--field="Type:CB" \
--field="Name" \
--field="Generic name" \
--field="Comment" \
--field="Command:FL" \
--field="Icon" \
--field="In terminal:CHK" \
--field="Startup notify:CHK" "Application" "Name" "Generic name" "This is the comment" "/usr/bin/yad" "yad" FALSE TRUE \
--button="WebUpd8:2" \
--button="gtk-ok:0" \
--button="gtk-cancel:1"

D'autres ne figurent pas dans les référentiels standard Ubuntu

  • Shellgui
  • xdialogue
  • boîte de dialogue GTK

Hors sujet (pour terminal)

whiptail --msgbox "my text" 10 20
dialog --msgbox "my text" 10 20

N'hésitez pas à modifier.

Le zénité l'application semble être ce que vous recherchez.

Pour recueillir les commentaires de zénité, vous pouvez spécifier une variable et avoir la sortie de zenity --entrée enregistré dessus.Cela ressemble à ceci :

my_variable=$(zenity --entry)

Si vous regardez la valeur dans ma_variable maintenant, ce sera ce qui a été tapé dans la boîte de dialogue d'entrée contextuelle Zenity.

Si vous souhaitez donner une sorte d'invite quant à ce que l'utilisateur (ou vous) devez saisir dans la boîte de dialogue, ajoutez le --texte changez avec l’étiquette que vous voulez.Cela ressemble à ceci :

my_variable=$(zenity --entry --text="What's my variable:")

Zenity propose de nombreuses autres options intéressantes destinées à des tâches spécifiques, vous voudrez peut-être également les consulter avec zenity --aide.Un exemple est le --calendrier option qui vous permet de sélectionner une date dans un calendrier graphique.

my_date=$(zenity --calendar)

Ce qui donne une date bien formatée en fonction de ce sur quoi l'utilisateur a cliqué :

echo ${my_date}

donne :

08/05/2009

Il existe également des options pour les sélecteurs de curseur, les erreurs, les listes, etc.

J'espère que cela t'aides.

J'ai trouvé le message x commande, ce qui est en quelque sorte suffisant.

Voici un petit script Tcl qui fera ce que vous voulez.L'interpréteur Wish doit être installé par défaut sur Ubuntu.

#!/usr/bin/wish
pack [label .msg -text [lindex $argv 0]]
pack [entry .ent]
bind .ent <KeyPress-Return> { puts [.ent get]; destroy . }
focus .ent

Appelez-le comme ceci :

myanswer=`gui-prompt "type your answer and press enter"`

alert et notify-send ça semble être la même chose.j'utilise notify-send pour les messages sans saisie car cela ne vole pas le focus et je ne trouve pas de moyen d'arrêter la zenité, etc.de faire ça.

par exemple.

# This will display message and then disappear after a delay:
notify-send "job complete"

# This will display message and stay on-screen until clicked:
notify-send -u critical "job complete"

Il y a aussi dialog et la version KDE kdialog. dialog est utilisé par Slackware, il se peut donc qu'il ne soit pas immédiatement disponible sur d'autres distributions.

Qu'en est-il d'Ubuntu alerte.Il peut être utilisé après toute opération pour l'avertir de la fin et même afficher l'icône de la croix rouge si l'opération s'est terminée avec des erreurs.

ls -la; alert

si rien d'autre n'est présent.vous pouvez lancer un xterm et y faire écho, comme ceci :

 xterm -e bash -c 'echo "this is the message";echo;echo -n "press enter to continue "; stty sane -echo;answer=$( while ! head -c 1;do true ;done);'

Zénité est vraiment l'outil exact que je pense que vous recherchez.

ou

zenity --help

Kdialog et dialog sont tous deux bons, mais je recommanderais Zenity.Rapide, facile et bien meilleur pour le xmessage ou la boîte de dialogue.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top