Uma Introdução ao Zenity

Uma introdução ao Zenity

Resolvendo um exercício de administração de sistemas linux, para o curso de Gestão da TI do UNI-BH, estive diante da criação de um script utilizando caixas de dialogo gráficas, ou janelas como bem conhecemos.

Até o momento eu havia havia conhecido o kdialog que é um ferramenta interessante mas portada para o KDE, e como eu gosto muito de utilizar ferramentas compatíveis com o gnome, acabei chegando até o zenity que faz bem o seu trabalho.

O zenity é uma opção para quem trabalha com shell script e deseja oferecer uma interação gráfica entre o usuário e os comandos do script. Esta interação gráfica acontece por meio dos dialog e portanto precisamos o servidor X esteja rodando. O zenity não é o único xmessage que existe, temos outros mais simples como o gdialog.

A melhor forma de entender a sintaxe do zenity é verificar a funcionalidade das suas opções em tempo real, tal como podemos fazer no python. Basicamente construirmos as janelas da seguinte forma: [Atenção, pelo visto o worpress altera o escrito, por isto, onde você visualizar - na realidade o correto é usar dois - (no caso do codigo do script) e estes - - devem ser juntos e não separados (como aparecem ao longo do texto).]

zenity - -opções - -opções

Vamos então aos exemplos, para tal, no ubuntu, executamos o terminal clicando em Aplicações -> Acessórios -> Terminal. Em seguida digitamos:

zenity - -info - -text=”Olá Mundo”

Teremos um resultado semelhante a imagem abaixo:

z01.png

Detalhando o comando:

zenity = chama o programa responsável pela janela
- -info é o tipo de janela, que neste caso é uma informação
- -text=”textoqueuquizer” especifica o texto da janela

Eu poderia fazer a opção --text usando apenas --test OI, mas se eu quiser usar variáveis de ambiente e frases maiores, vou ter que usar o " ".

Podemos melhorar as nossas opções com:

zenity - -info - -text=”Olá mundo 2” - -title=”Exemplo 2”

z02.png

Agora a nossa janela tem um titulo, pois utilizamos a opção - -title

Você também exibir os outros tipos de janela, substituindo o - -info por:

zenity - -warning ->exibi uma janela de aviso com as opções de ok ou cancelar
zenity - -question -> exibe uma janela parecida, mas desta vez com o símbolo de interrogação ?

Existem vários tipos de janelas que podem ser criadas com o zenity, bem como podemos gerar janelas com elementos pré-definidos tais como:

zenity - -calendar - -title=”O meu calendário”

z03.png

No exemplo anterior escolhemos o título da janela “O meu calendário” e a opção --calendar exibiu o calendário atual do computador. Como você pode notar o zenity é como um quebra cabeça onde encaixamos as opções que desejamos exibir, sempre pensando no formato final de nossos avisos.

Nos links no final deste post e no man zenity podemos encontrar as outras opções do comando detalhadas. Como o meu trabalho foi feito numa interação entre shell script e o zenity vou colocar aqui o código do programa para que vocês tenham um exemplo SIMPLES das possibilidades:

