Pregunta

Estoy escribiendo algunos pequeños scripts de bash en Ubuntu Linux.Quiero poder ejecutarlos desde la GUI sin necesidad de una ventana de terminal para ingresar ninguna entrada o ver ninguna salida.

Hasta ahora, la única entrada requerida es una contraseña para sudo, y gksudo la maneja bien.Pero todavía no he encontrado una manera fácil de mostrar un cuadro de mensaje.¿Hay algún tipo de comando 'gkmessage' disponible?Preferiría algo presente en una instalación predeterminada de Ubuntu, pero no me importa instalar un paquete nuevo si es necesario.

¿Fue útil?

Solución

Yo creo Zenidad hará lo que quieras.Está diseñado específicamente para mostrar cuadros de diálogo GTK desde la línea de comandos y está disponible como una paquete ubuntu.

Otros consejos

Si estas usando ubuntu muchas distribuciones la notify-send El comando arrojará una de esas bonitas notificaciones perecederas en la esquina superior derecha.Al igual que:

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

¡Hermoso!

Todo el mundo menciona el zenity, parece que hay muchos otros.Una lista confusa pero interesante está en http://alternativeto.net/software/zenity/

Primero, un ejemplo de zenity con marcas de formato de texto, título de ventana y etiqueta de botón.

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"

mensajegx

gxmessage "my text"

xmensaje

xmessage es muy antiguo por lo que es estable y probablemente esté disponible en todas las distribuciones que usan X (ya que se distribuye con X).Es personalizable a través de recursos X, para aquellos que han estado usando Linux o Unix durante el tiempo suficiente para saber lo que significa (.Xdefaults, alguien ?).

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

kdiálogo

(no probado)

En un PPA

YAD:Zenity On Steroids [Mostrar cuadros de diálogo gráficos desde Shell Scripts] ~ Web Upd8:Blog de Ubuntu/Linux.No parece ajustar automáticamente el tamaño de los cuadros de diálogo.

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

Un ejemplo más 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"

Otros que no están en los repositorios estándar de Ubuntu

  • shellgui
  • xdiálogo
  • diálogogtk

Fuera de tema (para terminal)

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

Siéntete libre de editar.

El zenidad La aplicación parece ser lo que estás buscando.

Para recibir información de zenidad, puede especificar una variable y tener la salida de zenity --entrada guardado en él.Se parece a esto:

my_variable=$(zenity --entry)

Si miras el valor en mi_variable ahora, será lo que se haya escrito en el cuadro de diálogo de entrada emergente de zenity.

Si desea dar algún tipo de mensaje sobre lo que el usuario (o usted) debe ingresar en el cuadro de diálogo, agregue el --texto cambie con la etiqueta que desee.Se parece a esto:

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

Zenity tiene muchas otras opciones interesantes que son para tareas específicas, por lo que es posible que desees consultarlas también con zenity --ayuda.Un ejemplo es el --calendario opción que te permite seleccionar una fecha de un calendario gráfico.

my_date=$(zenity --calendar)

Lo que proporciona una fecha bien formateada según en qué hizo clic el usuario:

echo ${my_date}

da:

08/05/2009

También hay opciones para selectores deslizantes, errores, listas, etc.

Espero que esto ayude.

Encontré el xmensaje comando, lo cual es bastante bueno.

Aquí tienes un pequeño script Tcl que hará lo que quieras.El intérprete de Wish debería estar instalado de forma predeterminada en Ubuntu.

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

Llámalo así:

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

alert y notify-send parece ser lo mismo.yo suelo notify-send para mensajes que no son de entrada, ya que no roba el foco y no puedo encontrar una manera de detener zenity, etc.de hacer esto.

p.ej.

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

También hay dialog y la versión de KDE kdialog. dialog es utilizado por slackware, por lo que es posible que no esté disponible inmediatamente en otras distribuciones.

¿Qué tal el de Ubuntu? alerta.Se puede utilizar después de cualquier operación para alertar de que ha finalizado e incluso mostrar el icono de una cruz roja si la operación finalizó con errores.

ls -la; alert

si no hay nada más presente.puedes iniciar un xterm y hacer eco en él, así:

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

Zenidad Es realmente la herramienta exacta que creo que estás buscando.

o

zenity --help

Kdialog y dialog son buenos, pero recomendaría Zenity.Rápido, fácil y mucho mejor aspecto del xmessage o diálogo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top