Pergunta

Estou escrevendo alguns pequenos scripts bash no Ubuntu Linux.Quero poder executá-los a partir da GUI sem precisar de uma janela de terminal para inserir qualquer entrada ou visualizar qualquer saída.

Até agora, a única entrada necessária é uma senha para o sudo - e o gksudo lida com isso perfeitamente.Mas ainda não encontrei uma maneira fácil de mostrar uma caixa de mensagem.Existe algum tipo de comando 'gkmessage' disponível?Eu preferiria algo presente em uma instalação padrão do Ubuntu, mas não me importo de instalar um novo pacote, se necessário.

Foi útil?

Solução

Eu acredito Zenidade fará o que você quiser.Ele foi projetado especificamente para exibir caixas de diálogo GTK na linha de comando e está disponível como um Pacote Ubuntu.

Outras dicas

Se você estiver usando Ubuntu muitas distros o notify-send O comando lançará uma daquelas notificações perecíveis no canto superior direito.Igual a:

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

Lindo!

Todo mundo menciona zenity, parece haver muitos outros.Uma lista confusa, mas interessante, está em http://alternativeto.net/software/zenity/

Primeiro, um exemplo de zenity apresentando marcação de formatação de texto, título de janela e rótulo de botão.

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"

mensagem gx

gxmessage "my text"

xmensagem

xmessage é muito antigo, portanto é estável e provavelmente está disponível em todas as distribuições que usam X (já que é distribuído com X).É personalizável através de recursos X, para quem já usa Linux ou Unix há tempo suficiente para saber o que significa (.Xdefaults, qualquer um ?).

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

kdialog

(não testado)

Em um PPA

YAD:Zenity On Steroids [Exibir caixas de diálogo gráficas de scripts de shell] ~ Web Upd8:Blog Ubuntu/Linux.Não parece dimensionar automaticamente as caixas de diálogo.

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

Um exemplo maior

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"

Outros que não estão nos repositórios padrão do Ubuntu

  • shellgui
  • xdialog
  • gtkdialog

Fora do tópico (para terminal)

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

Sinta-se à vontade para editar.

O zenidade aplicativo parece ser o que você está procurando.

Para obter informações de zenidade, você pode especificar uma variável e obter a saída de zenidade --entrada salvo nele.Parece algo assim:

my_variable=$(zenity --entry)

Se você olhar o valor em minha_variável agora, será o que foi digitado na caixa de diálogo de entrada pop-up do zenity.

Se você quiser fornecer algum tipo de aviso sobre o que o usuário (ou você) deve inserir na caixa de diálogo, adicione o --texto alterne com o rótulo que você deseja.Parece algo assim:

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

Zenity tem muitas outras opções interessantes para tarefas específicas, então você também pode querer conferir isso com zenity --ajuda.Um exemplo é o --calendário opção que permite selecionar uma data em um calendário gráfico.

my_date=$(zenity --calendar)

O que fornece uma data bem formatada com base no que o usuário clicou:

echo ${my_date}

dá:

08/05/2009

Também existem opções para seletores de controle deslizante, erros, listas e assim por diante.

Espero que isto ajude.

Eu encontrei o xmensagem comando, o que é bom o suficiente.

Aqui está um pequeno script Tcl que fará o que você quiser.O interpretador Wish deve ser instalado por padrão no Ubuntu.

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

Chame assim:

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

alert e notify-send parecem ser a mesma coisa.eu uso notify-send para mensagens que não são de entrada, pois não rouba o foco e não consigo encontrar uma maneira de interromper o zenity, etc.de fazer isso.

por exemplo.

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

Há também dialog e a versão do KDE kdialog. dialog é usado pelo slackware, então pode não estar disponível imediatamente em outras distribuições.

Que tal o Ubuntu alerta.Ele pode ser usado após qualquer operação para alertá-la de que foi concluída e até mesmo mostrar o ícone de uma cruz vermelha se a operação foi concluída com erros

ls -la; alert

se nada mais estiver presente.você pode iniciar um xterm e fazer eco nele, assim:

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

Zenidade é realmente a ferramenta exata que acho que você está procurando.

ou

zenity --help

Kdialog e dialog são bons, mas eu recomendo o Zenity.Rápido, fácil e com muito melhor aparência do xmessage ou diálogo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top