web-dev-qa-db-fra.com

Moyen rapide de créer une interface graphique pour l'application bash

Je veux construire une interface graphique simple pour une application qui utilise bash. Par exemple, si vous cliquez sur un bouton, certaines commandes bash, etc., sont exécutées.

Il y a un créateur d'interface graphique aussi simple, il ne me manque que des boutons et des zones de texte qui ne nécessitent pas d'apprendre un nouveau langage de programmation?

6
Matteo Pagliazzi

J'ai posté une réponse ici , cela peut être utile, pour plus de commodité, je vais simplement la mettre ici à nouveau.

Yad peut être utile à cet égard, c'est une fourchette de zenity avec plus de fonctionnalités, dont la possibilité de créer des formulaires.

Voici un exemple très simple de formulaire:

#!/bin/bash


frmdata=$(yad --title "Test Form" --form --field "Address" --field="Name")


frmaddr=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $1 }')
frmname=$(echo $frmdata | awk 'BEGIN {FS="|" } { print $2 }')

echo $frmaddr > test.txt
echo $frmname >> test.txt

Le script ci-dessus affichera un formulaire comme celui-ci:

enter image description here

Après avoir entré vos données et cliqué sur OK ou appuyé sur Entrée sur le clavier, les données de formulaire seront écrites dans un fichier texte appelé test.txt. J'utilise awk pour séparer les données de formulaire qui sont une chaîne avec un tube comme séparateur de champ, Je pense qu’il existe un moyen direct d’obtenir les données sans awk mais je ne suis pas un expert en yad. Veuillez vérifier le projet à la maison et poser des questions. Vous trouverez peut-être un moyen plus élégant.

Comment obtenir et installer yad ici:

http://www.webupd8.org/2010/12/yad-zenity-on-steroids-display.html

yad project home:

http://code.google.com/p/yad/

plus d'exemples ici:

http://technostripe.com/yad-a-fork-of-zenity-with-more-features/

http://code.google.com/p/yad/wiki/Examples

Il n’existe pas encore de concepteur de formulaire, mais comme la syntaxe est si simple et si proche de la zenity, ce n’est généralement pas un problème.

9
Sabacon

Pour une saisie utilisateur simple, vous pouvez utiliser zenity (vit dans le package zenity.). Un exemple simple pourrait être quelque chose comme ceci:

VARIABLE=$(zenity --entry --title="Give me inputz" --text="Write some stuff")
echo $VARIABLE

Pour une zone de texte (comme nous le dirions dans le monde HTML), vous modifieriez la syntaxe de la manière suivante:

zenity --text-info --title="Give me inputz" --editable

Vous pouvez en savoir plus sur son manuel . C'est une petite entrée très flexible d'utilisateur de bibliothèque dans des scripts simples.

Edit: Vous pouvez aussi trouver quelques bons exemples sur Linuxaria .

7
Oli

Jetez un oeil à ceci: http://sites.google.com/site/easybashgui

Tu utilises:

source easybashgui
input 2 "Address" "?" "Name" "?"
cp "$dir_tmp/$file_tmp" "test.txt"
clean_temp
3
Vaisarger

Essayez tkbash .

Vous pouvez spécifier des éléments comme celui-ci

tkbash 1 button b1 -x 0 -y 0 -w 100 -h 30 -t "click me" --command "notify-send hi"
0
Blauhirn