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:
-
#########################################
-
# 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
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?