Existe-t-il un moyen d'obtenir la boîte de dialogue de type Confirmation utilisateur (comme êtes-vous sûr oui / non) lorsque j'exécute un script (en double-cliquant)? Je ne veux pas dire dans Terminal, mais une boîte de confirmation graphique, quelque chose comme ceci:
(Je sais que l'image provient de Windows, je n'ai pas pu trouver une image Linux)
if zenity...
ouzenity... || exit
Vous pouvez utiliser
xmessage
dans le script lui-même. Mettez quelque chose comme ça après le "shebang":xmessage "Are you sure?"
Cela affichera un message graphique disant "Êtes-vous sûr?" avec un bouton "ok".
Vous pouvez configurer
xmessage
plusieurs boutons et modifier ce qui y est écrit. Vous pouvez également configurer les actions effectuées par chaque bouton.Par exemple,
Voir
man xmessage
pour toutes les options (il y en a beaucoup).la source
Au lieu de vous dire comment faire, je vous dirai que vous ne devriez pas faire ça.
TL; DR - Ne changez pas votre script. Configurez plutôt votre gestionnaire de fichiers ou découvrez pourquoi vos utilisateurs l'exécutent accidentellement.
EDIT: Vous semblez traiter votre script comme quelque chose de spécial, comme si les paramètres généraux n'étaient pas assez bons et que votre script avait besoin d'une confirmation spéciale de l'utilisateur. Double-cliquer dessus est la confirmation. Si vous constatez que vos utilisateurs l'exécutent par accident, vous devez comprendre pourquoi ils le font et le résoudre à la place. Ensuite, votre vrai problème n'est pas de savoir comment exiger une confirmation mais comment empêcher vos utilisateurs de l'exécuter accidentellement.
D'après la façon dont vous exposez votre problème, il semble que vous vous attendiez à ce que votre programme (script) soit exécuté en naviguant jusqu'à l'emplacement du fichier, puis en cliquant dessus depuis le gestionnaire de fichiers. Pensez à tous les autres programmes de votre système. Combien commencez-vous comme ça? Naviguez-vous au
/usr/local/bin
démarrage de Firefox? Bien sûr que non. Vous cliquez dessus dans le menu des applications. (gnome tweak est un script python, c'est peut-être un meilleur exemple)J'espère que vous ne considérerez pas que cliquer dessus dans le menu des applications soit un accident. Votre problème est donc de savoir comment faire apparaître votre script au lieu d'utiliser le gestionnaire de fichiers. Pour ce faire, vous procédez comme suit:
placez votre script loin des autres fichiers où l'utilisateur peut cliquer dessus par accident (l'endroit typique est
/usr/local/bin/
pour une installation à l'échelle du système ou~/.local/bin/
pour une installation utilisateur)créer un fichier d'entrée de bureau (lire les spécifications standard ). Voici un cas minimal:
et le pousser dans
/usr/local/share/applications/your-script.xml
ou~/.local/share/your-script.xml
.Enfin, exécutez
update-desktop-database
.Puisque vous double-cliquez sur le script, c'est le travail de votre gestionnaire de fichiers de le confirmer. Il n'appartient pas au script de confirmer s'il doit s'exécuter. Poussez cela à l'extrême. Pouvez-vous imaginer à quel point il serait ridicule que chaque fois que vous appeliez un programme, vous deviez le confirmer?
La seule fois où un programme doit demander une confirmation, c'est quand il est sur le point de faire quelque chose de dangereux et irréversible. Par exemple, remplacer un fichier ou contourner la corbeille. Et notez que même ces exemples visent à faire un programme faire quelque chose de spécifique. Il ne s'agit pas de lancer de tels programmes. Si un programme n'a pour but que de faire une chose aussi dangereuse, il ne devrait pas non plus demander de confirmation.
En effet, Nautilus (gestionnaire de fichiers Gnome) vous demandera déjà par défaut de confirmer si vous souhaitez exécuter un script (ou simplement l'ouvrir dans un éditeur de texte).
Et bien sûr, ce comportement est configurable, donnant à l'utilisateur la possibilité de le désactiver (entrée de note sur les fichiers texte exécutables ).
N'ajoutez donc pas une boîte de dialogue de confirmation ennuyeuse à votre script. Configurez correctement votre gestionnaire de fichiers. Et laissez vos utilisateurs faire de même.
la source
Vous pouvez utiliser yad, qui est comme la zénité sur les stéroïdes car il est beaucoup plus configurable. Vous pouvez l'installer à partir du Centre logiciel dans Ubuntu. Dans sa forme la plus simple, vous pouvez taper
yad --title=Question --image=dialog-question --text="Are you sure?"
et vous devriez voir ceci:
Si OK a été enfoncé, nous obtenons un code retour de 0, si Annuler a été enfoncé, nous obtenons un code retour de 1.
Il serait préférable de placer la boîte au centre et d'ajuster également la largeur de celle-ci, utilisez un onglet de tête pour positionner le texte "Êtes-vous sûr?" plus à droite et aussi toujours en haut. Pour cela, nous avons besoin de:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200
La plupart des commutateurs sont explicites à l'exception du "\ t" avant le "Êtes-vous sûr?" ce qui ajoute simplement un espace de tabulation avant d'imprimer le texte. Maintenant, nous devrions voir ceci:
La boîte est centrée, toujours sur le dessus et a fière allure. Pour définir une variable pour tester le bouton sur lequel vous avez appuyé, utilisez:
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200;result=$?;echo $result
Dans cet exemple, nous utilisons la variable $ result qui sera définie sur 0 si vous avez appuyé sur OK ou sur 1 si vous avez appuyé sur Annuler.
Pour obtenir de l'aide avec yad, vous pouvez utiliser
man yad
ouyad --help-all
mais j'ai trouvé que les exemples pratiques sont plus faciles à adapter. Il y en a ici . yad est beaucoup plus configurable et donc plus utilisable que zenity à mon avis.la source