Zenity – Exibindo caixas de diálogo com scripts do Shell no Linux

Zenity - Exibindo caixas de diálogo com scripts do Shell

Zenity é um software que permite criar diversos tipos de caixas de diálogo simples para interação com os usuários em um ambiente Linux, que podem ser utilizadas em scripts do shell. Por exemplo, podemos criar um diálogo para obter informações do usuário, como uma data em um calendário ou um valor numérico em uma caixa de texto, ou ainda criar diálogos para exibir informações, como uma barra de progresso para mostrar o status de uma operação, ou caixas de aviso e de erro. O Zenity utiliza o GTK, conjunto de bibliotecas utilizado para a construção de interfaces gráficas. Por padrão, ele vem instalado na grande maioria das distribuições Linux, de modo que seja provável que o programa já esteja presente em sua distro. Verifique a presença do programa emitindo o comando  seguir no terminal:
zenity --version
Se o programa estiver instalado, será exibida a versão do programa. A versão mais recente é a 3.22.0 (na data de elaboração deste tutorial). Caso contrário, instale-o usando os seguintes comandos: Sistemas Debian / Ubuntu:
sudo apt-get install zenity
Sistemas Red Hat / CentOS:
yum install zenity

Sintaxe

A sintaxe básica para uso do programa é a seguinte: zenity [opções-comuns] [tipo-de-diálogo] [opções-específicas-do-diálogo]

Tipos de Caixas de Diálogo

O Zenity permite criar os seguintes tipos de caixas de diálogo:
  • Calendar
  • File selection
  • Forms
  • List
  • Notification icon
  • Message
    • Error
    • Information
    • Question
    • Warning
  • Password entry
  • Progress
  • Text entry
  • Text information
  • Scale
  • Color selection

Códigos de saída

Os seguintes códigos de saída são retornados ao executar o programa:
Código de Saída Descrição
0 O usuário pressionou os botões OK ou Fechar
1 O usuário pressionou Cancelar ou usou as funções da janela para fechar o diálogo
-1 Ocorreu um erro inesperado
5 A caixa de diálogo foi fechada porque ocorreu timeout (tempo esgotado)

Opções Comuns

No Zenity, todas as caixas de diálogo suportam as seguintes opções gerais: --title=title Especifica o título da caixa de diálogo. --window-icon=icon_path Especifica o ícone que é exibido na janela da caixa de diálogo. Existem 4 tipos de ícones disponíveis      que podem ser selecionados usando-se as seguintes palavras-chave: "info", "warning", "question" e "error". --width=width Especifica a largura caixa de diálogo. --height=height Especifica a altura caixa de diálogo. --timeout=timeout Especifica o timeout em segundos após o qual a caixa de diálogo é fechada.

Outras opções

--about Mostra o diálogo Sobre o Zenity, o qual contém informações sobre a versão do Zenity, copyright e informações sobre os desenvolvedores do software. --version Mostra o número de versão do programa.

Caixa de Diálogo File Selection (Seleção de Arquivos)

Com esta caixa o usuário pode selecionar um arquivo a partir de um diretório, e o arquivo é retornado na saída padrão. O modo padrão de operação do diálogo de seleção de arquivos é o modo open (abrir). Opções principais: --filename=NOME_ARQUIVO Especifica o arquivo ou diretório a ser selecionado na caixa de seleção quando a caixa é exibida pela primeira vez --multiple Permite a seleção de múltiplos nomes de arquivo na caixa de diálogo de seleção --directory Permite apenas a seleção de diretórios na caixa de seleçãoo --save Permite configurar o diálogo de seleção de arquivos no modo Save (salvar) --separator=SEPARADOR Especificar a string que será utilizada para dividir a lista de nomes de arquivos retornada. --file-filter=FILTRO Permite usar um filtro para especificar o tipo de arquivos que deverá se exibido no diálogo

Exemplos