CODE:
  1. #########################################
  2. #           usuarios.sh  - Trabalho de Adm Sistemas Linux  #
  3. #  Thu Mar 29 12:12:51 2007             #
  4. #  Copyright  2007  User Júlio Cesar da Silva        #
  5. #  Email    julioconsultoria@gmail.com           #
  6. #########################################
  7. # This program is free software; you can redistribute it and/or modify
  8. # it under the terms of the GNU General Public License as published by
  9. # the Free Software Foundation; either version 2 of the License, or
  10. # (at your option) any later version.
  11. #
  12. # This program is distributed in the hope that it will be useful,
  13. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. # GNU General Public License for more details.
  16. #
  17. # You should have received a copy of the GNU General Public License
  18. # along with this program; if not, write to the Free Software
  19. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  20. #
  21. # Este é um script para verificar o usuário logado, caso não seja o root,
  22. # ele poderá torna-se root se este for o seu desejo e ele tiver a senha.
  23. # Foi usado a janela de Dialog zenity cuja sintaxe básica é zenity [opção]
  24. # e cada opção gera uma janela diferente.
  25. # Obs: Este script necessita do X esteja rodando, assim como o pacote
  26. # zenity
  27. # instalado. O arquivo também deve possuir a permissão de execução. considere o - (um traço)
  28. #como se fosse - - (dois traços)
  29.  
  30. #!/bin/sh
  31.  
  32. # Este primeiro if verifica se o usuário é ou não root. o != indica a
  33. # expressão diferente de. Caso ele não seja o root, executamos as linhas
  34. # logo abaixo do if [$USER != 'root' ]. Ao contrario iremos para o
  35. # ultimo else do script. Agradecimentos o Gabriel Falcão pela lógica.
  36.  
  37. if [ $USER != 'root' ]; then
  38.  
  39. # A opção warning gera uma caixa com um aviso chamando a atenção do usuário
  40.  
  41. zenity --warning --title="Root or not ROOT" --text="Salve, voce não é o root, seu usuario é o $USER."
  42. YESNO='CondiçãoFalsaParaGerarEscolha'
  43.  
  44. # A opção error gera uma caixa de mensagem de erro,
  45. # enquanto o question é um dialog de pergunta (questionamento)
  46.  
  47. if [ $YESNO != 'CondiçãoFalsaParaGerarEscolha' ]; then
  48. zenity --error --title="NO ROOT" --text="Opção Invalida."
  49. else
  50. zenity --question --title="Root or not ROOT" --text="Caso você deseja torna-se root clique em ok, se não, clique em cancelar"
  51. fi
  52.  
  53. # Clicando em OK o usuário automaticamente gera uma saida 0 (TRUE)
  54. # e se for um cancel ele irá gerar um 1 (FALSE). Utilizaremos estas saidas
  55. # para retornar ao usuário o terminal como root ou parar o processo.
  56.  
  57. if [ $? != 1 ]; then
  58. zenity --warning --title="Voce pode agir como Root" --text="Clique no ok e o terminal como root serah exibido, na primeira vez que estiver executando este script a senha serah requirida"
  59. sleep 1
  60. gksu gnome-terminal&
  61.  
  62. else
  63. zenity --warning --title="Você nao é o root" --text="Fez a escolha certa Padawan $USER, ser o root é uma grande responsabilidade, tente novamente quando terminar o seu treinamento."
  64.  
  65. fi
  66.  
  67. # Este ultimo else aparecerá somente se for o root tiver executado o script.
  68.  
  69. else
  70. zenity --info --title="Usuário ROOT" --text="Saudações administrador da maquina $HOSTNAME"
  71. zenity --info --title="Usuário ROOT" --text="A tua vontade é a responsabilidade do Sistema!"
  72.  
  73. fi

Obs: Este script foi testado no Ubuntu 6.10. Alguns erros de acentoe fonte podem aparecer!

Links:

http://www.dicas-l.com.br/dicas-l/20070219.php

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=2627&pagina=2

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=5525

http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=467

http://cobracriada.clickblog.com.br/2006/10/22/alguns-comando-do-zenity/

https://colibre.com.br/bin/view/Aurium/ScriptsComDialogosZenity

http://www.zago.eti.br/script/A-menu-scripts.html

http://www.zago.eti.br/script/dialog.html

http://www.agatetepe.com.br/tag/gtk

http://br.geocities.com/lcristante/pt_glade/gtk.html

3 Responses to “Uma Introdução ao Zenity”

  1. Walter Cruz Says:

    Bacana Júlio. Mas tenho de confessar: embora use Linux há um tempinho, sou arisco a shell script! :)

  2. hamacker Says:

    Alguma dica para o zenity exibir botoes de minimizar/restaurar ?

  3. Bellthasar Says:

    Alguem sabe se é possivel fazer uma quebra de linha no zenity?

Leave a Reply