Frage

Ich schreibe ein paar kleine Bash-Skripte unter Ubuntu Linux.Ich möchte sie über die GUI ausführen können, ohne ein Terminalfenster zu benötigen, um Eingaben einzugeben oder Ausgaben anzuzeigen.

Bisher ist lediglich ein Passwort für sudo erforderlich – und gksudo erledigt das problemlos.Aber ich habe noch keine einfache Möglichkeit gefunden, ein Nachrichtenfeld anzuzeigen.Gibt es eine Art „gkmessage“-Befehl?Ich würde etwas bevorzugen, das in einer Standard-Ubuntu-Installation vorhanden ist, aber es macht mir nichts aus, bei Bedarf ein neues Paket zu installieren.

War es hilfreich?

Lösung

Ich glaube Zenität werde tun, was du willst.Es wurde speziell für die Anzeige von GTK-Dialogen über die Befehlszeile entwickelt und ist als verfügbar Ubuntu-Paket.

Andere Tipps

Wenn Sie verwenden Ubuntu viele Distributionen die notify-send Der Befehl wirft eine dieser netten verderblichen Benachrichtigungen in die obere rechte Ecke.Etwa so:

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

Schön!

Jeder erwähnt Zenity, es scheint noch viele andere zu geben.Eine gemischte, aber interessante Liste finden Sie unter http://alternativeto.net/software/zenity/

Zunächst ein Beispiel für Zenity mit Textformatierungsmarkierung, Fenstertitel und Schaltflächenbeschriftung.

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"

gxmessage

gxmessage "my text"

xmessage

xmessage ist sehr alt, daher stabil und wahrscheinlich in allen Distributionen verfügbar, die X verwenden (da es mit X verteilt wird).Es ist über X-Ressourcen anpassbar, für diejenigen, die Linux oder Unix schon lange genug verwenden, um zu wissen, was es bedeutet (.Xdefaults, irgendjemand ?).

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

kdialog

(nicht getestet)

In einem PPA

YAD:Zenity On Steroids [Grafische Dialoge aus Shell-Skripten anzeigen] ~ Web Upd8:Ubuntu-/Linux-Blog.Scheint die Größe von Dialogen nicht automatisch anzupassen.

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

Ein größeres Beispiel

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"

Andere nicht in Ubuntu-Standard-Repositories

  • Shellgui
  • xdialog
  • gtkdialog

Off-Topic (für Terminal)

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

Fühlen Sie sich frei, es zu bearbeiten.

Der Zenität Die Anwendung scheint das zu sein, wonach Sie suchen.

Um Input zu erhalten Zenität, können Sie eine Variable angeben und die Ausgabe erhalten zenity --Eintrag darin gespeichert.Es sieht ungefähr so ​​aus:

my_variable=$(zenity --entry)

Wenn Sie sich den Wert in ansehen meine_variable Jetzt ist es das, was Sie im Popup-Eingabedialog von Zenity eingegeben haben.

Wenn Sie eine Eingabeaufforderung dazu geben möchten, was der Benutzer (oder Sie) in das Dialogfeld eingeben soll, fügen Sie Folgendes hinzu --Text Wechseln Sie mit der gewünschten Beschriftung.Es sieht ungefähr so ​​aus:

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

Zenity bietet viele andere nette Optionen für bestimmte Aufgaben, die Sie vielleicht auch ausprobieren möchten Zenity – Hilfe.Ein Beispiel ist das --Kalender Option, mit der Sie ein Datum aus einem grafischen Kalender auswählen können.

my_date=$(zenity --calendar)

Das ergibt ein schön formatiertes Datum basierend auf dem, worauf der Benutzer geklickt hat:

echo ${my_date}

gibt:

08/05/2009

Es gibt auch Optionen für Schieberegler, Fehler, Listen usw.

Hoffe das hilft.

ich fand die xmessage Befehl, was irgendwie gut genug ist.

Hier ist ein kleines Tcl-Skript, das genau das tut, was Sie wollen.Der Wish-Interpreter sollte unter Ubuntu standardmäßig installiert sein.

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

Nennen Sie es so:

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

alert Und notify-send scheint das Gleiche zu sein.ich benutze notify-send für Nicht-Eingabenachrichten, da dadurch der Fokus nicht gestohlen wird und ich keine Möglichkeit finde, Zenity usw. zu stoppen.davon ab, dies zu tun.

z.B.

# 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"

Es gibt auch dialog und die KDE-Version kdialog. dialog wird von Slackware verwendet und ist daher möglicherweise nicht sofort auf anderen Distributionen verfügbar.

Wie wäre es mit Ubuntu? Alarm.Es kann nach jedem Vorgang verwendet werden, um darauf aufmerksam zu machen, dass der Vorgang abgeschlossen ist, und zeigt sogar ein rotes Kreuzsymbol an, wenn der Vorgang mit Fehlern abgeschlossen wurde

ls -la; alert

wenn nichts anderes vorhanden ist.Sie können ein xterm starten und es wie folgt echoen:

 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);'

Zenität ist wirklich genau das Werkzeug, das Sie meiner Meinung nach suchen.

oder

zenity --help

Kdialog und Dialog sind beide gut, aber ich würde Zenity empfehlen.Schnell, einfach und die xmessage oder der Dialog sieht viel besser aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top