Vejamos alguns exemplos de uso do utilitário em scripts do shell: Exemplo 01 - Caixa de diálogo de erro, contendo um botão OK (digitar o comando diretamente no terminal):
zenity --title "Problema detectado"  --error --text="Arquivo requisitado inválido."
Exemplo 02 - Caixa de diálogo de texto. Crie um arquivo de texto e entre com os comandos a seguir. Logo após, salve o arquivo com o nome de teste-zenity.sh e dê permissão de execução ao script com o comando chmod 755 teste-zenity.sh:
#!/bin/bash
nome=$(zenity --title="Nome?" --text "Qual é o seu nome?" --entry)
zenity --info --title="Boas-vindas" --text=" $nome" --width="100" height="50"
sobrenome=$(zenity --title="Sobrenome" --text "$primeiro Qual é o seu sobrenome?" --entry)
zenity --info --title="Bóson Treinamentos" --text="Bons estudos, $nome $sobrenome"
Para rodar o script, execute o comando a seguir:
./teste-zenity.sh
Veja duas telas deste script em execução: Caixa de diálogo com Zenity no Linux   Caixa de diálogo de texto com Zenity no Linux Exemplo 03: Exibindo um diálogo de calendário, capturando a data escolhida pelo usuário em uma variável, e exibindo a data no terminal:
#!/bin/bash
# Capturando a data escolhida pelo usuário a partir de um calendário

data=$(zenity --title="Escolha a data" --calendar)
if (( data ))
then
  echo "A data escolhida foi o dia $data"
else
  echo "Usuário não escolheu nenhuma data"
fi
Caixa de diálogo de calendário com Zenity no Linux Exemplo 04: Usando uma caixa de diálogo de seleção de arquivos para selecionar um arquivo de texto:
#!/bin/bash
# Selecionando um arquivo de texto a partir de uma caixa de diálogo

ARQUIVO=$(zenity --file-selection --title="Selecione um arquivo")

case $? in
    0)
        echo "$ARQUIVO selecionado.";;
    1)
        echo "Nenhum arquivo selecionado.";;
    -1)
        echo "Ocorreu um erro desconhecido.";;
esac
Exemplo 05: Abrindo um arquivo de texto com extensão .sh e exibindo seu conteúdo em uma caixa de diálogo:
#!/bin/bash
# Selecionando um arquivo de texto a partir de uma caixa de diálogo

ARQUIVO=$(zenity --file-selection --title="Selecione um arquivo" --file-filter="*.sh")

# Usando o diálogo Text Information para exibir o conteúdo do arquivo selecionado:
if [ $ARQUIVO ]
then
    zenity --text-info --title="Arquivo" --filename=$ARQUIVO --width=450 --height=500
fi
Exemplo 06: Criando um formulário para captura de dados para um cadastro de usuário:
#/bin/bash
# Criando um formulário com o Zenity

DADOS=$(zenity     --forms --title="Cadastro" --text="Preencha o formulário a seguir com seus dados:" \
    --separator="," \
    --add-entry="Nome" \
    --add-entry="Sobrenome" \
    --add-calendar="Data de Nascimento" \
    --add-entry="E-mail")

echo $DADOS | cut -d, -f1
echo $DADOS | cut -d, -f2
echo $DADOS | cut -d, -f3
echo $DADOS | cut -d, -f4
Exemplo 07: Selecionando itens em uma lista de itens:
#/bin/bash
# Usando uma lista com botões de rádio com o Zenity

ITEM_SELECIONADO=$(zenity  --list  --text "Selecione seu sistema favorito" \
    --radiolist \
    --column "Marcar" \
    --column "Sistemas" \
    FALSE BSD TRUE Linux FALSE "OS X" FALSE Windows);
echo "Seu sistema operacional favorito é o $ITEM_SELECIONADO";
Lista de rádio com Zenity em Shell Scripting É isso aí! Vimos alguns exemplos do uso do Zenity para criar caixas de diálogo no Linux. Se você quiser se aprofundar no assunto, recomendo uma consulta à página oficial do manual do Zenity: https://help.gnome.org/users/zenity/3.22/  
Sobre Fábio dos Reis (1096 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 25 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Unix, Linux e Open Source em geral, adora Eletrônica e Astronomia, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.
Contato: Website

Escreva um comentário

Seu e-mail não será divulgado


*