Zenity – Exibindo caixas de diálogo com scripts do Shell no Linux
Zenity – Exibindo caixas de diálogo com scripts do Shell
O 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:
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
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";
É 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/
Muito bom Fábio, estou desenvolvendo um shell script de pós instalação do ubuntu 18.04, mas roda em linha de comando ainda vou implementar interface gráfica, essas informações me ajudaram de +
SE TIVER INTERESSE EM VER O PROGRAMA:
https://github.com/Brunopvh/apps-bionic
## Somente para ubuntu 18.04 LTS.
Muito obrigado, me ajudou bastante!
Muito Bom!
Obrigado Isaac!