it-swarm.com.de

Benötigen Sie eine Schnittstelle für ein GUI-Shell-Skript, das leistungsfähiger ist als Zenity

Ich möchte eine Shell-Skriptdatei schreiben, die eine GUI mit mehreren Eingabefeldern für die Benutzereingabe enthält. Ich habe es bereits mit zenity versucht. Irgendwelche Ideen oder Ratschläge würden geschätzt.

3
moata_u

Vielleicht ist es in dieser Hinsicht nützlich, es ist eine Fork of Zenity mit mehr Funktionen, von denen eine die Fähigkeit ist, Formen zu erstellen.

Hier ist ein sehr einfaches Beispiel eines Formulars:

#!/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

Das obige Skript zeigt ein Formular wie das folgende an:

Yad Form Example

Nachdem Sie Ihre Daten eingegeben und auf OK geklickt oder die Eingabetaste gedrückt haben, werden die Formulardaten in eine Textdatei namens test.txt geschrieben. Ich verwende awk, um die Formulardaten zu trennen, die eine Zeichenfolge mit einer Pipe als Feldtrennzeichen sind. Ich glaube, dass es einen direkten Weg gibt, um die Daten ohne awk zu erhalten, aber ich bin kein Experte. Bitte überprüfen Sie das Projekt nach Hause und stellen Sie Fragen. Möglicherweise finden Sie einen eleganteren Weg.

So bekommen und installieren Sie yad hier:

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

ihr Projekt zu Hause:

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

weitere Beispiele hier:

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

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

Ich bin zu spät hier, aber das kann immer noch hilfreich sein.

9
Sabacon

Meine Antwort mag verspätet sein (zwei Jahre, denke ich), aber da viele Leute immer noch nach der Antwort auf dieselbe Frage suchen, könnte es nützlich sein. Ich suche auch nach einer "Besser als Zenity/Yad/Xdialog" -Lösung und habe zwei sehr gute Programme gefunden:

  1. gtkdialog: http://code.google.com/p/gtkdialog/ Sie können eine vollständige Benutzeroberfläche für bash erstellen, die während der Kommunikation mit Ihrem Backend-Skript ausgeführt wird. Es befindet sich in der aktiven Entwicklung und wird auch von Welpenentwicklern verwendet. Die eigene Sprache ist leistungsfähiger als libglade. Sie kann jedoch libglade XML ausführen.

  2. gtkserver: http://www.gtk-server.org/ Dieser geht noch einen Schritt weiter und wird als Coprozess ausgeführt, während Sie mit Ihrem Bash-Skript über Pipes, Nachrichten oder TCP-Ports kommunizieren. Es funktioniert nicht mit einer XML-typisierten Beschreibungsdatei, sondern mit GTK-Befehlen, die Sie über die Bash-Befehlszeile aufrufen. Sehr mächtig :-)

gtkdialog ist nicht mehr in den Repositories, aber Sie können die neuesten Versionen in einem PPA finnen ( https://launchpad.net/~dnjl/+archive/build/+sourcepub/2986274/+listing-archive-extra )

gtkserver hat kein PPA oder deb AFAIK, daher muss dieses aus dem Quellcode kompiliert werden.

3
thom

xDialog ist ähnlich, hier ist eine Suchliste von freshmeat . tcl/tk ist ein weiteres beliebtes Tool für solche Jobs.

Für eine schlechte Lösung müsste der Benutzer eine Liste ausfüllen und schließlich alle Zeilen markieren:

zenity --list --text "Fill every row, and mark all rows before hitting 'OK'" --column "title" --print-column=2 --multiple --column "value" --editable "name" "(please override)" "Host" "" "ip" ""

Ich gebe zu, dass das nicht angenehm ist.

3
user unknown

Eine Lösung wäre die Verwendung von Zenity, bei der jedoch jede Eingabeaufforderung einzeln angezeigt wird. Die erste Eingabeaufforderung bezieht sich auf das erste Feld. Wenn der Benutzer auf "OK" klickt, können Sie zur Eingabe des zweiten Felds auffordern.

Es hört sich so an, als ob Sie an die Grenzen der Skripterstellung stoßen und eine anwendungsähnliche Oberfläche mit etwas wie QT oder GTK entwickeln möchten.

1
Windigo

Vielleicht möchten Sie versuchen CommandUI . Es ist keine Codierung erforderlich.

1
Olivier T.