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:
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”
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”
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]
#########################################
# usuarios.sh - Trabalho de Adm Sistemas Linux #
# Thu Mar 29 12:12:51 2007 #
# Copyright 2007 User Júlio Cesar da Silva #
# Email julioconsultoria@gmail.com #
#########################################
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# Este é um script para verificar o usuário logado, caso não seja o root,
# ele poderá torna-se root se este for o seu desejo e ele tiver a senha.
# Foi usado a janela de Dialog zenity cuja sintaxe básica é zenity [opção]
# e cada opção gera uma janela diferente.
# Obs: Este script necessita do X esteja rodando, assim como o pacote
# zenity
# instalado. O arquivo também deve possuir a permissão de execução. considere o - (um traço)
#como se fosse - - (dois traços)
#!/bin/sh
# Este primeiro if verifica se o usuário é ou não root. o != indica a
# expressão diferente de. Caso ele não seja o root, executamos as linhas
# logo abaixo do if [$USER != 'root' ]. Ao contrario iremos para o
# ultimo else do script. Agradecimentos o Gabriel Falcão pela lógica.
if [ $USER != 'root' ]; then
# A opção warning gera uma caixa com um aviso chamando a atenção do usuário
zenity –warning –title=”Root or not ROOT” –text=”Salve, voce não é o root, seu usuario é o $USER.”
YESNO=’CondiçãoFalsaParaGerarEscolha’
# A opção error gera uma caixa de mensagem de erro,
# enquanto o question é um dialog de pergunta (questionamento)
if [ $YESNO != 'CondiçãoFalsaParaGerarEscolha' ]; then
zenity –error –title=”NO ROOT” –text=”Opção Invalida.”
else
zenity –question –title=”Root or not ROOT” –text=”Caso você deseja torna-se root clique em ok, se não, clique em cancelar”
fi
# Clicando em OK o usuário automaticamente gera uma saida 0 (TRUE)
# e se for um cancel ele irá gerar um 1 (FALSE). Utilizaremos estas saidas
# para retornar ao usuário o terminal como root ou parar o processo.
if [ $? != 1 ]; then
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”
sleep 1
gksu gnome-terminal&
else
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.”
fi
# Este ultimo else aparecerá somente se for o root tiver executado o script.
else
zenity –info –title=”Usuário ROOT” –text=”Saudações administrador da maquina $HOSTNAME”
zenity –info –title=”Usuário ROOT” –text=”A tua vontade é a responsabilidade do Sistema!”
fi
[/code]
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



abril 3rd, 2007 at 8:04 am
Bacana Júlio. Mas tenho de confessar: embora use Linux há um tempinho, sou arisco a shell script!
abril 5th, 2007 at 11:32 am
Alguma dica para o zenity exibir botoes de minimizar/restaurar ?
maio 8th, 2007 at 4:20 am
Alguem sabe se é possivel fazer uma quebra de linha no zenity?