Domanda

Sto scrivendo alcuni piccoli script bash sotto Ubuntu Linux.Voglio essere in grado di eseguirli dalla GUI senza bisogno di una finestra di terminale per inserire qualsiasi input o visualizzare qualsiasi output.

Finora l'unico input richiesto è una password per sudo e gksudo la gestisce bene.Ma non ho ancora trovato un modo semplice per mostrare una finestra di messaggio.È disponibile una sorta di comando "gkmessage"?Preferirei qualcosa presente in un'installazione Ubuntu predefinita, ma non mi dispiace installare un nuovo pacchetto se necessario.

È stato utile?

Soluzione

Credo Zenità farà quello che vuoi.È progettato specificamente per visualizzare le finestre di dialogo GTK dalla riga di comando ed è disponibile come file Pacchetto Ubuntu.

Altri suggerimenti

Se stai usando Ubuntu molte distribuzioni notify-send il comando lancerà una di quelle simpatiche notifiche deperibili nell'angolo in alto a destra.Così:

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

Bellissimo!

Tutti menzionano Zenity, sembra che ce ne siano molti altri.Un elenco confuso ma interessante è a http://alternativeto.net/software/zenity/

Innanzitutto, un esempio di zenity con markup di formattazione del testo, titolo della finestra, etichetta del pulsante.

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 è molto vecchio quindi è stabile e probabilmente disponibile in tutte le distribuzioni che utilizzano X (poiché è distribuito con X).È personalizzabile tramite le risorse X, per coloro che utilizzano Linux o Unix da abbastanza tempo per sapere cosa significa (.Xdefaults, chiunque ?).

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

kdialog

(non testato)

In un PPA

YAD:Zenity On Steroids [Visualizza finestre di dialogo grafiche dagli script di shell] ~ Web Upd8:Blog Ubuntu/Linux.Non sembra ridimensionare automaticamente le finestre di dialogo.

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

Un esempio più grande

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"

Altri non nei repository standard di Ubuntu

  • shellgui
  • xdialog
  • gtkdialog

Fuori tema (per terminale)

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

Sentiti libero di modificare.

IL zenità l'applicazione sembra essere quella che stai cercando.

Da cui prendere input zenità, è possibile specificare una variabile e ottenere l'output di zenity: ingresso salvato su di esso.Sembra qualcosa del genere:

my_variable=$(zenity --entry)

Se guardi il valore in mia_variabile ora sarà qualunque cosa sia stata digitata nella finestra di dialogo di accesso a comparsa di zenity.

Se vuoi dare una sorta di suggerimento su cosa l'utente (o tu) dovresti inserire nella finestra di dialogo, aggiungi il file --testo cambia con l'etichetta che desideri.Sembra qualcosa del genere:

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

Zenity ha molte altre opzioni interessanti per attività specifiche, quindi potresti voler controllare anche quelle zenità: aiuto.Un esempio è il --calendario opzione che ti consente di selezionare una data da un calendario grafico.

my_date=$(zenity --calendar)

Che fornisce una data ben formattata in base a ciò su cui l'utente ha fatto clic:

echo ${my_date}

dà:

08/05/2009

Ci sono anche opzioni per selettori di slider, errori, elenchi e così via.

Spero che questo ti aiuti.

Ho trovato il xmessage comando, il che è abbastanza buono.

Ecco un piccolo script Tcl che farà quello che vuoi.L'interprete Wish dovrebbe essere installato di default su Ubuntu.

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

Chiamatelo così:

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

alert E notify-send sembrano essere la stessa cosa.Io uso notify-send per i messaggi non di input in quanto non ruba la messa a fuoco e non riesco a trovare un modo per fermare Zenity ecc.dal fare questo.

per esempio.

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

C'è anche dialog e la versione KDE kdialog. dialog è utilizzato da Slackware, quindi potrebbe non essere immediatamente disponibile su altre distribuzioni.

Che ne dici di Ubuntu mettere in guardia.Può essere utilizzato dopo qualsiasi operazione per avvisare che è terminata e persino per mostrare l'icona della croce rossa se l'operazione è stata completata con errori

ls -la; alert

se non è presente nient'altro.puoi lanciare un xterm ed echeggiarlo, in questo modo:

 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à è davvero lo strumento esatto che penso tu stia cercando.

O

zenity --help

Kdialog e dialog sono entrambi buoni, ma consiglierei Zenity.Veloce, facile e molto più bello xmessage o finestra di dialogo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top