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]

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

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